[MLton-commit] r4671

Matthew Fluet MLton@mlton.org
Mon, 3 Jul 2006 14:19:06 -0700


Merge trunk revisions 4361:4670 into cmm branch
----------------------------------------------------------------------

U   mlton/branches/on-20050420-cmm-branch/Makefile
U   mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/array.sig
U   mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/array2.sml
U   mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/mono-array.sig
U   mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/mono-vector.sig
U   mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/sequence.fun
U   mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/sequence.sig
U   mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/vector.sig
U   mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/vector.sml
U   mlton/branches/on-20050420-cmm-branch/basis-library/integer/int.sml
U   mlton/branches/on-20050420-cmm-branch/basis-library/integer/pack-word32.sml
U   mlton/branches/on-20050420-cmm-branch/basis-library/libs/basis-extra/basis-extra.mlb
A   mlton/branches/on-20050420-cmm-branch/basis-library/misc/one.sml
U   mlton/branches/on-20050420-cmm-branch/basis-library/misc/primitive.sml
U   mlton/branches/on-20050420-cmm-branch/basis-library/mlton/array.sig
U   mlton/branches/on-20050420-cmm-branch/basis-library/mlton/cont.sml
U   mlton/branches/on-20050420-cmm-branch/basis-library/mlton/platform.sig
U   mlton/branches/on-20050420-cmm-branch/basis-library/mlton/platform.sml
U   mlton/branches/on-20050420-cmm-branch/basis-library/mlton/pointer.sig
U   mlton/branches/on-20050420-cmm-branch/basis-library/mlton/vector.sig
U   mlton/branches/on-20050420-cmm-branch/basis-library/real/pack-real.sml
U   mlton/branches/on-20050420-cmm-branch/basis-library/real/real.fun
U   mlton/branches/on-20050420-cmm-branch/basis-library/real/real.sig
U   mlton/branches/on-20050420-cmm-branch/basis-library/sml-nj/sml-nj.sml
U   mlton/branches/on-20050420-cmm-branch/bin/mlton-script
U   mlton/branches/on-20050420-cmm-branch/bin/platform
U   mlton/branches/on-20050420-cmm-branch/bin/upgrade-basis
U   mlton/branches/on-20050420-cmm-branch/bytecode/Makefile
U   mlton/branches/on-20050420-cmm-branch/doc/changelog
U   mlton/branches/on-20050420-cmm-branch/doc/license/README
U   mlton/branches/on-20050420-cmm-branch/lib/ckit-lib/Makefile
U   mlton/branches/on-20050420-cmm-branch/lib/ckit-lib/ckit.patch
U   mlton/branches/on-20050420-cmm-branch/lib/ckit-lib/ckit.tgz
U   mlton/branches/on-20050420-cmm-branch/lib/cml/core-cml/event.sml
A   mlton/branches/on-20050420-cmm-branch/lib/mlrisc-lib/
A   mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/inet-sock.sml
A   mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/socket.sml
U   mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/sources.cm
U   mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/sources.mlb
U   mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/string.sig
U   mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/string.sml
U   mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/vector.fun
U   mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/vector.sig
U   mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/word.sml
A   mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/word16.sml
A   mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/word8-array-slice.sml
U   mlton/branches/on-20050420-cmm-branch/lib/mlton/pervasive/pervasive.sml
U   mlton/branches/on-20050420-cmm-branch/lib/mlton/sources.cm
U   mlton/branches/on-20050420-cmm-branch/lib/mlton/sources.mlb
U   mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/array.sig
U   mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/bin-io.sig
U   mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/mlton.sml
U   mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/platform.sig
U   mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/pointer.sig
U   mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/proc-env.sig
U   mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/sources.cm
U   mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/text-io.sig
U   mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/vector.sig
U   mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs-in-smlnj/array.sml
U   mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs-in-smlnj/open-int32.sml
A   mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs-in-smlnj/socket.sml
U   mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs-in-smlnj/sources.cm
U   mlton/branches/on-20050420-cmm-branch/lib/smlnj-lib/Makefile
U   mlton/branches/on-20050420-cmm-branch/lib/smlnj-lib/smlnj-lib.patch
U   mlton/branches/on-20050420-cmm-branch/lib/smlnj-lib/smlnj-lib.tgz
U   mlton/branches/on-20050420-cmm-branch/mlton/atoms/prim.fun
U   mlton/branches/on-20050420-cmm-branch/mlton/atoms/prim.sig
U   mlton/branches/on-20050420-cmm-branch/mlton/codegen/x86-codegen/x86-codegen.fun
U   mlton/branches/on-20050420-cmm-branch/mlton/codegen/x86-codegen/x86-generate-transfers.fun
U   mlton/branches/on-20050420-cmm-branch/mlton/main/main.fun
U   mlton/branches/on-20050420-cmm-branch/mlton/ssa/deep-flatten.fun
U   mlton/branches/on-20050420-cmm-branch/mlton/ssa/redundant-tests.fun
U   mlton/branches/on-20050420-cmm-branch/mlton/ssa/ref-flatten.fun
U   mlton/branches/on-20050420-cmm-branch/package/debian/changelog
A   mlton/branches/on-20050420-cmm-branch/regression/mlton.share.hppa-hpux.ok
A   mlton/branches/on-20050420-cmm-branch/regression/mlton.share.sparc-solaris.ok
A   mlton/branches/on-20050420-cmm-branch/regression/pack-real.2.ok
A   mlton/branches/on-20050420-cmm-branch/regression/pack-real.2.sml
U   mlton/branches/on-20050420-cmm-branch/runtime/Makefile
U   mlton/branches/on-20050420-cmm-branch/runtime/Posix/ProcEnv/Uname.c
U   mlton/branches/on-20050420-cmm-branch/runtime/basis/Int/Word.c
U   mlton/branches/on-20050420-cmm-branch/runtime/basis/Net/Socket/Socket.c
U   mlton/branches/on-20050420-cmm-branch/runtime/gc.c
A   mlton/branches/on-20050420-cmm-branch/runtime/platform/aix.c
A   mlton/branches/on-20050420-cmm-branch/runtime/platform/aix.h
U   mlton/branches/on-20050420-cmm-branch/runtime/platform/cygwin.c
U   mlton/branches/on-20050420-cmm-branch/runtime/platform/cygwin.h
U   mlton/branches/on-20050420-cmm-branch/runtime/platform/darwin.h
U   mlton/branches/on-20050420-cmm-branch/runtime/platform/freebsd.h
A   mlton/branches/on-20050420-cmm-branch/runtime/platform/hpux.c
A   mlton/branches/on-20050420-cmm-branch/runtime/platform/hpux.h
U   mlton/branches/on-20050420-cmm-branch/runtime/platform/linux.h
U   mlton/branches/on-20050420-cmm-branch/runtime/platform/mingw.h
U   mlton/branches/on-20050420-cmm-branch/runtime/platform/netbsd.h
U   mlton/branches/on-20050420-cmm-branch/runtime/platform/openbsd.h
A   mlton/branches/on-20050420-cmm-branch/runtime/platform/recv.nonblock.c
A   mlton/branches/on-20050420-cmm-branch/runtime/platform/setenv.putenv.c
U   mlton/branches/on-20050420-cmm-branch/runtime/platform/solaris.c
U   mlton/branches/on-20050420-cmm-branch/runtime/platform/solaris.h
U   mlton/branches/on-20050420-cmm-branch/runtime/platform.h
U   mlton/branches/on-20050420-cmm-branch/runtime/types.h
U   mlton/branches/on-20050420-cmm-branch/util/cm2mlb/cm2mlb-map
U   mlton/branches/on-20050420-cmm-branch/util/cm2mlb/cm2mlb.sml

----------------------------------------------------------------------

Modified: mlton/branches/on-20050420-cmm-branch/Makefile
===================================================================
--- mlton/branches/on-20050420-cmm-branch/Makefile	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/Makefile	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,4 +1,4 @@
-## Copyright (C) 1999-2005 Henry Cejtin, Matthew Fluet, Suresh
+## Copyright (C) 1999-2006 Henry Cejtin, Matthew Fluet, Suresh
  #    Jagannathan, and Stephen Weeks.
  # Copyright (C) 1997-2000 NEC Research Institute.
  #
@@ -169,17 +169,19 @@
         # do not change "make" to "$(MAKE)" in the following line
 	cd $(BSDSRC)/package/freebsd && MAINTAINER_MODE=yes make build-package  
 
-LIBRARIES = ckit-lib cml mlnlffi-lib mlyacc-lib smlnj-lib
+LIBRARIES = ckit-lib cml mlnlffi-lib mlrisc-lib mlyacc-lib smlnj-lib
 
 .PHONY: libraries-no-check
 libraries-no-check:
 	mkdir -p $(LIB)/sml
 	cd $(LIB)/sml && rm -rf $(LIBRARIES)
 	$(MAKE) -C $(SRC)/lib/ckit-lib
+	$(MAKE) -C $(SRC)/lib/mlrisc-lib
 	$(MAKE) -C $(SRC)/lib/smlnj-lib
 	$(CP) $(SRC)/lib/cml/. $(LIB)/sml/cml
 	$(CP) $(SRC)/lib/ckit-lib/ckit/. $(LIB)/sml/ckit-lib
 	$(CP) $(SRC)/lib/mlnlffi/. $(LIB)/sml/mlnlffi-lib
+	$(CP) $(SRC)/lib/mlrisc-lib/MLRISC/. $(LIB)/sml/mlrisc-lib
 	$(CP) $(SRC)/lib/mlyacc/. $(LIB)/sml/mlyacc-lib
 	$(CP) $(SRC)/lib/smlnj-lib/smlnj-lib/. $(LIB)/sml/smlnj-lib
 	find $(LIB)/sml -type d -name .svn | xargs rm -rf
@@ -409,7 +411,7 @@
 		cd $(TMAN) && $(GZIP) $(MAN_PAGES);			\
 	fi
 	case "$(TARGET_OS)" in						\
-	cygwin|darwin|solaris)						\
+	aix|cygwin|darwin|solaris)					\
 	;;								\
 	*)								\
 		for f in $(TLIB)/$(AOUT)$(EXE) $(TBIN)/$(LEX)$(EXE)	\

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/array.sig
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/array.sig	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/array.sig	2006-07-03 21:18:36 UTC (rev 4671)
@@ -40,17 +40,11 @@
 
       structure ArraySlice: ARRAY_SLICE_EXTRA 
 
-      val rawArray: int -> 'a array
-      val unsafeSub: 'a array * int -> 'a
-      val unsafeUpdate: 'a array * int * 'a -> unit
-
       val concat: 'a array list -> 'a array
       val duplicate: 'a array -> 'a array
+      val rawArray: int -> 'a array
       val toList: 'a array -> 'a list
-      val unfoldi: int * 'a * (int * 'a -> 'b * 'a) -> 'b array
-
-      (* Deprecated *)
-      val checkSlice: 'a array * int * int option -> int
-      (* Deprecated *)
-      val checkSliceMax: int * int option * int -> int
+      val unfoldi: int * 'b * (int * 'b -> 'a * 'b) -> 'a array * 'b
+      val unsafeSub: 'a array * int -> 'a
+      val unsafeUpdate: 'a array * int * 'a -> unit
    end

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/array2.sml
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/array2.sml	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/array2.sml	2006-07-03 21:18:36 UTC (rev 4671)
@@ -28,10 +28,28 @@
                         nrows: int option,
                         ncols: int option}
 
+      fun checkSliceMax (start: int, num: int option, max: int): int =
+         case num of
+            NONE =>
+               if Primitive.safe andalso (start < 0 orelse start > max) then
+                  raise Subscript
+               else
+                  max
+          | SOME num =>
+               if Primitive.safe
+                  andalso (start < 0
+                           orelse num < 0
+                           orelse start > max -? num) then
+                  raise Subscript
+               else
+                  start +? num
+
       fun checkRegion {base, row, col, nrows, ncols} =
-         let val (rows, cols) = dimensions base
-         in {stopRow = Array.checkSliceMax (row, nrows, rows),
-             stopCol = Array.checkSliceMax (col, ncols, cols)}
+         let
+            val (rows, cols) = dimensions base
+         in
+            {stopRow = checkSliceMax (row, nrows, rows),
+             stopCol = checkSliceMax (col, ncols, cols)}
          end
       
       fun wholeRegion (a: 'a array): 'a region =
@@ -142,72 +160,12 @@
       fun modify trv f a = modifyi trv (f o #3) (wholeRegion a)
 
       fun tabulate trv (rows, cols, f) =
-         if !Primitive.usesCallcc
-            then
-               (* All this mess is careful to construct a list representing
-                * the array and then convert the list to the array after all
-                * the calls to f have been made, in case f uses callcc.
-                *)
-               let
-                  val size =
-                     if Primitive.safe andalso (rows < 0 orelse cols < 0)
-                        then raise Size
-                     else rows * cols handle Overflow => raise Size
-                  val (rows', cols', f) =
-                     case trv of
-                        RowMajor => (rows, cols, f)
-                      | ColMajor => (cols, rows, fn (c, r) => f (r, c))
-                  fun loopr (r, l) =
-                     if r >= rows'
-                        then l
-                     else
-                        let
-                           fun loopc (c, l) =
-                              if c >= cols'
-                                 then l
-                              else loopc (c + 1, f (r, c) :: l)
-                        in loopr (r + 1, loopc (0, l))
-                        end
-                  val l = loopr (0, [])
-                  val a = Primitive.Array.array size
-               in case trv of
-                  RowMajor =>
-                     (* The list holds the elements in row major order,
-                      * but reversed.
-                      *)
-                     let
-                        val _ =
-                           List.foldl (fn (x, i) =>
-                                       (Primitive.Array.update (a, i, x)
-                                        ; i -? 1))
-                           (size -? 1) l
-                     in
-                        ()
-                     end
-                | ColMajor =>
-                     (* The list holds the elements in column major order,
-                      * but reversed.
-                      *)
-                     let
-                        val _ =
-                           List.foldl (fn (x, (spot, r)) =>
-                                       (Primitive.Array.update (a, spot, x)
-                                        ; if r = 0
-                                             then (spot -? 1 +? size -? cols,
-                                                   rows -? 1)
-                                          else (spot -? cols, r -? 1)))
-                           (size -? 1, rows -? 1)
-                           l
-                     in
-                        ()
-                     end
-                  ; {rows = rows, cols = cols, array = a}
-               end
-         else
-            let val a = arrayUninit (rows, cols)
-            in modifyi trv (fn (r, c, _) => f (r, c)) (wholeRegion a)
-               ; a
-            end
+         let
+            val a = arrayUninit (rows, cols)
+            val () = modifyi trv (fn (r, c, _) => f (r, c)) (wholeRegion a)
+         in
+            a
+         end
 
       fun copy {src = src as {base, row, col, ...}: 'a region,
                 dst, dst_row, dst_col} =

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/mono-array.sig
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/mono-array.sig	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/mono-array.sig	2006-07-03 21:18:36 UTC (rev 4671)
@@ -45,7 +45,7 @@
       val rawArray: int -> array
       val toList: array -> elem list
       val toPoly: array -> elem Array.array
-      val unfoldi: int * 'a * (int * 'a -> elem * 'a) -> array
+      val unfoldi: int * 'a * (int * 'a -> elem * 'a) -> array * 'a
       val unsafeSub: array * int -> elem
       val unsafeUpdate: array * int * elem -> unit
    end

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/mono-vector.sig
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/mono-vector.sig	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/mono-vector.sig	2006-07-03 21:18:36 UTC (rev 4671)
@@ -41,7 +41,7 @@
       val toList: vector -> elem list
       val tokens: (elem -> bool) -> vector -> vector list
       val translate: (elem -> vector) -> vector -> vector
-      val unfoldi: int * 'a * (int * 'a -> elem * 'a) -> vector
+      val unfoldi: int * 'a * (int * 'a -> elem * 'a) -> vector * 'a
       val unsafeSub: vector * int -> elem
       val vector: int * elem -> vector
    end

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/sequence.fun
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/sequence.fun	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/sequence.fun	2006-07-03 21:18:36 UTC (rev 4671)
@@ -32,55 +32,28 @@
 
       fun seq0 () = fromArray (array 0)
 
+      (* unfoldi depends on the fact that the runtime system fills in the array
+       * with reasonable bogus values.
+       *)
       fun unfoldi (n, b, f) =
          let
             val a = array n
             fun loop (i, b)  =
-               if i >= n
-                  then ()
+               if i >= n then
+                  b
                else
                   let
                      val (x, b') = f (i, b)
-                     val _ = Array.update (a, i, x)
+                     val () = Array.update (a, i, x)
                   in
                      loop (i +? 1, b')
                   end
-            val _ = loop (0, b)
+            val b = loop (0, b)
          in
-            fromArray a
+            (fromArray a, b)
          end
 
-      (* Tabulate depends on the fact that the runtime system fills in the array
-       * with reasonable bogus values.
-       *)
-      fun tabulate (n, f) =
-(*
-         if !Primitive.usesCallcc
-            then
-               (* This code is careful to use a list to accumulate the 
-                * components of the array in case f uses callcc.
-                *)
-               let
-                  fun loop (i, l) =
-                     if i >= n
-                        then l
-                     else loop (i + 1, f i :: l)
-                  val l = loop (0, [])
-                  val a = array n
-                  fun loop (l, i) =
-                     case l of
-                        [] => ()
-                      | x :: l =>
-                           let val i = i -? 1
-                           in Array.update (a, i, x)
-                              ; loop (l, i)
-                           end
-               in loop (l, n)
-                  ; fromArray a
-               end
-         else
-*)
-            unfoldi (n, (), fn (i, ()) => (f i, ()))
+      fun tabulate (n, f) = #1 (unfoldi (n, (), fn (i, ()) => (f i, ())))
 
       fun new (n, x) = tabulate (n, fn _ => x)
 
@@ -218,25 +191,26 @@
                in loop (min1, min2)
                end
             fun sequence (sl as T {seq, start, len}): 'a sequence =
-               if isMutable orelse (start <> 0 orelse len <> S.length seq)
-                  then map (fn x => x) sl
-               else seq
+               if isMutable orelse (start <> 0 orelse len <> S.length seq) then
+                  map (fn x => x) sl
+               else
+                  seq
             fun append (sl1: 'a slice, sl2: 'a slice): 'a sequence =
-               if length sl1 = 0
-                  then sequence sl2
-               else if length sl2 = 0
-                  then sequence sl1
+               if length sl1 = 0 then
+                  sequence sl2
+               else if length sl2 = 0 then
+                  sequence sl1
                else
                   let
                      val l1 = length sl1
                      val l2 = length sl2
                      val n = l1 + l2 handle Overflow => raise Size
                   in
-                     unfoldi (n, (0, sl1),
-                              fn (_, (i, sl)) =>
-                                  if i < length sl
-                                     then (unsafeSub (sl, i), (i +? 1, sl))
-                                  else (unsafeSub (sl2, 0), (1, sl2)))
+                     #1 (unfoldi (n, (0, sl1),
+                                  fn (_, (i, sl)) =>
+                                  if i < length sl then
+                                     (unsafeSub (sl, i), (i +? 1, sl))
+                                  else (unsafeSub (sl2, 0), (1, sl2))))
                   end
             fun concat (sls: 'a slice list): 'a sequence =
                case sls of
@@ -247,17 +221,19 @@
                         val n = List.foldl (fn (sl, s) => s + length sl) 0 sls'
                                 handle Overflow => raise Size
                      in
-                        unfoldi (n, (0, sl, sls),
-                                 fn (_, ac) =>
-                                 let
-                                    fun loop (i, sl, sls) =
-                                       if i < length sl
-                                          then (unsafeSub (sl, i), (i +? 1, sl, sls))
-                                       else case sls of
-                                               [] => raise Fail "concat bug"
-                                             | sl :: sls => loop (0, sl, sls)
-                                 in loop ac
-                                 end)
+                        #1 (unfoldi (n, (0, sl, sls),
+                                     fn (_, ac) =>
+                                     let
+                                        fun loop (i, sl, sls) =
+                                           if i < length sl then
+                                              (unsafeSub (sl, i),
+                                               (i +? 1, sl, sls))
+                                           else case sls of
+                                              [] => raise Fail "concat bug"
+                                            | sl :: sls => loop (0, sl, sls)
+                                     in
+                                        loop ac
+                                     end))
                      end
             fun concatWith (sep: 'a sequence) (sls: 'a slice list): 'a sequence =
                let val sep = full sep
@@ -480,18 +456,4 @@
         fun duplicate seq = make Slice.sequence seq
         fun toList seq = make Slice.toList seq
       end
-    
-      (* Deprecated *)
-      fun checkSliceMax (start: int, num: int option, max: int): int =
-         case num of
-            NONE => if Primitive.safe andalso (start < 0 orelse start > max)
-                       then raise Subscript
-                    else max
-          | SOME num =>
-               if Primitive.safe
-                  andalso (start < 0 orelse num < 0 orelse start > max -? num)
-                  then raise Subscript
-               else start +? num
-      (* Deprecated *)
-      fun checkSlice (s, i, opt) = checkSliceMax (i, opt, length s)
    end

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/sequence.sig
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/sequence.sig	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/sequence.sig	2006-07-03 21:18:36 UTC (rev 4671)
@@ -62,10 +62,5 @@
       val duplicate: 'a sequence -> 'a sequence
       val new: int * 'a elt -> 'a sequence
       val toList: 'a sequence -> 'a elt list
-      val unfoldi: int * 'a * (int * 'a -> 'b elt * 'a) -> 'b sequence
-
-      (* Deprecated *)
-      val checkSlice: 'a sequence * int * int option -> int
-      (* Deprecated *)
-      val checkSliceMax: int * int option * int -> int
+      val unfoldi: int * 'a * (int * 'a -> 'b elt * 'a) -> 'b sequence * 'a
    end

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/vector.sig
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/vector.sig	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/vector.sig	2006-07-03 21:18:36 UTC (rev 4671)
@@ -34,24 +34,24 @@
       include VECTOR
       structure VectorSlice: VECTOR_SLICE_EXTRA 
 
-      val unsafeSub: 'a vector * int -> 'a
-
-      (* Used to implement Substring/String functions *)
+      val append: 'a vector * 'a vector -> 'a vector
+      (* concatWith is used to implement Substring/String functions *)
       val concatWith: 'a vector -> 'a vector list -> 'a vector
+      val create:
+         int
+         * ({sub: int -> 'a, update: int * 'a -> unit}
+            -> (int -> 'a) * (unit -> unit))
+         -> 'a vector
+      val duplicate: 'a vector -> 'a vector
+      val fields: ('a -> bool) -> 'a vector -> 'a vector list
+      val fromArray: 'a array -> 'a vector
       val isPrefix: ('a * 'a -> bool) -> 'a vector -> 'a vector -> bool
       val isSubvector: ('a * 'a -> bool) -> 'a vector -> 'a vector -> bool
       val isSuffix: ('a * 'a -> bool) -> 'a vector -> 'a vector -> bool
+      val toList: 'a vector -> 'a list
+      val tokens: ('a -> bool) -> 'a vector -> 'a vector list
       val translate: ('a -> 'a vector) -> 'a vector -> 'a vector
-      val tokens: ('a -> bool) -> 'a vector -> 'a vector list
-      val fields: ('a -> bool) -> 'a vector -> 'a vector list
-
-      val append: 'a vector * 'a vector -> 'a vector
-      val duplicate: 'a vector -> 'a vector
-      val fromArray: 'a array -> 'a vector
-      val toList: 'a vector -> 'a list
-      val unfoldi: int * 'a * (int * 'a -> 'b * 'a) -> 'b vector
+      val unfoldi: int * 'b * (int * 'b -> 'a * 'b) -> 'a vector * 'b
+      val unsafeSub: 'a vector * int -> 'a
       val vector: int * 'a -> 'a vector
-
-      (* Deprecated *)
-      val checkSlice: 'a vector * int * int option -> int
    end

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/vector.sml
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/vector.sml	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/arrays-and-vectors/vector.sml	2006-07-03 21:18:36 UTC (rev 4671)
@@ -42,9 +42,37 @@
       val fromArray = Primitive.Vector.fromArray
 
       val vector = new
+
+      fun create (n, f) =
+         let
+            val a = Primitive.Array.array n
+            val subLim = ref 0
+            fun sub i =
+               if Primitive.safe andalso Primitive.Int.geu (i, !subLim) then
+                  raise Subscript
+               else
+                  Primitive.Array.sub (a, i)
+            val updateLim = ref 0
+            fun update (i, x) =
+               if Primitive.safe andalso Primitive.Int.geu (i, !updateLim) then
+                  raise Subscript
+               else
+                  Primitive.Array.update (a, i, x)
+            val (tab, finish) = f {sub = sub, update = update}
+            val () =
+               Util.naturalForeach
+               (n, fn i =>
+                (Primitive.Array.update (a, i, tab i);
+                 subLim := i + 1;
+                 updateLim := i + 1))
+            val () = finish ()
+            val () = updateLim := 0
+         in
+            fromArray a
+         end
    end
 structure VectorSlice: VECTOR_SLICE_EXTRA = Vector.VectorSlice
-
+   
 structure VectorGlobal: VECTOR_GLOBAL = Vector
 open VectorGlobal
 val vector = Vector.fromList

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/integer/int.sml
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/integer/int.sml	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/integer/int.sml	2006-07-03 21:18:36 UTC (rev 4671)
@@ -119,40 +119,42 @@
     * The most that will be required is for minInt in binary.
     *)
    val maxNumDigits = PI.+ (precision', 1)
-   val buf = CharArray.array (maxNumDigits, #"\000")
+   val one = One.make (fn () => CharArray.array (maxNumDigits, #"\000"))
 in
    fun fmt radix (n: int): string =
-      let
-         val radix = fromInt (StringCvt.radixToInt radix)
-         fun loop (q, i: Int.int) =
-            let
-               val _ =
-                  CharArray.update
-                  (buf, i, StringCvt.digitToChar (toInt (~? (rem (q, radix)))))
-               val q = quot (q, radix)
-            in
-               if q = zero
-                  then
-                     let
-                        val start =
-                           if n < zero
-                              then
-                                 let
-                                    val i = PI.- (i, 1)
-                                    val () = CharArray.update (buf, i, #"~")
-                                 in
-                                    i
-                                 end
-                           else i
-                     in
-                        CharArraySlice.vector
-                        (CharArraySlice.slice (buf, start, NONE))
-                     end
-               else loop (q, PI.- (i, 1))
-            end
-      in
-         loop (if n < zero then n else ~? n, PI.- (maxNumDigits, 1))
-      end
+      One.use
+      (one, fn buf =>
+       let
+          val radix = fromInt (StringCvt.radixToInt radix)
+          fun loop (q, i: Int.int) =
+             let
+                val _ =
+                   CharArray.update
+                   (buf, i, StringCvt.digitToChar (toInt (~? (rem (q, radix)))))
+                val q = quot (q, radix)
+             in
+                if q = zero
+                   then
+                      let
+                         val start =
+                            if n < zero
+                               then
+                                  let
+                                     val i = PI.- (i, 1)
+                                     val () = CharArray.update (buf, i, #"~")
+                                  in
+                                     i
+                                  end
+                            else i
+                      in
+                         CharArraySlice.vector
+                         (CharArraySlice.slice (buf, start, NONE))
+                      end
+                else loop (q, PI.- (i, 1))
+             end
+       in
+          loop (if n < zero then n else ~? n, PI.- (maxNumDigits, 1))
+       end)
 end      
 
 val toString = fmt StringCvt.DEC

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/integer/pack-word32.sml
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/integer/pack-word32.sml	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/integer/pack-word32.sml	2006-07-03 21:18:36 UTC (rev 4671)
@@ -22,14 +22,16 @@
          Primitive.Word8Array.updateWordRev,
          Primitive.Word8Vector.subWordRev)
 
-fun start (i, n) = 
+fun offset (i, n) = 
    let
       val i = Int.* (bytesPerElem, i)
-      val _ =
+      val () =
          if Primitive.safe
-            andalso Primitive.Int.geu (Int.+ (i, Int.- (bytesPerElem, 1)), n)
-            then raise Subscript
-         else ()
+            andalso (Primitive.Int.geu
+                     (Int.+ (i, Int.- (bytesPerElem, 1)), n)) then
+            raise Subscript
+         else
+            ()
    in
       i
    end handle Overflow => raise Subscript
@@ -37,7 +39,7 @@
 local
    fun make (sub, length, toPoly) (av, i) =
       let
-         val _ = start (i, length av)
+         val _ = offset (i, length av)
       in
          Word.toLarge (sub (toPoly av, i))
       end
@@ -51,7 +53,7 @@
 fun update (a, i, w) =
    let
       val a = Word8Array.toPoly a
-      val _ = start (i, Array.length a)
+      val _ = offset (i, Array.length a)
    in
       up (a, i, Word.fromLarge w)
    end

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/libs/basis-extra/basis-extra.mlb
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/libs/basis-extra/basis-extra.mlb	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/libs/basis-extra/basis-extra.mlb	2006-07-03 21:18:36 UTC (rev 4671)
@@ -20,6 +20,7 @@
       ../../misc/dynamic-wind.sml
       ../../general/general.sig
       ../../general/general.sml
+      ../../misc/one.sml
       ../../misc/util.sml
       ../../general/option.sig
       ../../general/option.sml

Copied: mlton/branches/on-20050420-cmm-branch/basis-library/misc/one.sml (from rev 4670, mlton/trunk/basis-library/misc/one.sml)

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/misc/primitive.sml
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/misc/primitive.sml	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/misc/primitive.sml	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,4 +1,4 @@
-(* Copyright (C) 1999-2005 Henry Cejtin, Matthew Fluet, Suresh
+(* Copyright (C) 1999-2006 Henry Cejtin, Matthew Fluet, Suresh
  *    Jagannathan, and Stephen Weeks.
  * Copyright (C) 1997-2000 NEC Research Institute.
  *
@@ -215,7 +215,6 @@
          _prim "MLton_installSignalHandler": unit -> unit;
       val safe = _command_line_const "MLton.safe": bool = true;
       val touch = _prim "MLton_touch": 'a -> unit;
-      val usesCallcc: bool ref = ref false;
 
       structure Stdio =
          struct
@@ -966,9 +965,11 @@
                   structure OS =
                      struct
                         datatype t =
-                           Cygwin
+                           AIX
+                         | Cygwin
                          | Darwin
                          | FreeBSD
+                         | HPUX
                          | Linux
                          | MinGW
                          | NetBSD
@@ -977,9 +978,11 @@
 
                         val host: t =
                            case _const "MLton_Platform_OS_host": string; of
-                              "cygwin" => Cygwin
+                              "aix" => AIX
+                            | "cygwin" => Cygwin
                             | "darwin" => Darwin
                             | "freebsd" => FreeBSD
+                            | "hpux" => HPUX
                             | "linux" => Linux
                             | "mingw" => MinGW
                             | "netbsd" => NetBSD
@@ -1294,7 +1297,16 @@
          struct
             open Real64
 
-            structure Class =
+            structure Class:>
+               sig
+                  eqtype t
+
+                  val inf: t
+                  val nan: t
+                  val normal: t
+                  val subnormal: t
+                  val zero: t
+               end =
                struct
                   type t = int
                      
@@ -1339,7 +1351,7 @@
             val == = _prim "Real64_equal": real * real -> bool;
             val ?= = _prim "Real64_qequal": real * real -> bool;
             val abs = _prim "Real64_abs": real -> real;
-            val class = _import "Real64_class": real -> int;
+            val class = _import "Real64_class": real -> Class.t;
             val frexp = _import "Real64_frexp": real * int ref -> real;
             val gdtoa =
                _import "Real64_gdtoa": real * int * int * int ref -> CString.t;
@@ -1413,7 +1425,7 @@
             val == = _prim "Real32_equal": real * real -> bool;
             val ?= = _prim "Real32_qequal": real * real -> bool;
             val abs = _prim "Real32_abs": real -> real;
-            val class = _import "Real32_class": real -> int;
+            val class = _import "Real32_class": real -> Real64.Class.t;
             fun frexp (r: real, ir: int ref): real =
                fromLarge (Real64.frexp (toLarge r, ir))
             val gdtoa =
@@ -2263,3 +2275,5 @@
                "unhandled exception in Basis Library\000")))
 in
 end
+
+val op + = Primitive.Int.+

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/mlton/array.sig
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/mlton/array.sig	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/mlton/array.sig	2006-07-03 21:18:36 UTC (rev 4671)
@@ -10,5 +10,5 @@
    
 signature MLTON_ARRAY =
    sig
-      val unfoldi: int * 'b * (int * 'b -> 'a * 'b) -> 'a array
+      val unfoldi: int * 'b * (int * 'b -> 'a * 'b) -> 'a array * 'b
    end

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/mlton/cont.sml
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/mlton/cont.sml	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/mlton/cont.sml	2006-07-03 21:18:36 UTC (rev 4671)
@@ -11,54 +11,44 @@
 
 structure Thread = Primitive.Thread
 
-(* This mess with dummy is so that if callcc is ever used anywhere in the
- * program, then Primitive.usesCallcc is set to true during basis library
- * evaluation.  This relies on the dead code elimination algorithm
- * (core-ml/dead-code.fun), which will keep dummy around only if callcc is used.
- *)
-val dummy =
-   (Primitive.usesCallcc := true
-    ; fn () => ())
-
 type 'a t = (unit -> 'a) -> unit
 
 fun callcc (f: 'a t -> 'a): 'a =
-   (dummy ()
-    ; if MLtonThread.amInSignalHandler ()
-         then die "callcc can not be used in a signal handler\n"
-      else 
-         let
-            datatype 'a state =
-               Original of 'a t -> 'a
-             | Copy of unit -> 'a
-             | Clear
-            val r: 'a state ref = ref (Original f)
-            val _ = Thread.atomicBegin () (* Match 1 *)
-            val _ = Thread.copyCurrent ()
-         in
-            case (!r before r := Clear) of
-               Clear => raise Fail "callcc saw Clear"
-             | Copy v => (Thread.atomicEnd () (* Match 2 *)
-                          ; v ())
-             | Original f =>
-                  let
-                     val t = Thread.savedPre ()
-                  in
-                     Thread.atomicEnd () (* Match 1 *)
-                     ; f (fn v =>
-                          let
-                             val _ = Thread.atomicBegin () (* Match 2 *)
-                             val _ = r := Copy v
-                             val new = Thread.copy t
-                             (* The following Thread.atomicBegin () 
-                              * is matched by Thread.switchTo.
-                              *)
-                             val _ = Thread.atomicBegin ()
-                          in
-                             Thread.switchTo new
-                          end)
-                  end
-         end)
+   if MLtonThread.amInSignalHandler () then
+      die "callcc can not be used in a signal handler\n"
+   else 
+      let
+         datatype 'a state =
+            Original of 'a t -> 'a
+          | Copy of unit -> 'a
+          | Clear
+         val r: 'a state ref = ref (Original f)
+         val _ = Thread.atomicBegin () (* Match 1 *)
+         val _ = Thread.copyCurrent ()
+      in
+         case (!r before r := Clear) of
+            Clear => raise Fail "callcc saw Clear"
+          | Copy v => (Thread.atomicEnd () (* Match 2 *)
+                       ; v ())
+          | Original f =>
+               let
+                  val t = Thread.savedPre ()
+               in
+                  Thread.atomicEnd () (* Match 1 *)
+                  ; f (fn v =>
+                       let
+                          val _ = Thread.atomicBegin () (* Match 2 *)
+                          val _ = r := Copy v
+                          val new = Thread.copy t
+                          (* The following Thread.atomicBegin () 
+                           * is matched by Thread.switchTo.
+                           *)
+                          val _ = Thread.atomicBegin ()
+                       in
+                          Thread.switchTo new
+                       end)
+               end
+      end
 
 fun ('a, 'b) throw' (k: 'a t, v: unit -> 'a): 'b =
    (k v; raise Fail "throw bug")

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/mlton/platform.sig
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/mlton/platform.sig	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/mlton/platform.sig	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,4 +1,4 @@
-(* Copyright (C) 2003-2005 Henry Cejtin, Matthew Fluet, Suresh
+(* Copyright (C) 2003-2006 Henry Cejtin, Matthew Fluet, Suresh
  *    Jagannathan, and Stephen Weeks.
  *
  * MLton is released under a BSD-style license.
@@ -20,9 +20,11 @@
       structure OS:
          sig
             datatype t =
-               Cygwin
+                AIX
+             | Cygwin
              | Darwin
              | FreeBSD
+             | HPUX
              | Linux
              | MinGW
              | NetBSD

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/mlton/platform.sml
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/mlton/platform.sml	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/mlton/platform.sml	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,4 +1,4 @@
-(* Copyright (C) 2003-2005 Henry Cejtin, Matthew Fluet, Suresh
+(* Copyright (C) 2003-2006 Henry Cejtin, Matthew Fluet, Suresh
  *    Jagannathan, and Stephen Weeks.
  *
  * MLton is released under a BSD-style license.
@@ -43,9 +43,11 @@
          struct
             open OS
 
-            val all = [(Cygwin, "Cygwin"),
+            val all = [(AIX, "AIX"),
+                       (Cygwin, "Cygwin"),
                        (Darwin, "Darwin"),
                        (FreeBSD, "FreeBSD"),
+                       (HPUX, "HPUX"),
                        (Linux, "Linux"),
                        (MinGW, "MinGW"),
                        (NetBSD, "NetBSD"),

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/mlton/pointer.sig
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/mlton/pointer.sig	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/mlton/pointer.sig	2006-07-03 21:18:36 UTC (rev 4671)
@@ -5,6 +5,9 @@
  * See the file MLton-LICENSE for details.
  *)
 
+type int = Int.int
+type word = Word.word
+
 signature MLTON_POINTER =
    sig
       eqtype t

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/mlton/vector.sig
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/mlton/vector.sig	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/mlton/vector.sig	2006-07-03 21:18:36 UTC (rev 4671)
@@ -10,6 +10,10 @@
 
 signature MLTON_VECTOR =
    sig
-      val unfoldi: int * 'b * (int * 'b -> 'a * 'b) -> 'a vector
+      val create:
+         int * ({sub: int -> 'a, update: int * 'a -> unit}
+                -> (int -> 'a) * (unit -> unit))
+         -> 'a vector
+      val unfoldi: int * 'b * (int * 'b -> 'a * 'b) -> 'a vector * 'b
    end
    

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/real/pack-real.sml
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/real/pack-real.sml	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/real/pack-real.sml	2006-07-03 21:18:36 UTC (rev 4671)
@@ -24,10 +24,24 @@
       then (subVec, update)
    else (subVecRev, updateRev)
 
+fun offset (i, n) =
+   let
+      val i = Int.* (bytesPerElem, i)
+      val () =
+         if Primitive.safe
+            andalso (Primitive.Int.geu
+                     (Int.+ (i, Int.- (bytesPerElem, 1)), n)) then
+            raise Subscript
+         else
+            ()
+   in
+      i
+   end handle Overflow => raise Subscript
+
 fun update (a, i, r) =
    let
+      val i = offset (i, Word8Array.length a)
       val a = Word8Array.toPoly a
-      val _ = Array.checkSlice (a, i, SOME bytesPerElem)
    in
       up (a, i, r)
    end
@@ -42,8 +56,8 @@
 
 fun subVec (v, i) =
    let
+      val i = offset (i, Word8Vector.length v)
       val v = Word8Vector.toPoly v
-      val _ = Vector.checkSlice (v, i, SOME bytesPerElem)
    in
       sub (v, i)
    end

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/real/real.fun
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/real/real.fun	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/real/real.fun	2006-07-03 21:18:36 UTC (rev 4671)
@@ -63,10 +63,11 @@
 
       val nan = posInf + negInf
 
+      structure Class = Primitive.Real64.Class
       local
          val classes =
             let
-               open Primitive.Real64.Class
+               open Class
             in
                (* order here is chosen based on putting the more commonly used
                 * classes at the front.
@@ -103,21 +104,15 @@
             INF => false
           | NAN => false
           | _ => true
-               
-      fun isNan r = class r = NAN
 
-      fun isNormal r = class r = NORMAL
+      val op == = Prim.==
 
-      val op == =
-         fn (x, y) =>
-         case (class x, class y) of
-            (NAN, _) => false
-          | (_, NAN) => false
-          | (ZERO, ZERO) => true
-          | _ => Prim.== (x, y)
-
       val op != = not o op ==
 
+      fun isNan r = r != r
+
+      fun isNormal r = class r = NORMAL
+
       val op ?= =
          if MLton.Codegen.isNative
             then Prim.?=

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/real/real.sig
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/real/real.sig	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/real/real.sig	2006-07-03 21:18:36 UTC (rev 4671)
@@ -27,7 +27,7 @@
       val ?= : real * real -> bool
       val ~ : real -> real
       val abs: real -> real
-      val class: real -> int
+      val class: real -> Primitive.Real64.Class.t
       val frexp: real * int ref -> real
       val gdtoa: real * int * int * int ref -> Primitive.CString.t
       val fromInt: int -> real

Modified: mlton/branches/on-20050420-cmm-branch/basis-library/sml-nj/sml-nj.sml
===================================================================
--- mlton/branches/on-20050420-cmm-branch/basis-library/sml-nj/sml-nj.sml	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/basis-library/sml-nj/sml-nj.sml	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,4 +1,4 @@
-(* Copyright (C) 1999-2005 Henry Cejtin, Matthew Fluet, Suresh
+(* Copyright (C) 1999-2006 Henry Cejtin, Matthew Fluet, Suresh
  *    Jagannathan, and Stephen Weeks.
  * Copyright (C) 1997-2000 NEC Research Institute.
  *
@@ -30,9 +30,11 @@
                   open MLton.Platform.OS
                in
                   case host of
-                     Cygwin => UNIX
+                     AIX => UNIX
+                   | Cygwin => UNIX
                    | Darwin => MACOS
                    | FreeBSD => UNIX
+                   | HPUX => UNIX
                    | Linux => UNIX
                    | MinGW => WIN32
                    | NetBSD => UNIX
@@ -68,4 +70,3 @@
              | Original => false
          end
    end
-   

Modified: mlton/branches/on-20050420-cmm-branch/bin/mlton-script
===================================================================
--- mlton/branches/on-20050420-cmm-branch/bin/mlton-script	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/bin/mlton-script	2006-07-03 21:18:36 UTC (rev 4671)
@@ -97,10 +97,12 @@
                 -malign-functions=5
                 -malign-jumps=2
                 -malign-loops=2'                                \
+        -target-link-opt aix '-lgmp'                            \
         -target-link-opt amd64 '-m32'                           \
         -target-link-opt cygwin '-lgmp'                         \
         -target-link-opt darwin "$darwinLinkOpts -lgmp"         \
         -target-link-opt freebsd '-L/usr/local/lib/ -lgmp'      \
+        -target-link-opt hpux '-lgmp'                           \
         -target-link-opt linux '-lgmp'                          \
         -target-link-opt mingw                                  \
                 '-lgmp -lws2_32 -lkernel32 -lpsapi -lnetapi32'  \

Modified: mlton/branches/on-20050420-cmm-branch/bin/platform
===================================================================
--- mlton/branches/on-20050420-cmm-branch/bin/platform	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/bin/platform	2006-07-03 21:18:36 UTC (rev 4671)
@@ -24,8 +24,13 @@
 esac
 
 uname=`uname`
+arch_flag=-m
 
 case "$uname" in
+AIX)
+        HOST_OS='aix'
+        arch_flag=-p
+;;
 CYGWIN*)
         HOST_OS='cygwin'
 ;;
@@ -35,6 +40,9 @@
 FreeBSD*)
         HOST_OS='freebsd'
 ;;
+HP-UX)
+	HOST_OS='hpux'
+;;
 Linux)
         HOST_OS='linux'
 ;;
@@ -55,7 +63,7 @@
 ;;
 esac
 
-arch=`uname -m`
+arch=`uname $arch_flag`
 
 case "$arch" in
 alpha*)
@@ -74,6 +82,9 @@
 parisc*)
         HOST_ARCH=hppa
 ;;
+9000/*)
+        HOST_ARCH=hppa
+;;
 ia64*)
         HOST_ARCH=ia64
 ;;
@@ -84,6 +95,9 @@
 # big-endian and little-endian detect via headers
         HOST_ARCH=mips
 ;;
+powerpc)
+        HOST_ARCH=powerpc
+;;
 ppc*)
         HOST_ARCH=powerpc
 ;;

Modified: mlton/branches/on-20050420-cmm-branch/bin/upgrade-basis
===================================================================
--- mlton/branches/on-20050420-cmm-branch/bin/upgrade-basis	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/bin/upgrade-basis	2006-07-03 21:18:36 UTC (rev 4671)
@@ -135,6 +135,9 @@
 esac
 
 case "$OS" in
+aix)
+        os='AIX'
+;;
 cygwin)
         os='Cygwin'
 ;;
@@ -144,6 +147,9 @@
 freebsd)
         os='FreeBSD'
 ;;
+hpux)
+	os="HPUX"
+;;
 linux)
         os='Linux'
 ;;
@@ -206,12 +212,14 @@
 
             structure OS =
                struct
-                  datatype t = Cygwin | Darwin | FreeBSD | Linux | MinGW | NetBSD
-                             | OpenBSD | Solaris
+                  datatype t = AIX | Cygwin | Darwin | FreeBSD | HPUX | Linux
+                             | MinGW | NetBSD | OpenBSD | Solaris
 
-                  val all = [(Cygwin, "Cygwin"),
+                  val all = [(AIX, "AIX"),
+                             (Cygwin, "Cygwin"),
                              (Darwin, "Darwin"),
                              (FreeBSD, "FreeBSD"),
+			     (HPUX, "HPUX"),
                              (Linux, "Linux"),
                              (MinGW, "MinGW"),
                              (NetBSD, "NetBSD"),

Modified: mlton/branches/on-20050420-cmm-branch/bytecode/Makefile
===================================================================
--- mlton/branches/on-20050420-cmm-branch/bytecode/Makefile	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/bytecode/Makefile	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,4 +1,4 @@
-## Copyright (C) 2004-2005 Henry Cejtin, Matthew Fluet, Suresh
+## Copyright (C) 2004-2006 Henry Cejtin, Matthew Fluet, Suresh
  #    Jagannathan, and Stephen Weeks.
  #
  # MLton is released under a BSD-style license.
@@ -11,6 +11,13 @@
 
 CC = gcc -std=gnu99
 CFLAGS = -fomit-frame-pointer -I../runtime -I../include -Wall
+DEBUGFLAGS = $(CFLAGS)
+ifneq ($(TARGET_ARCH), ia64)
+ifneq ($(TARGET_ARCH), powerpc)
+DEBUGFLAGS += -gstabs+
+endif
+endif
+DEBUGFLAGS += -g2
 
 ifeq ($(TARGET_ARCH), amd64)
 CFLAGS += -mtune=opteron -m32 
@@ -24,7 +31,7 @@
 	$(CC) $(CFLAGS) -c -O2 interpret.c
 
 interpret-gdb.o: interpret.c interpret.h
-	$(CC) $(CFLAGS) -c -o $@ -gstabs+ -g2 -DASSERT=1 interpret.c
+	$(CC) $(DEBUGFLAGS) -c -o $@ -DASSERT=1 interpret.c
 
 print-opcodes: print-opcodes.c opcode.h
 	$(CC) $(CFLAGS) -o print-opcodes -I../runtime -L../runtime	\

Modified: mlton/branches/on-20050420-cmm-branch/doc/changelog
===================================================================
--- mlton/branches/on-20050420-cmm-branch/doc/changelog	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/doc/changelog	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,3 +1,62 @@
+Here are the changes since version 20051202.
+
+* 2006-06-24
+   - Fixed a bug in pass to flatten data structures.  Thanks to Joe Hurd
+     for the bug report.
+	
+* 2006-06-08
+  - Fixed a bug in the native codegen's implementation of the C-calling
+    convention.
+	
+* 2006-05-11
+  - Ported to PowerPC-AIX.
+  - Fixed a bug in the runtime for the cases where nonblocking IO with
+    sockets was implemented using MSG_DONTWAIT.  This flag does not
+    exist on AIX, Cygwin, HPUX, and MinGW and was previously just
+    ignored.  Now the runtime simulates the flag for these platforms
+    (except MinGW, yet, where it's still ignored).
+
+* 2006-04-25
+  - Ported to HPPA-HPUX.
+  - Fixed PackReal{,32,64}{Big,Little} to follow the Basis Library
+    specification. 
+
+* 2006-04-19
+  - Fixed a bug in MLton.share that could cause a segfault.
+
+* 2006-03-30
+  - Changed MLton.Vector.unfoldi to return the state in addition to the
+    result vector.
+
+* 2006-03-30
+  - Added MLton.Vector.create, a more powerful vector-creation function
+    than is available in the basis library.
+
+* 2006-03-04
+  - Added MLRISC from SML/NJ 110.57 to standard distribution.
+
+* 2006-03-03
+  - Fixed bug in simplifier that could eliminate an irredundant test.
+
+* 2006-03-02
+  - Ported a bugfix from SML/NJ for a bug with the combination of withNack
+    and never in CML. 
+
+* 2006-02-09
+  - Support compiler specific annotations in ML Basis files.  If an
+    annotation contains ":", then the text preceding the ":" is meant to
+    denote a compiler.  For MLton, if the text preceding the ":" is equal
+    to "mlton", then the remaining annotation is scanned as a normal
+    annotation.  If the text preceding the ":" is not-equal to "mlton",
+    then the annotation is ignored, and no warning is issued.
+
+* 2006-02-04
+  - Fixed bug in elaboration of functors; a program with a very large
+    number of functors could exhibit the error
+    "ElaborateEnv.functorClosure: firstTycons".
+	
+--------------------------------------------------------------------------------
+
 Here are the changes from version 20041109 to version 20051202.
 
 Summary:
@@ -61,7 +120,7 @@
 
 * 2005-09-08
   - Fixed bug in type inference of flexible records that would show up
-    as "Type error: variable applied to wrong number of type args"
+    as "Type error: variable applied to wrong number of type args".
 
 * 2005-09-06
   - Fixed bug in Real.signBit, which had assumed that the underlying

Modified: mlton/branches/on-20050420-cmm-branch/doc/license/README
===================================================================
--- mlton/branches/on-20050420-cmm-branch/doc/license/README	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/doc/license/README	2006-07-03 21:18:36 UTC (rev 4671)
@@ -12,6 +12,7 @@
                                                 Concurrent ML Library
                                                 CKit Library
                                                 mlnlffigen and MLNLFFI Library
+                                                MLRISC Library
 
 SML/NJ Lib	SMLNJ-LIB-LICENSE (BSD-style) 	SML/NJ Library
 

Modified: mlton/branches/on-20050420-cmm-branch/lib/ckit-lib/Makefile
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/ckit-lib/Makefile	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/ckit-lib/Makefile	2006-07-03 21:18:36 UTC (rev 4671)
@@ -9,6 +9,7 @@
 all: ckit/README.mlton
 
 ckit/README.mlton: ckit.tgz ckit.patch
+	rm -rf ckit
 	gzip -dc ckit.tgz | tar xf -
 	chmod -R a+r ckit
 	chmod -R g-s ckit

Modified: mlton/branches/on-20050420-cmm-branch/lib/ckit-lib/ckit.patch
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/ckit-lib/ckit.patch	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/ckit-lib/ckit.patch	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,11 +1,11 @@
 diff -Naur ckit/ckit-lib.mlb ckit-mlton/ckit-lib.mlb
 --- ckit/ckit-lib.mlb	1969-12-31 19:00:00.000000000 -0500
-+++ ckit-mlton/ckit-lib.mlb	2005-08-18 09:31:14.000000000 -0400
++++ ckit-mlton/ckit-lib.mlb	2006-05-02 22:38:21.000000000 -0400
 @@ -0,0 +1 @@
 +src/ckit-lib.mlb
 diff -Naur ckit/README.mlton ckit-mlton/README.mlton
 --- ckit/README.mlton	1969-12-31 19:00:00.000000000 -0500
-+++ ckit-mlton/README.mlton	2005-08-17 19:41:36.000000000 -0400
++++ ckit-mlton/README.mlton	2006-05-02 22:38:21.000000000 -0400
 @@ -0,0 +1,13 @@
 +The following changes were made to the ckit Library, in addition to
 +deriving the {{{.mlb}}} file from the {{{.cm}}} files:
@@ -22,7 +22,7 @@
 + * {{{ast/build-ast.sml}}} (modified): Rewrote use of ''or-patterns''.
 diff -Naur ckit/src/ast/ast-sig.sml ckit-mlton/src/ast/ast-sig.sml
 --- ckit/src/ast/ast-sig.sml	2001-10-31 15:22:41.000000000 -0500
-+++ ckit-mlton/src/ast/ast-sig.sml	2005-08-17 19:41:36.000000000 -0400
++++ ckit-mlton/src/ast/ast-sig.sml	2006-05-02 22:38:21.000000000 -0400
 @@ -67,7 +67,12 @@
    datatype declaration
      = TypeDecl of {shadow: {strct:bool} option, tid:tid}
@@ -99,7 +99,7 @@
       location : SourceMap.location,
 diff -Naur ckit/src/ast/build-ast.sml ckit-mlton/src/ast/build-ast.sml
 --- ckit/src/ast/build-ast.sml	2003-08-28 17:58:39.000000000 -0400
-+++ ckit-mlton/src/ast/build-ast.sml	2005-08-17 19:41:36.000000000 -0400
++++ ckit-mlton/src/ast/build-ast.sml	2006-05-02 22:38:21.000000000 -0400
 @@ -290,7 +290,8 @@
  	of SOME{ntype=NONE,...} => true
  	 | _ => false
@@ -225,7 +225,7 @@
  					       else if repeated_declarations_ok
 diff -Naur ckit/src/ast/initializer-normalizer.sml ckit-mlton/src/ast/initializer-normalizer.sml
 --- ckit/src/ast/initializer-normalizer.sml	2003-08-28 17:58:39.000000000 -0400
-+++ ckit-mlton/src/ast/initializer-normalizer.sml	2005-08-17 19:41:36.000000000 -0400
++++ ckit-mlton/src/ast/initializer-normalizer.sml	2006-05-02 22:38:21.000000000 -0400
 @@ -156,7 +156,13 @@
  		   feed (unionNorm (ctype, fields), inits)
  		| SOME _ => fail "Incomplete type for union ref"
@@ -243,7 +243,7 @@
  	 | Ast.Ellipses => fail "Cannot initialize ellipses"
 diff -Naur ckit/src/ast/pp/pp-ast-adornment-sig.sml ckit-mlton/src/ast/pp/pp-ast-adornment-sig.sml
 --- ckit/src/ast/pp/pp-ast-adornment-sig.sml	2000-04-05 14:34:56.000000000 -0400
-+++ ckit-mlton/src/ast/pp/pp-ast-adornment-sig.sml	2005-08-17 19:41:36.000000000 -0400
++++ ckit-mlton/src/ast/pp/pp-ast-adornment-sig.sml	2006-05-02 22:38:21.000000000 -0400
 @@ -1,14 +1,14 @@
  (* Copyright (c) 1998 by Lucent Technologies *)
  
@@ -264,7 +264,7 @@
 +(* end *)
 diff -Naur ckit/src/ast/pp/pp-ast-ext-sig.sml ckit-mlton/src/ast/pp/pp-ast-ext-sig.sml
 --- ckit/src/ast/pp/pp-ast-ext-sig.sml	2000-04-05 14:34:56.000000000 -0400
-+++ ckit-mlton/src/ast/pp/pp-ast-ext-sig.sml	2005-08-17 19:41:36.000000000 -0400
++++ ckit-mlton/src/ast/pp/pp-ast-ext-sig.sml	2006-05-02 22:38:21.000000000 -0400
 @@ -1,13 +1,13 @@
  (* Copyright (c) 1998 by Lucent Technologies *)
  
@@ -289,7 +289,7 @@
 +(* end *)
 diff -Naur ckit/src/ast/pp/pp-lib.sml ckit-mlton/src/ast/pp/pp-lib.sml
 --- ckit/src/ast/pp/pp-lib.sml	2000-04-05 14:34:57.000000000 -0400
-+++ ckit-mlton/src/ast/pp/pp-lib.sml	2005-08-17 19:41:36.000000000 -0400
++++ ckit-mlton/src/ast/pp/pp-lib.sml	2006-05-02 22:38:21.000000000 -0400
 @@ -115,7 +115,10 @@
  
    fun ppId pps ({name,uid,kind,stClass,global,...}: Ast.id) = 
@@ -304,7 +304,7 @@
  	 | _ => ppSymbol pps (name,uid)
 diff -Naur ckit/src/ast/sizeof.sml ckit-mlton/src/ast/sizeof.sml
 --- ckit/src/ast/sizeof.sml	2000-04-05 14:34:55.000000000 -0400
-+++ ckit-mlton/src/ast/sizeof.sml	2005-08-17 19:41:36.000000000 -0400
++++ ckit-mlton/src/ast/sizeof.sml	2006-05-02 22:38:21.000000000 -0400
 @@ -321,7 +321,9 @@
    and process (sizesErrWarnBug as {sizes, err, warn, bug}) tidtab ty =
        case ty
@@ -318,7 +318,7 @@
  	     let val {bits,align} = #int sizes
 diff -Naur ckit/src/ast/type-util-sig.sml ckit-mlton/src/ast/type-util-sig.sml
 --- ckit/src/ast/type-util-sig.sml	2001-10-31 15:22:41.000000000 -0500
-+++ ckit-mlton/src/ast/type-util-sig.sml	2005-08-17 19:41:36.000000000 -0400
++++ ckit-mlton/src/ast/type-util-sig.sml	2006-05-02 22:38:21.000000000 -0400
 @@ -1,10 +1,10 @@
  (* Copyright (c) 1998 by Lucent Technologies *)
  
@@ -340,7 +340,7 @@
 +(* end (* local *) *)
 diff -Naur ckit/src/ast/type-util.sml ckit-mlton/src/ast/type-util.sml
 --- ckit/src/ast/type-util.sml	2001-10-31 15:22:41.000000000 -0500
-+++ ckit-mlton/src/ast/type-util.sml	2005-08-17 19:41:36.000000000 -0400
++++ ckit-mlton/src/ast/type-util.sml	2006-05-02 22:38:21.000000000 -0400
 @@ -282,7 +282,8 @@
    fun isStructOrUnion tidtab ty =
      case reduceTypedef tidtab ty
@@ -393,7 +393,7 @@
  				  )
 diff -Naur ckit/src/ckit-lib.mlb ckit-mlton/src/ckit-lib.mlb
 --- ckit/src/ckit-lib.mlb	1969-12-31 19:00:00.000000000 -0500
-+++ ckit-mlton/src/ckit-lib.mlb	2005-11-21 11:29:39.000000000 -0500
++++ ckit-mlton/src/ckit-lib.mlb	2006-05-02 23:00:54.000000000 -0400
 @@ -0,0 +1,876 @@
 +
 +ann
@@ -1271,120 +1271,18541 @@
 +end
 +
 +end
+diff -Naur ckit/src/parser/grammar/c.grm.desc ckit-mlton/src/parser/grammar/c.grm.desc
+--- ckit/src/parser/grammar/c.grm.desc	1969-12-31 19:00:00.000000000 -0500
++++ ckit-mlton/src/parser/grammar/c.grm.desc	2006-05-02 23:00:53.000000000 -0400
+@@ -0,0 +1,10001 @@
++1 shift/reduce conflict
++
++error:  state 404: shift/reduce conflict (shift ELSE, reduce by rule 18)
++
++state 0:
++
++	translationUnit : . tu 
++
++
++	translationUnit	goto 420
++	tu	goto 1
++
++	.	reduce by rule 1
++
++
++state 1:
++
++	translationUnit : tu .  (reduce by rule 0)
++	tu : tu . externalDeclaration 
++
++	SEMICOLON	shift 42
++	LPAREN	shift 41
++	TIMES	shift 40
++	ID	shift 39
++	EXTERN	shift 38
++	AUTO	shift 37
++	STATIC	shift 36
++	REGISTER	shift 35
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPEDEF	shift 20
++	TYPE_NAME	shift 19
++
++	pointer	goto 18
++	notypeDeclarator	goto 17
++	notypeDirectDeclarator	goto 16
++	declarationSpecifiers	goto 15
++	declarationModifiers	goto 14
++	storageClassSpecifier	goto 13
++	typeSpecifier	goto 12
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 10
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	fDefDeclaration	goto 7
++	functionDefinition	goto 6
++	declaration	goto 5
++	declaration1	goto 4
++	externalDeclaration	goto 3
++	structOrUnion	goto 2
++
++	.	reduce by rule 0
++
++
++state 2:
++
++	structOrUnionSpecifier : structOrUnion . LCURLY structDeclarationList RCURLY 
++	structOrUnionSpecifier : structOrUnion . ID LCURLY structDeclarationList RCURLY 
++	structOrUnionSpecifier : structOrUnion . TYPE_NAME LCURLY structDeclarationList RCURLY 
++	structOrUnionSpecifier : structOrUnion . ID 
++	structOrUnionSpecifier : structOrUnion . TYPE_NAME 
++
++	LCURLY	shift 45
++	ID	shift 44
++	TYPE_NAME	shift 43
++
++
++	.	error
++
++
++state 3:
++
++	tu : tu externalDeclaration .  (reduce by rule 2)
++
++
++
++	.	reduce by rule 2
++
++
++state 4:
++
++	declaration : declaration1 . SEMICOLON 
++
++	SEMICOLON	shift 46
++
++
++	.	error
++
++
++state 5:
++
++	externalDeclaration : declaration .  (reduce by rule 3)
++
++
++
++	.	reduce by rule 3
++
++
++state 6:
++
++	externalDeclaration : functionDefinition .  (reduce by rule 5)
++
++
++
++	.	reduce by rule 5
++
++
++state 7:
++
++	functionDefinition : fDefDeclaration . compoundStatement 
++	functionDefinition : fDefDeclaration . declarationList compoundStatement 
++
++	LCURLY	shift 52
++	EXTERN	shift 38
++	AUTO	shift 37
++	STATIC	shift 36
++	REGISTER	shift 35
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPEDEF	shift 20
++	TYPE_NAME	shift 19
++
++	compoundStatement	goto 51
++	declarationSpecifiers	goto 50
++	declarationModifiers	goto 49
++	storageClassSpecifier	goto 13
++	typeSpecifier	goto 12
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 10
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	declarationList	goto 48
++	declaration	goto 47
++	declaration1	goto 4
++	structOrUnion	goto 2
++
++	.	error
++
++
++state 8:
++
++	typeSpecifier : structOrUnionSpecifier .  (reduce by rule 119)
++
++
++
++	.	reduce by rule 119
++
++
++state 9:
++
++	typeSpecifier : enumSpecifier .  (reduce by rule 120)
++
++
++
++	.	reduce by rule 120
++
++
++state 10:
++
++	declarationModifiers : typeQualifier .  (reduce by rule 110)
++
++
++
++	.	reduce by rule 110
++
++
++state 11:
++
++	typeSpecifier : typeSpecifierReserved .  (reduce by rule 118)
++
++
++
++	.	reduce by rule 118
++
++
++state 12:
++
++	declarationSpecifiers : typeSpecifier . reservedDeclarationSpecifier 
++
++
++	reservedDeclarationSpecifier	goto 53
++
++	.	reduce by rule 101
++
++
++state 13:
++
++	declarationModifiers : storageClassSpecifier .  (reduce by rule 108)
++
++
++
++	.	reduce by rule 108
++
++
++state 14:
++
++	declarationSpecifiers : declarationModifiers . typeSpecifier reservedDeclarationSpecifier 
++	declarationModifiers : declarationModifiers . storageClassSpecifier 
++	declarationModifiers : declarationModifiers . typeQualifier 
++	fDefDeclaration : declarationModifiers . notypeDeclarator 
++	declaration1 : declarationModifiers . notypeInitDeclaratorList 
++
++	LPAREN	shift 41
++	TIMES	shift 40
++	ID	shift 39
++	EXTERN	shift 38
++	AUTO	shift 37
++	STATIC	shift 36
++	REGISTER	shift 35
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPEDEF	shift 20
++	TYPE_NAME	shift 19
++
++	notypeInitDeclarator	goto 59
++	notypeInitDeclaratorList	goto 58
++	pointer	goto 18
++	notypeDeclarator	goto 57
++	notypeDirectDeclarator	goto 16
++	storageClassSpecifier	goto 56
++	typeSpecifier	goto 55
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 54
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	structOrUnion	goto 2
++
++	.	error
++
++
++state 15:
++
++	fDefDeclaration : declarationSpecifiers . declarator 
++	declaration1 : declarationSpecifiers .  (reduce by rule 23)
++	declaration1 : declarationSpecifiers . initDeclaratorList 
++
++	LPAREN	shift 68
++	TIMES	shift 40
++	ID	shift 39
++	TYPE_NAME	shift 67
++
++	initDeclarator	goto 66
++	initDeclaratorList	goto 65
++	pointer	goto 64
++	declarator	goto 63
++	aftertypeDeclarator	goto 62
++	notypeDeclarator	goto 61
++	aftertypeDirectDeclarator	goto 60
++	notypeDirectDeclarator	goto 16
++
++	.	reduce by rule 23
++
++
++state 16:
++
++	notypeDeclarator : notypeDirectDeclarator .  (reduce by rule 182)
++	notypeDirectDeclarator : notypeDirectDeclarator . LBRACE RBRACE 
++	notypeDirectDeclarator : notypeDirectDeclarator . LBRACE expr RBRACE 
++	notypeDirectDeclarator : notypeDirectDeclarator . LPAREN RPAREN 
++	notypeDirectDeclarator : notypeDirectDeclarator . LPAREN parameterTypeList RPAREN 
++	notypeDirectDeclarator : notypeDirectDeclarator . LPAREN identlist RPAREN 
++
++	LPAREN	shift 70
++	LBRACE	shift 69
++
++
++	.	reduce by rule 182
++
++
++state 17:
++
++	fDefDeclaration : notypeDeclarator .  (reduce by rule 218)
++
++
++
++	.	reduce by rule 218
++
++
++state 18:
++
++	notypeDeclarator : pointer . notypeDirectDeclarator 
++
++	LPAREN	shift 41
++	ID	shift 39
++
++	notypeDirectDeclarator	goto 71
++
++	.	error
++
++
++state 19:
++
++	typeSpecifier : TYPE_NAME .  (reduce by rule 121)
++
++
++
++	.	reduce by rule 121
++
++
++state 20:
++
++	storageClassSpecifier : TYPEDEF .  (reduce by rule 167)
++
++
++
++	.	reduce by rule 167
++
++
++state 21:
++
++	typeSpecifierReserved : VOID .  (reduce by rule 122)
++
++
++
++	.	reduce by rule 122
++
++
++state 22:
++
++	typeSpecifierReserved : SIGNED .  (reduce by rule 129)
++
++
++
++	.	reduce by rule 129
++
++
++state 23:
++
++	typeSpecifierReserved : UNSIGNED .  (reduce by rule 130)
++
++
++
++	.	reduce by rule 130
++
++
++state 24:
++
++	structOrUnion : UNION .  (reduce by rule 137)
++
++
++
++	.	reduce by rule 137
++
++
++state 25:
++
++	structOrUnion : STRUCT .  (reduce by rule 136)
++
++
++
++	.	reduce by rule 136
++
++
++state 26:
++
++	typeSpecifierReserved : SHORT .  (reduce by rule 124)
++
++
++
++	.	reduce by rule 124
++
++
++state 27:
++
++	typeSpecifierReserved : LONG .  (reduce by rule 126)
++
++
++
++	.	reduce by rule 126
++
++
++state 28:
++
++	typeSpecifierReserved : INT .  (reduce by rule 125)
++
++
++
++	.	reduce by rule 125
++
++
++state 29:
++
++	typeSpecifierReserved : FLOAT .  (reduce by rule 127)
++
++
++
++	.	reduce by rule 127
++
++
++state 30:
++
++	enumSpecifier : ENUM . LCURLY enumeratorList trailingComma RCURLY 
++	enumSpecifier : ENUM . ID LCURLY enumeratorList trailingComma RCURLY 
++	enumSpecifier : ENUM . TYPE_NAME LCURLY enumeratorList trailingComma RCURLY 
++	enumSpecifier : ENUM . ID 
++	enumSpecifier : ENUM . TYPE_NAME 
++
++	LCURLY	shift 74
++	ID	shift 73
++	TYPE_NAME	shift 72
++
++
++	.	error
++
++
++state 31:
++
++	typeSpecifierReserved : DOUBLE .  (reduce by rule 128)
++
++
++
++	.	reduce by rule 128
++
++
++state 32:
++
++	typeSpecifierReserved : CHAR .  (reduce by rule 123)
++
++
++
++	.	reduce by rule 123
++
++
++state 33:
++
++	typeQualifier : VOLATILE .  (reduce by rule 153)
++
++
++
++	.	reduce by rule 153
++
++
++state 34:
++
++	typeQualifier : CONST .  (reduce by rule 152)
++
++
++
++	.	reduce by rule 152
++
++
++state 35:
++
++	storageClassSpecifier : REGISTER .  (reduce by rule 166)
++
++
++
++	.	reduce by rule 166
++
++
++state 36:
++
++	storageClassSpecifier : STATIC .  (reduce by rule 164)
++
++
++
++	.	reduce by rule 164
++
++
++state 37:
++
++	storageClassSpecifier : AUTO .  (reduce by rule 165)
++
++
++
++	.	reduce by rule 165
++
++
++state 38:
++
++	storageClassSpecifier : EXTERN .  (reduce by rule 163)
++
++
++
++	.	reduce by rule 163
++
++
++state 39:
++
++	notypeDirectDeclarator : ID .  (reduce by rule 197)
++
++
++
++	.	reduce by rule 197
++
++
++state 40:
++
++	pointer : TIMES .  (reduce by rule 186)
++	pointer : TIMES . typeQualifierList 
++	pointer : TIMES . pointer 
++	pointer : TIMES . typeQualifierList pointer 
++
++	TIMES	shift 40
++	CONST	shift 34
++	VOLATILE	shift 33
++
++	pointer	goto 77
++	typeQualifier	goto 76
++	typeQualifierList	goto 75
++
++	.	reduce by rule 186
++
++
++state 41:
++
++	notypeDirectDeclarator : LPAREN . notypeDeclarator RPAREN 
++
++	LPAREN	shift 41
++	TIMES	shift 40
++	ID	shift 39
++
++	pointer	goto 18
++	notypeDeclarator	goto 78
++	notypeDirectDeclarator	goto 16
++
++	.	error
++
++
++state 42:
++
++	externalDeclaration : SEMICOLON .  (reduce by rule 4)
++
++
++
++	.	reduce by rule 4
++
++
++state 43:
++
++	structOrUnionSpecifier : structOrUnion TYPE_NAME . LCURLY structDeclarationList RCURLY 
++	structOrUnionSpecifier : structOrUnion TYPE_NAME .  (reduce by rule 135)
++
++	LCURLY	shift 79
++
++
++	.	reduce by rule 135
++
++
++state 44:
++
++	structOrUnionSpecifier : structOrUnion ID . LCURLY structDeclarationList RCURLY 
++	structOrUnionSpecifier : structOrUnion ID .  (reduce by rule 134)
++
++	LCURLY	shift 80
++
++
++	.	reduce by rule 134
++
++
++state 45:
++
++	structOrUnionSpecifier : structOrUnion LCURLY . structDeclarationList RCURLY 
++
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPE_NAME	shift 19
++
++	typeSpecifier	goto 85
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 76
++	typeQualifierList	goto 84
++	specifierQualifierList	goto 83
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	structOrUnion	goto 2
++	structDeclarationList	goto 82
++	structDeclaration	goto 81
++
++	.	error
++
++
++state 46:
++
++	declaration : declaration1 SEMICOLON .  (reduce by rule 22)
++
++
++
++	.	reduce by rule 22
++
++
++state 47:
++
++	declarationList : declaration .  (reduce by rule 214)
++
++
++
++	.	reduce by rule 214
++
++
++state 48:
++
++	declarationList : declarationList . declaration 
++	functionDefinition : fDefDeclaration declarationList . compoundStatement 
++
++	LCURLY	shift 52
++	EXTERN	shift 38
++	AUTO	shift 37
++	STATIC	shift 36
++	REGISTER	shift 35
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPEDEF	shift 20
++	TYPE_NAME	shift 19
++
++	compoundStatement	goto 87
++	declarationSpecifiers	goto 50
++	declarationModifiers	goto 49
++	storageClassSpecifier	goto 13
++	typeSpecifier	goto 12
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 10
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	declaration	goto 86
++	declaration1	goto 4
++	structOrUnion	goto 2
++
++	.	error
++
++
++state 49:
++
++	declarationSpecifiers : declarationModifiers . typeSpecifier reservedDeclarationSpecifier 
++	declarationModifiers : declarationModifiers . storageClassSpecifier 
++	declarationModifiers : declarationModifiers . typeQualifier 
++	declaration1 : declarationModifiers . notypeInitDeclaratorList 
++
++	LPAREN	shift 41
++	TIMES	shift 40
++	ID	shift 39
++	EXTERN	shift 38
++	AUTO	shift 37
++	STATIC	shift 36
++	REGISTER	shift 35
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPEDEF	shift 20
++	TYPE_NAME	shift 19
++
++	notypeInitDeclarator	goto 59
++	notypeInitDeclaratorList	goto 58
++	pointer	goto 18
++	notypeDeclarator	goto 88
++	notypeDirectDeclarator	goto 16
++	storageClassSpecifier	goto 56
++	typeSpecifier	goto 55
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 54
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	structOrUnion	goto 2
++
++	.	error
++
++
++state 50:
++
++	declaration1 : declarationSpecifiers .  (reduce by rule 23)
++	declaration1 : declarationSpecifiers . initDeclaratorList 
++
++	LPAREN	shift 68
++	TIMES	shift 40
++	ID	shift 39
++	TYPE_NAME	shift 67
++
++	initDeclarator	goto 66
++	initDeclaratorList	goto 65
++	pointer	goto 64
++	declarator	goto 89
++	aftertypeDeclarator	goto 62
++	notypeDeclarator	goto 61
++	aftertypeDirectDeclarator	goto 60
++	notypeDirectDeclarator	goto 16
++
++	.	reduce by rule 23
++
++
++state 51:
++
++	functionDefinition : fDefDeclaration compoundStatement .  (reduce by rule 221)
++
++
++
++	.	reduce by rule 221
++
++
++state 52:
++
++	compoundStatement : LCURLY . pushScope declarationList ostatementlist popScope RCURLY 
++	compoundStatement : LCURLY . ostatementlist RCURLY 
++
++	SEMICOLON	shift 125
++	LPAREN	shift 124
++	LCURLY	shift 52
++	RCURLY	reduce by rule 27
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 115
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	EXTERN	reduce by rule 245
++	AUTO	reduce by rule 245
++	STATIC	reduce by rule 245
++	REGISTER	reduce by rule 245
++	CONST	reduce by rule 245
++	VOLATILE	reduce by rule 245
++	IF	shift 110
++	FOR	shift 109
++	DO	shift 108
++	SWITCH	shift 107
++	CASE	shift 106
++	DEFAULT	shift 105
++	WHILE	shift 104
++	RETURN	shift 103
++	BREAK	shift 102
++	CONTINUE	shift 101
++	GOTO	shift 100
++	CHAR	reduce by rule 245
++	DOUBLE	reduce by rule 245
++	ENUM	reduce by rule 245
++	FLOAT	reduce by rule 245
++	INT	reduce by rule 245
++	LONG	reduce by rule 245
++	SHORT	reduce by rule 245
++	STRUCT	reduce by rule 245
++	UNION	reduce by rule 245
++	UNSIGNED	reduce by rule 245
++	SIGNED	reduce by rule 245
++	VOID	reduce by rule 245
++	SIZEOF	shift 99
++	TYPEDEF	reduce by rule 245
++	TYPE_NAME	reduce by rule 245
++
++	statement	goto 98
++	ostatementlist	goto 97
++	statementlist	goto 96
++	compoundStatement	goto 95
++	expr	goto 94
++	exprWComma	goto 93
++	unaryOperator	goto 92
++	pushScope	goto 91
++	strings	goto 90
++
++	.	error
++
++
++state 53:
++
++	declarationSpecifiers : typeSpecifier reservedDeclarationSpecifier .  (reduce by rule 99)
++	reservedDeclarationSpecifier : reservedDeclarationSpecifier . specifierQualifierReserved 
++	reservedDeclarationSpecifier : reservedDeclarationSpecifier . storageClassSpecifier 
++
++	EXTERN	shift 38
++	AUTO	shift 37
++	STATIC	shift 36
++	REGISTER	shift 35
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPEDEF	shift 20
++
++	specifierQualifierReserved	goto 131
++	storageClassSpecifier	goto 130
++	typeSpecifierReserved	goto 129
++	typeQualifier	goto 128
++	enumSpecifier	goto 127
++	structOrUnionSpecifier	goto 126
++	structOrUnion	goto 2
++
++	.	reduce by rule 99
++
++
++state 54:
++
++	declarationModifiers : declarationModifiers typeQualifier .  (reduce by rule 111)
++
++
++
++	.	reduce by rule 111
++
++
++state 55:
++
++	declarationSpecifiers : declarationModifiers typeSpecifier . reservedDeclarationSpecifier 
++
++
++	reservedDeclarationSpecifier	goto 132
++
++	.	reduce by rule 101
++
++
++state 56:
++
++	declarationModifiers : declarationModifiers storageClassSpecifier .  (reduce by rule 109)
++
++
++
++	.	reduce by rule 109
++
++
++state 57:
++
++	notypeInitDeclarator : notypeDeclarator .  (reduce by rule 176)
++	notypeInitDeclarator : notypeDeclarator . EQUALS initializer 
++	fDefDeclaration : declarationModifiers notypeDeclarator .  (reduce by rule 220)
++
++	SEMICOLON	reduce by rule 176
++	LCURLY	reduce by rule 220
++	COMMA	reduce by rule 176
++	EQUALS	shift 133
++	EXTERN	reduce by rule 220
++	AUTO	reduce by rule 220
++	STATIC	reduce by rule 220
++	REGISTER	reduce by rule 220
++	CONST	reduce by rule 220
++	VOLATILE	reduce by rule 220
++	CHAR	reduce by rule 220
++	DOUBLE	reduce by rule 220
++	ENUM	reduce by rule 220
++	FLOAT	reduce by rule 220
++	INT	reduce by rule 220
++	LONG	reduce by rule 220
++	SHORT	reduce by rule 220
++	STRUCT	reduce by rule 220
++	UNION	reduce by rule 220
++	UNSIGNED	reduce by rule 220
++	SIGNED	reduce by rule 220
++	VOID	reduce by rule 220
++	TYPEDEF	reduce by rule 220
++	TYPE_NAME	reduce by rule 220
++
++
++	.	error
++
++
++state 58:
++
++	notypeInitDeclaratorList : notypeInitDeclaratorList . COMMA initDeclarator 
++	declaration1 : declarationModifiers notypeInitDeclaratorList .  (reduce by rule 25)
++
++	COMMA	shift 134
++
++
++	.	reduce by rule 25
++
++
++state 59:
++
++	notypeInitDeclaratorList : notypeInitDeclarator .  (reduce by rule 174)
++
++
++
++	.	reduce by rule 174
++
++
++state 60:
++
++	aftertypeDeclarator : aftertypeDirectDeclarator .  (reduce by rule 180)
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator . LBRACE RBRACE 
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator . LBRACE expr RBRACE 
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator . LPAREN RPAREN 
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator . LPAREN parameterTypeList RPAREN 
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator . LPAREN identlist RPAREN 
++
++	LPAREN	shift 136
++	LBRACE	shift 135
++
++
++	.	reduce by rule 180
++
++
++state 61:
++
++	declarator : notypeDeclarator .  (reduce by rule 179)
++
++
++
++	.	reduce by rule 179
++
++
++state 62:
++
++	declarator : aftertypeDeclarator .  (reduce by rule 178)
++
++
++
++	.	reduce by rule 178
++
++
++state 63:
++
++	initDeclarator : declarator .  (reduce by rule 172)
++	initDeclarator : declarator . EQUALS initializer 
++	fDefDeclaration : declarationSpecifiers declarator .  (reduce by rule 219)
++
++	SEMICOLON	reduce by rule 172
++	LCURLY	reduce by rule 219
++	COMMA	reduce by rule 172
++	EQUALS	shift 137
++	EXTERN	reduce by rule 219
++	AUTO	reduce by rule 219
++	STATIC	reduce by rule 219
++	REGISTER	reduce by rule 219
++	CONST	reduce by rule 219
++	VOLATILE	reduce by rule 219
++	CHAR	reduce by rule 219
++	DOUBLE	reduce by rule 219
++	ENUM	reduce by rule 219
++	FLOAT	reduce by rule 219
++	INT	reduce by rule 219
++	LONG	reduce by rule 219
++	SHORT	reduce by rule 219
++	STRUCT	reduce by rule 219
++	UNION	reduce by rule 219
++	UNSIGNED	reduce by rule 219
++	SIGNED	reduce by rule 219
++	VOID	reduce by rule 219
++	TYPEDEF	reduce by rule 219
++	TYPE_NAME	reduce by rule 219
++
++
++	.	error
++
++
++state 64:
++
++	aftertypeDeclarator : pointer . aftertypeDirectDeclarator 
++	notypeDeclarator : pointer . notypeDirectDeclarator 
++
++	LPAREN	shift 68
++	ID	shift 39
++	TYPE_NAME	shift 67
++
++	aftertypeDirectDeclarator	goto 138
++	notypeDirectDeclarator	goto 71
++
++	.	error
++
++
++state 65:
++
++	initDeclaratorList : initDeclaratorList . COMMA initDeclarator 
++	declaration1 : declarationSpecifiers initDeclaratorList .  (reduce by rule 24)
++
++	COMMA	shift 139
++
++
++	.	reduce by rule 24
++
++
++state 66:
++
++	initDeclaratorList : initDeclarator .  (reduce by rule 170)
++
++
++
++	.	reduce by rule 170
++
++
++state 67:
++
++	aftertypeDirectDeclarator : TYPE_NAME .  (reduce by rule 190)
++
++
++
++	.	reduce by rule 190
++
++
++state 68:
++
++	aftertypeDirectDeclarator : LPAREN . aftertypeDeclarator RPAREN 
++	notypeDirectDeclarator : LPAREN . notypeDeclarator RPAREN 
++
++	LPAREN	shift 68
++	TIMES	shift 40
++	ID	shift 39
++	TYPE_NAME	shift 67
++
++	pointer	goto 64
++	aftertypeDeclarator	goto 140
++	notypeDeclarator	goto 78
++	aftertypeDirectDeclarator	goto 60
++	notypeDirectDeclarator	goto 16
++
++	.	error
++
++
++state 69:
++
++	notypeDirectDeclarator : notypeDirectDeclarator LBRACE . RBRACE 
++	notypeDirectDeclarator : notypeDirectDeclarator LBRACE . expr RBRACE 
++
++	LPAREN	shift 124
++	RBRACE	shift 143
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 141
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 70:
++
++	notypeDirectDeclarator : notypeDirectDeclarator LPAREN . RPAREN 
++	notypeDirectDeclarator : notypeDirectDeclarator LPAREN . parameterTypeList RPAREN 
++	notypeDirectDeclarator : notypeDirectDeclarator LPAREN . identlist RPAREN 
++
++	RPAREN	shift 151
++	ID	shift 150
++	EXTERN	shift 38
++	AUTO	shift 37
++	STATIC	shift 36
++	REGISTER	shift 35
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPEDEF	shift 20
++	TYPE_NAME	shift 19
++
++	declarationSpecifiers	goto 149
++	declarationModifiers	goto 148
++	storageClassSpecifier	goto 13
++	typeSpecifier	goto 12
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 10
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	identlist	goto 147
++	parameterList	goto 146
++	parameterTypeList	goto 145
++	parameterDeclaration	goto 144
++	structOrUnion	goto 2
++
++	.	error
++
++
++state 71:
++
++	notypeDeclarator : pointer notypeDirectDeclarator .  (reduce by rule 183)
++	notypeDirectDeclarator : notypeDirectDeclarator . LBRACE RBRACE 
++	notypeDirectDeclarator : notypeDirectDeclarator . LBRACE expr RBRACE 
++	notypeDirectDeclarator : notypeDirectDeclarator . LPAREN RPAREN 
++	notypeDirectDeclarator : notypeDirectDeclarator . LPAREN parameterTypeList RPAREN 
++	notypeDirectDeclarator : notypeDirectDeclarator . LPAREN identlist RPAREN 
++
++	LPAREN	shift 70
++	LBRACE	shift 69
++
++
++	.	reduce by rule 183
++
++
++state 72:
++
++	enumSpecifier : ENUM TYPE_NAME . LCURLY enumeratorList trailingComma RCURLY 
++	enumSpecifier : ENUM TYPE_NAME .  (reduce by rule 158)
++
++	LCURLY	shift 152
++
++
++	.	reduce by rule 158
++
++
++state 73:
++
++	enumSpecifier : ENUM ID . LCURLY enumeratorList trailingComma RCURLY 
++	enumSpecifier : ENUM ID .  (reduce by rule 157)
++
++	LCURLY	shift 153
++
++
++	.	reduce by rule 157
++
++
++state 74:
++
++	enumSpecifier : ENUM LCURLY . enumeratorList trailingComma RCURLY 
++
++	ID	shift 156
++
++	enumeratorList	goto 155
++	enumerator	goto 154
++
++	.	error
++
++
++state 75:
++
++	pointer : TIMES typeQualifierList .  (reduce by rule 187)
++	pointer : TIMES typeQualifierList . pointer 
++
++	TIMES	shift 40
++
++	pointer	goto 157
++
++	.	reduce by rule 187
++
++
++state 76:
++
++	typeQualifierList : typeQualifier .  (reduce by rule 116)
++	typeQualifierList : typeQualifier . typeQualifierList 
++
++	CONST	shift 34
++	VOLATILE	shift 33
++
++	typeQualifier	goto 76
++	typeQualifierList	goto 158
++
++	.	reduce by rule 116
++
++
++state 77:
++
++	pointer : TIMES pointer .  (reduce by rule 188)
++
++
++
++	.	reduce by rule 188
++
++
++state 78:
++
++	notypeDirectDeclarator : LPAREN notypeDeclarator . RPAREN 
++
++	RPAREN	shift 159
++
++
++	.	error
++
++
++state 79:
++
++	structOrUnionSpecifier : structOrUnion TYPE_NAME LCURLY . structDeclarationList RCURLY 
++
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPE_NAME	shift 19
++
++	typeSpecifier	goto 85
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 76
++	typeQualifierList	goto 84
++	specifierQualifierList	goto 83
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	structOrUnion	goto 2
++	structDeclarationList	goto 160
++	structDeclaration	goto 81
++
++	.	error
++
++
++state 80:
++
++	structOrUnionSpecifier : structOrUnion ID LCURLY . structDeclarationList RCURLY 
++
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPE_NAME	shift 19
++
++	typeSpecifier	goto 85
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 76
++	typeQualifierList	goto 84
++	specifierQualifierList	goto 83
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	structOrUnion	goto 2
++	structDeclarationList	goto 161
++	structDeclaration	goto 81
++
++	.	error
++
++
++state 81:
++
++	structDeclarationList : structDeclaration .  (reduce by rule 138)
++
++
++
++	.	reduce by rule 138
++
++
++state 82:
++
++	structOrUnionSpecifier : structOrUnion LCURLY structDeclarationList . RCURLY 
++	structDeclarationList : structDeclarationList . structDeclaration 
++
++	RCURLY	shift 163
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPE_NAME	shift 19
++
++	typeSpecifier	goto 85
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 76
++	typeQualifierList	goto 84
++	specifierQualifierList	goto 83
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	structOrUnion	goto 2
++	structDeclaration	goto 162
++
++	.	error
++
++
++state 83:
++
++	structDeclaration : specifierQualifierList . structDeclaratorList SEMICOLON 
++
++	COLON	shift 167
++	LPAREN	shift 68
++	TIMES	shift 40
++	ID	shift 39
++	TYPE_NAME	shift 67
++
++	pointer	goto 64
++	declarator	goto 166
++	aftertypeDeclarator	goto 62
++	notypeDeclarator	goto 61
++	aftertypeDirectDeclarator	goto 60
++	notypeDirectDeclarator	goto 16
++	structDeclarator	goto 165
++	structDeclaratorList	goto 164
++
++	.	error
++
++
++state 84:
++
++	specifierQualifierList : typeQualifierList . typeSpecifier reservedSpecifierQualifiers 
++	structDeclaration : typeQualifierList . notypeStructDeclaratorList SEMICOLON 
++
++	COLON	shift 172
++	LPAREN	shift 41
++	TIMES	shift 40
++	ID	shift 39
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPE_NAME	shift 19
++
++	pointer	goto 18
++	notypeDeclarator	goto 171
++	notypeDirectDeclarator	goto 16
++	typeSpecifier	goto 170
++	typeSpecifierReserved	goto 11
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	structOrUnion	goto 2
++	notypeStructDeclarator	goto 169
++	notypeStructDeclaratorList	goto 168
++
++	.	error
++
++
++state 85:
++
++	specifierQualifierList : typeSpecifier . reservedSpecifierQualifiers 
++
++
++	reservedSpecifierQualifiers	goto 173
++
++	.	reduce by rule 114
++
++
++state 86:
++
++	declarationList : declarationList declaration .  (reduce by rule 215)
++
++
++
++	.	reduce by rule 215
++
++
++state 87:
++
++	functionDefinition : fDefDeclaration declarationList compoundStatement .  (reduce by rule 222)
++
++
++
++	.	reduce by rule 222
++
++
++state 88:
++
++	notypeInitDeclarator : notypeDeclarator .  (reduce by rule 176)
++	notypeInitDeclarator : notypeDeclarator . EQUALS initializer 
++
++	EQUALS	shift 133
++
++
++	.	reduce by rule 176
++
++
++state 89:
++
++	initDeclarator : declarator .  (reduce by rule 172)
++	initDeclarator : declarator . EQUALS initializer 
++
++	EQUALS	shift 137
++
++
++	.	reduce by rule 172
++
++
++state 90:
++
++	expr : strings .  (reduce by rule 88)
++
++
++
++	.	reduce by rule 88
++
++
++state 91:
++
++	compoundStatement : LCURLY pushScope . declarationList ostatementlist popScope RCURLY 
++
++	EXTERN	shift 38
++	AUTO	shift 37
++	STATIC	shift 36
++	REGISTER	shift 35
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPEDEF	shift 20
++	TYPE_NAME	shift 19
++
++	declarationSpecifiers	goto 50
++	declarationModifiers	goto 49
++	storageClassSpecifier	goto 13
++	typeSpecifier	goto 12
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 10
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	declarationList	goto 174
++	declaration	goto 47
++	declaration1	goto 4
++	structOrUnion	goto 2
++
++	.	error
++
++
++state 92:
++
++	expr : unaryOperator . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 175
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 93:
++
++	statement : exprWComma . SEMICOLON 
++	exprWComma : exprWComma . COMMA expr 
++
++	SEMICOLON	shift 177
++	COMMA	shift 176
++
++
++	.	error
++
++
++state 94:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++	exprWComma : expr .  (reduce by rule 91)
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 91
++
++
++state 95:
++
++	statement : compoundStatement .  (reduce by rule 14)
++
++
++
++	.	reduce by rule 14
++
++
++state 96:
++
++	ostatementlist : statementlist .  (reduce by rule 26)
++	statementlist : statementlist . statement 
++
++	SEMICOLON	shift 125
++	LPAREN	shift 124
++	LCURLY	shift 52
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 115
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	IF	shift 110
++	FOR	shift 109
++	DO	shift 108
++	SWITCH	shift 107
++	CASE	shift 106
++	DEFAULT	shift 105
++	WHILE	shift 104
++	RETURN	shift 103
++	BREAK	shift 102
++	CONTINUE	shift 101
++	GOTO	shift 100
++	SIZEOF	shift 99
++
++	statement	goto 214
++	compoundStatement	goto 95
++	expr	goto 94
++	exprWComma	goto 93
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	reduce by rule 26
++
++
++state 97:
++
++	compoundStatement : LCURLY ostatementlist . RCURLY 
++
++	RCURLY	shift 215
++
++
++	.	error
++
++
++state 98:
++
++	statementlist : statement .  (reduce by rule 28)
++
++
++
++	.	reduce by rule 28
++
++
++state 99:
++
++	expr : SIZEOF . expr 
++	expr : SIZEOF . LPAREN typeName RPAREN 
++
++	LPAREN	shift 217
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 216
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 100:
++
++	statement : GOTO . ID SEMICOLON 
++
++	ID	shift 218
++
++
++	.	error
++
++
++state 101:
++
++	statement : CONTINUE . SEMICOLON 
++
++	SEMICOLON	shift 219
++
++
++	.	error
++
++
++state 102:
++
++	statement : BREAK . SEMICOLON 
++
++	SEMICOLON	shift 220
++
++
++	.	error
++
++
++state 103:
++
++	statement : RETURN . opExpr SEMICOLON 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 94
++	opExpr	goto 222
++	exprWComma	goto 221
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	reduce by rule 93
++
++
++state 104:
++
++	statement : WHILE . LPAREN exprWComma RPAREN statement 
++
++	LPAREN	shift 223
++
++
++	.	error
++
++
++state 105:
++
++	statement : DEFAULT . COLON statement 
++
++	COLON	shift 224
++
++
++	.	error
++
++
++state 106:
++
++	statement : CASE . exprWComma COLON statement 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 94
++	exprWComma	goto 225
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 107:
++
++	statement : SWITCH . LPAREN exprWComma RPAREN statement 
++
++	LPAREN	shift 226
++
++
++	.	error
++
++
++state 108:
++
++	statement : DO . statement WHILE LPAREN exprWComma RPAREN SEMICOLON 
++
++	SEMICOLON	shift 125
++	LPAREN	shift 124
++	LCURLY	shift 52
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 115
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	IF	shift 110
++	FOR	shift 109
++	DO	shift 108
++	SWITCH	shift 107
++	CASE	shift 106
++	DEFAULT	shift 105
++	WHILE	shift 104
++	RETURN	shift 103
++	BREAK	shift 102
++	CONTINUE	shift 101
++	GOTO	shift 100
++	SIZEOF	shift 99
++
++	statement	goto 227
++	compoundStatement	goto 95
++	expr	goto 94
++	exprWComma	goto 93
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 109:
++
++	statement : FOR . LPAREN opExpr SEMICOLON opExpr SEMICOLON opExpr RPAREN statement 
++
++	LPAREN	shift 228
++
++
++	.	error
++
++
++state 110:
++
++	statement : IF . LPAREN exprWComma RPAREN statement 
++	statement : IF . LPAREN exprWComma RPAREN statement ELSE statement 
++
++	LPAREN	shift 229
++
++
++	.	error
++
++
++state 111:
++
++	expr : CCONST .  (reduce by rule 86)
++
++
++
++	.	reduce by rule 86
++
++
++state 112:
++
++	strings : STRING .  (reduce by rule 89)
++	strings : STRING . strings 
++
++	STRING	shift 112
++
++	strings	goto 230
++
++	.	reduce by rule 89
++
++
++state 113:
++
++	expr : REALNUM .  (reduce by rule 85)
++
++
++
++	.	reduce by rule 85
++
++
++state 114:
++
++	expr : DECNUM .  (reduce by rule 84)
++
++
++
++	.	reduce by rule 84
++
++
++state 115:
++
++	statement : ID . COLON statement 
++	expr : ID .  (reduce by rule 87)
++
++	COLON	shift 231
++
++
++	.	reduce by rule 87
++
++
++state 116:
++
++	expr : DEC . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 232
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 117:
++
++	expr : INC . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 233
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 118:
++
++	unaryOperator : TIMES .  (reduce by rule 33)
++
++
++
++	.	reduce by rule 33
++
++
++state 119:
++
++	unaryOperator : BANG .  (reduce by rule 37)
++
++
++
++	.	reduce by rule 37
++
++
++state 120:
++
++	unaryOperator : MINUS .  (reduce by rule 35)
++
++
++
++	.	reduce by rule 35
++
++
++state 121:
++
++	unaryOperator : PLUS .  (reduce by rule 34)
++
++
++
++	.	reduce by rule 34
++
++
++state 122:
++
++	unaryOperator : TILDE .  (reduce by rule 36)
++
++
++
++	.	reduce by rule 36
++
++
++state 123:
++
++	unaryOperator : AMP .  (reduce by rule 32)
++
++
++
++	.	reduce by rule 32
++
++
++state 124:
++
++	expr : LPAREN . typeName RPAREN expr 
++	expr : LPAREN . exprWComma RPAREN 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	SIZEOF	shift 99
++	TYPE_NAME	shift 19
++
++	expr	goto 94
++	exprWComma	goto 237
++	unaryOperator	goto 92
++	typeName	goto 236
++	typeSpecifier	goto 85
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 76
++	typeQualifierList	goto 235
++	specifierQualifierList	goto 234
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	structOrUnion	goto 2
++	strings	goto 90
++
++	.	error
++
++
++state 125:
++
++	statement : SEMICOLON .  (reduce by rule 21)
++
++
++
++	.	reduce by rule 21
++
++
++state 126:
++
++	specifierQualifierReserved : structOrUnionSpecifier .  (reduce by rule 106)
++
++
++
++	.	reduce by rule 106
++
++
++state 127:
++
++	specifierQualifierReserved : enumSpecifier .  (reduce by rule 107)
++
++
++
++	.	reduce by rule 107
++
++
++state 128:
++
++	specifierQualifierReserved : typeQualifier .  (reduce by rule 105)
++
++
++
++	.	reduce by rule 105
++
++
++state 129:
++
++	specifierQualifierReserved : typeSpecifierReserved .  (reduce by rule 104)
++
++
++
++	.	reduce by rule 104
++
++
++state 130:
++
++	reservedDeclarationSpecifier : reservedDeclarationSpecifier storageClassSpecifier .  (reduce by rule 103)
++
++
++
++	.	reduce by rule 103
++
++
++state 131:
++
++	reservedDeclarationSpecifier : reservedDeclarationSpecifier specifierQualifierReserved .  (reduce by rule 102)
++
++
++
++	.	reduce by rule 102
++
++
++state 132:
++
++	declarationSpecifiers : declarationModifiers typeSpecifier reservedDeclarationSpecifier .  (reduce by rule 100)
++	reservedDeclarationSpecifier : reservedDeclarationSpecifier . specifierQualifierReserved 
++	reservedDeclarationSpecifier : reservedDeclarationSpecifier . storageClassSpecifier 
++
++	EXTERN	shift 38
++	AUTO	shift 37
++	STATIC	shift 36
++	REGISTER	shift 35
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPEDEF	shift 20
++
++	specifierQualifierReserved	goto 131
++	storageClassSpecifier	goto 130
++	typeSpecifierReserved	goto 129
++	typeQualifier	goto 128
++	enumSpecifier	goto 127
++	structOrUnionSpecifier	goto 126
++	structOrUnion	goto 2
++
++	.	reduce by rule 100
++
++
++state 133:
++
++	notypeInitDeclarator : notypeDeclarator EQUALS . initializer 
++
++	LPAREN	shift 124
++	LCURLY	shift 240
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 239
++	unaryOperator	goto 92
++	initializer	goto 238
++	strings	goto 90
++
++	.	error
++
++
++state 134:
++
++	notypeInitDeclaratorList : notypeInitDeclaratorList COMMA . initDeclarator 
++
++	LPAREN	shift 68
++	TIMES	shift 40
++	ID	shift 39
++	TYPE_NAME	shift 67
++
++	initDeclarator	goto 241
++	pointer	goto 64
++	declarator	goto 89
++	aftertypeDeclarator	goto 62
++	notypeDeclarator	goto 61
++	aftertypeDirectDeclarator	goto 60
++	notypeDirectDeclarator	goto 16
++
++	.	error
++
++
++state 135:
++
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator LBRACE . RBRACE 
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator LBRACE . expr RBRACE 
++
++	LPAREN	shift 124
++	RBRACE	shift 243
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 242
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 136:
++
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator LPAREN . RPAREN 
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator LPAREN . parameterTypeList RPAREN 
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator LPAREN . identlist RPAREN 
++
++	RPAREN	shift 246
++	ID	shift 150
++	EXTERN	shift 38
++	AUTO	shift 37
++	STATIC	shift 36
++	REGISTER	shift 35
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPEDEF	shift 20
++	TYPE_NAME	shift 19
++
++	declarationSpecifiers	goto 149
++	declarationModifiers	goto 148
++	storageClassSpecifier	goto 13
++	typeSpecifier	goto 12
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 10
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	identlist	goto 245
++	parameterList	goto 146
++	parameterTypeList	goto 244
++	parameterDeclaration	goto 144
++	structOrUnion	goto 2
++
++	.	error
++
++
++state 137:
++
++	initDeclarator : declarator EQUALS . initializer 
++
++	LPAREN	shift 124
++	LCURLY	shift 240
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 239
++	unaryOperator	goto 92
++	initializer	goto 247
++	strings	goto 90
++
++	.	error
++
++
++state 138:
++
++	aftertypeDeclarator : pointer aftertypeDirectDeclarator .  (reduce by rule 181)
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator . LBRACE RBRACE 
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator . LBRACE expr RBRACE 
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator . LPAREN RPAREN 
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator . LPAREN parameterTypeList RPAREN 
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator . LPAREN identlist RPAREN 
++
++	LPAREN	shift 136
++	LBRACE	shift 135
++
++
++	.	reduce by rule 181
++
++
++state 139:
++
++	initDeclaratorList : initDeclaratorList COMMA . initDeclarator 
++
++	LPAREN	shift 68
++	TIMES	shift 40
++	ID	shift 39
++	TYPE_NAME	shift 67
++
++	initDeclarator	goto 248
++	pointer	goto 64
++	declarator	goto 89
++	aftertypeDeclarator	goto 62
++	notypeDeclarator	goto 61
++	aftertypeDirectDeclarator	goto 60
++	notypeDirectDeclarator	goto 16
++
++	.	error
++
++
++state 140:
++
++	aftertypeDirectDeclarator : LPAREN aftertypeDeclarator . RPAREN 
++
++	RPAREN	shift 249
++
++
++	.	error
++
++
++state 141:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++	notypeDirectDeclarator : notypeDirectDeclarator LBRACE expr . RBRACE 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	RBRACE	shift 250
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	error
++
++
++state 142:
++
++	expr : ID .  (reduce by rule 87)
++
++
++
++	.	reduce by rule 87
++
++
++state 143:
++
++	notypeDirectDeclarator : notypeDirectDeclarator LBRACE RBRACE .  (reduce by rule 199)
++
++
++
++	.	reduce by rule 199
++
++
++state 144:
++
++	parameterList : parameterDeclaration .  (reduce by rule 237)
++
++
++
++	.	reduce by rule 237
++
++
++state 145:
++
++	notypeDirectDeclarator : notypeDirectDeclarator LPAREN parameterTypeList . RPAREN 
++
++	RPAREN	shift 251
++
++
++	.	error
++
++
++state 146:
++
++	parameterList : parameterList . COMMA parameterDeclaration 
++	parameterTypeList : parameterList .  (reduce by rule 235)
++	parameterTypeList : parameterList . COMMA ELIPSIS 
++
++	COMMA	shift 252
++
++
++	.	reduce by rule 235
++
++
++state 147:
++
++	notypeDirectDeclarator : notypeDirectDeclarator LPAREN identlist . RPAREN 
++	identlist : identlist . COMMA ID 
++
++	RPAREN	shift 254
++	COMMA	shift 253
++
++
++	.	error
++
++
++state 148:
++
++	declarationSpecifiers : declarationModifiers . typeSpecifier reservedDeclarationSpecifier 
++	declarationModifiers : declarationModifiers . storageClassSpecifier 
++	declarationModifiers : declarationModifiers . typeQualifier 
++	parameterDeclaration : declarationModifiers . notypeDeclarator 
++	parameterDeclaration : declarationModifiers . abstractDeclarator 
++
++	LPAREN	shift 260
++	LBRACE	shift 259
++	TIMES	shift 40
++	ID	shift 39
++	EXTERN	shift 38
++	AUTO	shift 37
++	STATIC	shift 36
++	REGISTER	shift 35
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPEDEF	shift 20
++	TYPE_NAME	shift 19
++
++	abstractDeclarator	goto 258
++	directAbstractDeclarator	goto 257
++	pointer	goto 256
++	notypeDeclarator	goto 255
++	notypeDirectDeclarator	goto 16
++	storageClassSpecifier	goto 56
++	typeSpecifier	goto 55
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 54
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	structOrUnion	goto 2
++
++	.	error
++
++
++state 149:
++
++	parameterDeclaration : declarationSpecifiers . notypeDeclarator 
++	parameterDeclaration : declarationSpecifiers . parmDeclarator 
++	parameterDeclaration : declarationSpecifiers .  (reduce by rule 241)
++	parameterDeclaration : declarationSpecifiers . abstractDeclarator 
++
++	LPAREN	shift 260
++	LBRACE	shift 259
++	TIMES	shift 40
++	ID	shift 39
++	TYPE_NAME	shift 266
++
++	abstractDeclarator	goto 265
++	directAbstractDeclarator	goto 257
++	pointer	goto 264
++	notypeDeclarator	goto 263
++	parmDeclarator	goto 262
++	notypeDirectDeclarator	goto 16
++	parmDirectDeclarator	goto 261
++
++	.	reduce by rule 241
++
++
++state 150:
++
++	identlist : ID .  (reduce by rule 216)
++
++
++
++	.	reduce by rule 216
++
++
++state 151:
++
++	notypeDirectDeclarator : notypeDirectDeclarator LPAREN RPAREN .  (reduce by rule 201)
++
++
++
++	.	reduce by rule 201
++
++
++state 152:
++
++	enumSpecifier : ENUM TYPE_NAME LCURLY . enumeratorList trailingComma RCURLY 
++
++	ID	shift 156
++
++	enumeratorList	goto 267
++	enumerator	goto 154
++
++	.	error
++
++
++state 153:
++
++	enumSpecifier : ENUM ID LCURLY . enumeratorList trailingComma RCURLY 
++
++	ID	shift 156
++
++	enumeratorList	goto 268
++	enumerator	goto 154
++
++	.	error
++
++
++state 154:
++
++	enumeratorList : enumerator .  (reduce by rule 160)
++
++
++
++	.	reduce by rule 160
++
++
++state 155:
++
++	enumeratorList : enumeratorList . COMMA enumerator 
++	enumSpecifier : ENUM LCURLY enumeratorList . trailingComma RCURLY 
++
++	COMMA	shift 270
++
++	trailingComma	goto 269
++
++	.	reduce by rule 168
++
++
++state 156:
++
++	enumerator : ID .  (reduce by rule 161)
++	enumerator : ID . EQUALS expr 
++
++	EQUALS	shift 271
++
++
++	.	reduce by rule 161
++
++
++state 157:
++
++	pointer : TIMES typeQualifierList pointer .  (reduce by rule 189)
++
++
++
++	.	reduce by rule 189
++
++
++state 158:
++
++	typeQualifierList : typeQualifier typeQualifierList .  (reduce by rule 117)
++
++
++
++	.	reduce by rule 117
++
++
++state 159:
++
++	notypeDirectDeclarator : LPAREN notypeDeclarator RPAREN .  (reduce by rule 198)
++
++
++
++	.	reduce by rule 198
++
++
++state 160:
++
++	structOrUnionSpecifier : structOrUnion TYPE_NAME LCURLY structDeclarationList . RCURLY 
++	structDeclarationList : structDeclarationList . structDeclaration 
++
++	RCURLY	shift 272
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPE_NAME	shift 19
++
++	typeSpecifier	goto 85
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 76
++	typeQualifierList	goto 84
++	specifierQualifierList	goto 83
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	structOrUnion	goto 2
++	structDeclaration	goto 162
++
++	.	error
++
++
++state 161:
++
++	structOrUnionSpecifier : structOrUnion ID LCURLY structDeclarationList . RCURLY 
++	structDeclarationList : structDeclarationList . structDeclaration 
++
++	RCURLY	shift 273
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPE_NAME	shift 19
++
++	typeSpecifier	goto 85
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 76
++	typeQualifierList	goto 84
++	specifierQualifierList	goto 83
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	structOrUnion	goto 2
++	structDeclaration	goto 162
++
++	.	error
++
++
++state 162:
++
++	structDeclarationList : structDeclarationList structDeclaration .  (reduce by rule 139)
++
++
++
++	.	reduce by rule 139
++
++
++state 163:
++
++	structOrUnionSpecifier : structOrUnion LCURLY structDeclarationList RCURLY .  (reduce by rule 131)
++
++
++
++	.	reduce by rule 131
++
++
++state 164:
++
++	structDeclaratorList : structDeclaratorList . COMMA structDeclarator 
++	structDeclaration : specifierQualifierList structDeclaratorList . SEMICOLON 
++
++	SEMICOLON	shift 275
++	COMMA	shift 274
++
++
++	.	error
++
++
++state 165:
++
++	structDeclaratorList : structDeclarator .  (reduce by rule 142)
++
++
++
++	.	reduce by rule 142
++
++
++state 166:
++
++	structDeclarator : declarator .  (reduce by rule 146)
++	structDeclarator : declarator . COLON expr 
++
++	COLON	shift 276
++
++
++	.	reduce by rule 146
++
++
++state 167:
++
++	structDeclarator : COLON . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 277
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 168:
++
++	notypeStructDeclaratorList : notypeStructDeclaratorList . COMMA structDeclarator 
++	structDeclaration : typeQualifierList notypeStructDeclaratorList . SEMICOLON 
++
++	SEMICOLON	shift 279
++	COMMA	shift 278
++
++
++	.	error
++
++
++state 169:
++
++	notypeStructDeclaratorList : notypeStructDeclarator .  (reduce by rule 144)
++
++
++
++	.	reduce by rule 144
++
++
++state 170:
++
++	specifierQualifierList : typeQualifierList typeSpecifier . reservedSpecifierQualifiers 
++
++
++	reservedSpecifierQualifiers	goto 280
++
++	.	reduce by rule 114
++
++
++state 171:
++
++	notypeStructDeclarator : notypeDeclarator .  (reduce by rule 149)
++	notypeStructDeclarator : notypeDeclarator . COLON expr 
++
++	COLON	shift 281
++
++
++	.	reduce by rule 149
++
++
++state 172:
++
++	notypeStructDeclarator : COLON . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 282
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 173:
++
++	reservedSpecifierQualifiers : reservedSpecifierQualifiers . specifierQualifierReserved 
++	specifierQualifierList : typeSpecifier reservedSpecifierQualifiers .  (reduce by rule 112)
++
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++
++	specifierQualifierReserved	goto 283
++	typeSpecifierReserved	goto 129
++	typeQualifier	goto 128
++	enumSpecifier	goto 127
++	structOrUnionSpecifier	goto 126
++	structOrUnion	goto 2
++
++	.	reduce by rule 112
++
++
++state 174:
++
++	compoundStatement : LCURLY pushScope declarationList . ostatementlist popScope RCURLY 
++	declarationList : declarationList . declaration 
++
++	SEMICOLON	shift 125
++	LPAREN	shift 124
++	LCURLY	shift 52
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 115
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	EXTERN	shift 38
++	AUTO	shift 37
++	STATIC	shift 36
++	REGISTER	shift 35
++	CONST	shift 34
++	VOLATILE	shift 33
++	IF	shift 110
++	FOR	shift 109
++	DO	shift 108
++	SWITCH	shift 107
++	CASE	shift 106
++	DEFAULT	shift 105
++	WHILE	shift 104
++	RETURN	shift 103
++	BREAK	shift 102
++	CONTINUE	shift 101
++	GOTO	shift 100
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	SIZEOF	shift 99
++	TYPEDEF	shift 20
++	TYPE_NAME	shift 19
++
++	statement	goto 98
++	ostatementlist	goto 284
++	statementlist	goto 96
++	compoundStatement	goto 95
++	expr	goto 94
++	exprWComma	goto 93
++	unaryOperator	goto 92
++	declarationSpecifiers	goto 50
++	declarationModifiers	goto 49
++	storageClassSpecifier	goto 13
++	typeSpecifier	goto 12
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 10
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	declaration	goto 86
++	declaration1	goto 4
++	structOrUnion	goto 2
++	strings	goto 90
++
++	.	reduce by rule 27
++
++
++state 175:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : unaryOperator expr .  (reduce by rule 72)
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++
++
++	.	reduce by rule 72
++
++
++state 176:
++
++	exprWComma : exprWComma COMMA . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 285
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 177:
++
++	statement : exprWComma SEMICOLON .  (reduce by rule 20)
++
++
++
++	.	reduce by rule 20
++
++
++state 178:
++
++	expr : expr RSHIFT . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 286
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 179:
++
++	expr : expr LSHIFT . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 287
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 180:
++
++	expr : expr AND . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 288
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 181:
++
++	expr : expr OR . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 289
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 182:
++
++	expr : expr NEQ . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 290
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 183:
++
++	expr : expr EQ . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 291
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 184:
++
++	expr : expr GT . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 292
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 185:
++
++	expr : expr LT . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 293
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 186:
++
++	expr : expr GTE . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 294
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 187:
++
++	expr : expr LTE . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 295
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 188:
++
++	expr : expr RSHIFTEQUALS . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 296
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 189:
++
++	expr : expr LSHIFTEQUALS . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 297
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 190:
++
++	expr : expr ANDEQUALS . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 298
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 191:
++
++	expr : expr OREQUALS . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 299
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 192:
++
++	expr : expr DIVEQUALS . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 300
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 193:
++
++	expr : expr TIMESEQUALS . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 301
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 194:
++
++	expr : expr MODEQUALS . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 302
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 195:
++
++	expr : expr XOREQUALS . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 303
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 196:
++
++	expr : expr MINUSEQUALS . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 304
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 197:
++
++	expr : expr PLUSEQUALS . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 305
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 198:
++
++	expr : expr EQUALS . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 306
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 199:
++
++	expr : expr ARROW . ID 
++	expr : expr ARROW . TYPE_NAME 
++
++	ID	shift 308
++	TYPE_NAME	shift 307
++
++
++	.	error
++
++
++state 200:
++
++	expr : expr DEC .  (reduce by rule 69)
++
++
++
++	.	reduce by rule 69
++
++
++state 201:
++
++	expr : expr INC .  (reduce by rule 68)
++
++
++
++	.	reduce by rule 68
++
++
++state 202:
++
++	expr : expr TIMES . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 309
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 203:
++
++	expr : expr HAT . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 310
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 204:
++
++	expr : expr MINUS . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 311
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 205:
++
++	expr : expr PLUS . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 312
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 206:
++
++	expr : expr DIVIDE . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 313
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 207:
++
++	expr : expr BAR . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 314
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 208:
++
++	expr : expr AMP . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 315
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 209:
++
++	expr : expr PERCENT . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 316
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 210:
++
++	expr : expr QUESTION . exprWComma COLON expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 94
++	exprWComma	goto 317
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 211:
++
++	expr : expr DOT . ID 
++	expr : expr DOT . TYPE_NAME 
++
++	ID	shift 319
++	TYPE_NAME	shift 318
++
++
++	.	error
++
++
++state 212:
++
++	expr : expr LBRACE . exprWComma RBRACE 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 94
++	exprWComma	goto 320
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 213:
++
++	expr : expr LPAREN . RPAREN 
++	expr : expr LPAREN . argumentExprList RPAREN 
++
++	LPAREN	shift 124
++	RPAREN	shift 323
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 322
++	unaryOperator	goto 92
++	argumentExprList	goto 321
++	strings	goto 90
++
++	.	error
++
++
++state 214:
++
++	statementlist : statementlist statement .  (reduce by rule 29)
++
++
++
++	.	reduce by rule 29
++
++
++state 215:
++
++	compoundStatement : LCURLY ostatementlist RCURLY .  (reduce by rule 31)
++
++
++
++	.	reduce by rule 31
++
++
++state 216:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : SIZEOF expr .  (reduce by rule 73)
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++
++
++	.	reduce by rule 73
++
++
++state 217:
++
++	expr : LPAREN . typeName RPAREN expr 
++	expr : SIZEOF LPAREN . typeName RPAREN 
++	expr : LPAREN . exprWComma RPAREN 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	SIZEOF	shift 99
++	TYPE_NAME	shift 19
++
++	expr	goto 94
++	exprWComma	goto 237
++	unaryOperator	goto 92
++	typeName	goto 324
++	typeSpecifier	goto 85
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 76
++	typeQualifierList	goto 235
++	specifierQualifierList	goto 234
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	structOrUnion	goto 2
++	strings	goto 90
++
++	.	error
++
++
++state 218:
++
++	statement : GOTO ID . SEMICOLON 
++
++	SEMICOLON	shift 325
++
++
++	.	error
++
++
++state 219:
++
++	statement : CONTINUE SEMICOLON .  (reduce by rule 11)
++
++
++
++	.	reduce by rule 11
++
++
++state 220:
++
++	statement : BREAK SEMICOLON .  (reduce by rule 10)
++
++
++
++	.	reduce by rule 10
++
++
++state 221:
++
++	opExpr : exprWComma .  (reduce by rule 94)
++	exprWComma : exprWComma . COMMA expr 
++
++	COMMA	shift 176
++
++
++	.	reduce by rule 94
++
++
++state 222:
++
++	statement : RETURN opExpr . SEMICOLON 
++
++	SEMICOLON	shift 326
++
++
++	.	error
++
++
++state 223:
++
++	statement : WHILE LPAREN . exprWComma RPAREN statement 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 94
++	exprWComma	goto 327
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 224:
++
++	statement : DEFAULT COLON . statement 
++
++	SEMICOLON	shift 125
++	LPAREN	shift 124
++	LCURLY	shift 52
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 115
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	IF	shift 110
++	FOR	shift 109
++	DO	shift 108
++	SWITCH	shift 107
++	CASE	shift 106
++	DEFAULT	shift 105
++	WHILE	shift 104
++	RETURN	shift 103
++	BREAK	shift 102
++	CONTINUE	shift 101
++	GOTO	shift 100
++	SIZEOF	shift 99
++
++	statement	goto 328
++	compoundStatement	goto 95
++	expr	goto 94
++	exprWComma	goto 93
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 225:
++
++	statement : CASE exprWComma . COLON statement 
++	exprWComma : exprWComma . COMMA expr 
++
++	COLON	shift 329
++	COMMA	shift 176
++
++
++	.	error
++
++
++state 226:
++
++	statement : SWITCH LPAREN . exprWComma RPAREN statement 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 94
++	exprWComma	goto 330
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 227:
++
++	statement : DO statement . WHILE LPAREN exprWComma RPAREN SEMICOLON 
++
++	WHILE	shift 331
++
++
++	.	error
++
++
++state 228:
++
++	statement : FOR LPAREN . opExpr SEMICOLON opExpr SEMICOLON opExpr RPAREN statement 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 94
++	opExpr	goto 332
++	exprWComma	goto 221
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	reduce by rule 93
++
++
++state 229:
++
++	statement : IF LPAREN . exprWComma RPAREN statement 
++	statement : IF LPAREN . exprWComma RPAREN statement ELSE statement 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 94
++	exprWComma	goto 333
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 230:
++
++	strings : STRING strings .  (reduce by rule 90)
++
++
++
++	.	reduce by rule 90
++
++
++state 231:
++
++	statement : ID COLON . statement 
++
++	SEMICOLON	shift 125
++	LPAREN	shift 124
++	LCURLY	shift 52
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 115
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	IF	shift 110
++	FOR	shift 109
++	DO	shift 108
++	SWITCH	shift 107
++	CASE	shift 106
++	DEFAULT	shift 105
++	WHILE	shift 104
++	RETURN	shift 103
++	BREAK	shift 102
++	CONTINUE	shift 101
++	GOTO	shift 100
++	SIZEOF	shift 99
++
++	statement	goto 334
++	compoundStatement	goto 95
++	expr	goto 94
++	exprWComma	goto 93
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 232:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : DEC expr .  (reduce by rule 71)
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++
++
++	.	reduce by rule 71
++
++
++state 233:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : INC expr .  (reduce by rule 70)
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++
++
++	.	reduce by rule 70
++
++
++state 234:
++
++	typeName : specifierQualifierList .  (reduce by rule 97)
++	typeName : specifierQualifierList . abstractDeclarator 
++
++	LPAREN	shift 337
++	LBRACE	shift 259
++	TIMES	shift 40
++
++	abstractDeclarator	goto 336
++	directAbstractDeclarator	goto 257
++	pointer	goto 335
++
++	.	reduce by rule 97
++
++
++state 235:
++
++	specifierQualifierList : typeQualifierList . typeSpecifier reservedSpecifierQualifiers 
++
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPE_NAME	shift 19
++
++	typeSpecifier	goto 170
++	typeSpecifierReserved	goto 11
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	structOrUnion	goto 2
++
++	.	error
++
++
++state 236:
++
++	expr : LPAREN typeName . RPAREN expr 
++
++	RPAREN	shift 338
++
++
++	.	error
++
++
++state 237:
++
++	expr : LPAREN exprWComma . RPAREN 
++	exprWComma : exprWComma . COMMA expr 
++
++	RPAREN	shift 339
++	COMMA	shift 176
++
++
++	.	error
++
++
++state 238:
++
++	notypeInitDeclarator : notypeDeclarator EQUALS initializer .  (reduce by rule 177)
++
++
++
++	.	reduce by rule 177
++
++
++state 239:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++	initializer : expr .  (reduce by rule 210)
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 210
++
++
++state 240:
++
++	initializer : LCURLY . initializerList trailingComma RCURLY 
++
++	LPAREN	shift 124
++	LCURLY	shift 240
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 239
++	unaryOperator	goto 92
++	initializer	goto 341
++	initializerList	goto 340
++	strings	goto 90
++
++	.	error
++
++
++state 241:
++
++	notypeInitDeclaratorList : notypeInitDeclaratorList COMMA initDeclarator .  (reduce by rule 175)
++
++
++
++	.	reduce by rule 175
++
++
++state 242:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator LBRACE expr . RBRACE 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	RBRACE	shift 342
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	error
++
++
++state 243:
++
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator LBRACE RBRACE .  (reduce by rule 192)
++
++
++
++	.	reduce by rule 192
++
++
++state 244:
++
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator LPAREN parameterTypeList . RPAREN 
++
++	RPAREN	shift 343
++
++
++	.	error
++
++
++state 245:
++
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator LPAREN identlist . RPAREN 
++	identlist : identlist . COMMA ID 
++
++	RPAREN	shift 344
++	COMMA	shift 253
++
++
++	.	error
++
++
++state 246:
++
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator LPAREN RPAREN .  (reduce by rule 194)
++
++
++
++	.	reduce by rule 194
++
++
++state 247:
++
++	initDeclarator : declarator EQUALS initializer .  (reduce by rule 173)
++
++
++
++	.	reduce by rule 173
++
++
++state 248:
++
++	initDeclaratorList : initDeclaratorList COMMA initDeclarator .  (reduce by rule 171)
++
++
++
++	.	reduce by rule 171
++
++
++state 249:
++
++	aftertypeDirectDeclarator : LPAREN aftertypeDeclarator RPAREN .  (reduce by rule 191)
++
++
++
++	.	reduce by rule 191
++
++
++state 250:
++
++	notypeDirectDeclarator : notypeDirectDeclarator LBRACE expr RBRACE .  (reduce by rule 200)
++
++
++
++	.	reduce by rule 200
++
++
++state 251:
++
++	notypeDirectDeclarator : notypeDirectDeclarator LPAREN parameterTypeList RPAREN .  (reduce by rule 202)
++
++
++
++	.	reduce by rule 202
++
++
++state 252:
++
++	parameterList : parameterList COMMA . parameterDeclaration 
++	parameterTypeList : parameterList COMMA . ELIPSIS 
++
++	EXTERN	shift 38
++	AUTO	shift 37
++	STATIC	shift 36
++	REGISTER	shift 35
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPEDEF	shift 20
++	ELIPSIS	shift 346
++	TYPE_NAME	shift 19
++
++	declarationSpecifiers	goto 149
++	declarationModifiers	goto 148
++	storageClassSpecifier	goto 13
++	typeSpecifier	goto 12
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 10
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	parameterDeclaration	goto 345
++	structOrUnion	goto 2
++
++	.	error
++
++
++state 253:
++
++	identlist : identlist COMMA . ID 
++
++	ID	shift 347
++
++
++	.	error
++
++
++state 254:
++
++	notypeDirectDeclarator : notypeDirectDeclarator LPAREN identlist RPAREN .  (reduce by rule 203)
++
++
++
++	.	reduce by rule 203
++
++
++state 255:
++
++	parameterDeclaration : declarationModifiers notypeDeclarator .  (reduce by rule 243)
++
++
++
++	.	reduce by rule 243
++
++
++state 256:
++
++	abstractDeclarator : pointer .  (reduce by rule 223)
++	abstractDeclarator : pointer . directAbstractDeclarator 
++	notypeDeclarator : pointer . notypeDirectDeclarator 
++
++	LPAREN	shift 260
++	LBRACE	shift 259
++	ID	shift 39
++
++	directAbstractDeclarator	goto 348
++	notypeDirectDeclarator	goto 71
++
++	.	reduce by rule 223
++
++
++state 257:
++
++	abstractDeclarator : directAbstractDeclarator .  (reduce by rule 224)
++	directAbstractDeclarator : directAbstractDeclarator . LBRACE RBRACE 
++	directAbstractDeclarator : directAbstractDeclarator . LBRACE expr RBRACE 
++	directAbstractDeclarator : directAbstractDeclarator . LPAREN RPAREN 
++	directAbstractDeclarator : directAbstractDeclarator . LPAREN parameterTypeList RPAREN 
++
++	LPAREN	shift 350
++	LBRACE	shift 349
++
++
++	.	reduce by rule 224
++
++
++state 258:
++
++	parameterDeclaration : declarationModifiers abstractDeclarator .  (reduce by rule 244)
++
++
++
++	.	reduce by rule 244
++
++
++state 259:
++
++	directAbstractDeclarator : LBRACE . RBRACE 
++	directAbstractDeclarator : LBRACE . expr RBRACE 
++
++	LPAREN	shift 124
++	RBRACE	shift 352
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 351
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 260:
++
++	directAbstractDeclarator : LPAREN . abstractDeclarator RPAREN 
++	directAbstractDeclarator : LPAREN . RPAREN 
++	directAbstractDeclarator : LPAREN . parameterTypeList RPAREN 
++	notypeDirectDeclarator : LPAREN . notypeDeclarator RPAREN 
++
++	LPAREN	shift 260
++	RPAREN	shift 355
++	LBRACE	shift 259
++	TIMES	shift 40
++	ID	shift 39
++	EXTERN	shift 38
++	AUTO	shift 37
++	STATIC	shift 36
++	REGISTER	shift 35
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPEDEF	shift 20
++	TYPE_NAME	shift 19
++
++	abstractDeclarator	goto 354
++	directAbstractDeclarator	goto 257
++	pointer	goto 256
++	notypeDeclarator	goto 78
++	notypeDirectDeclarator	goto 16
++	declarationSpecifiers	goto 149
++	declarationModifiers	goto 148
++	storageClassSpecifier	goto 13
++	typeSpecifier	goto 12
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 10
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	parameterList	goto 146
++	parameterTypeList	goto 353
++	parameterDeclaration	goto 144
++	structOrUnion	goto 2
++
++	.	error
++
++
++state 261:
++
++	parmDeclarator : parmDirectDeclarator .  (reduce by rule 184)
++	parmDirectDeclarator : parmDirectDeclarator . LBRACE RBRACE 
++	parmDirectDeclarator : parmDirectDeclarator . LBRACE expr RBRACE 
++	parmDirectDeclarator : parmDirectDeclarator . LPAREN RPAREN 
++	parmDirectDeclarator : parmDirectDeclarator . LPAREN parameterTypeList RPAREN 
++	parmDirectDeclarator : parmDirectDeclarator . LPAREN identlist RPAREN 
++
++	LPAREN	shift 357
++	LBRACE	shift 356
++
++
++	.	reduce by rule 184
++
++
++state 262:
++
++	parameterDeclaration : declarationSpecifiers parmDeclarator .  (reduce by rule 240)
++
++
++
++	.	reduce by rule 240
++
++
++state 263:
++
++	parameterDeclaration : declarationSpecifiers notypeDeclarator .  (reduce by rule 239)
++
++
++
++	.	reduce by rule 239
++
++
++state 264:
++
++	abstractDeclarator : pointer .  (reduce by rule 223)
++	abstractDeclarator : pointer . directAbstractDeclarator 
++	notypeDeclarator : pointer . notypeDirectDeclarator 
++	parmDeclarator : pointer . parmDirectDeclarator 
++
++	LPAREN	shift 260
++	LBRACE	shift 259
++	ID	shift 39
++	TYPE_NAME	shift 266
++
++	directAbstractDeclarator	goto 348
++	notypeDirectDeclarator	goto 71
++	parmDirectDeclarator	goto 358
++
++	.	reduce by rule 223
++
++
++state 265:
++
++	parameterDeclaration : declarationSpecifiers abstractDeclarator .  (reduce by rule 242)
++
++
++
++	.	reduce by rule 242
++
++
++state 266:
++
++	parmDirectDeclarator : TYPE_NAME .  (reduce by rule 204)
++
++
++
++	.	reduce by rule 204
++
++
++state 267:
++
++	enumeratorList : enumeratorList . COMMA enumerator 
++	enumSpecifier : ENUM TYPE_NAME LCURLY enumeratorList . trailingComma RCURLY 
++
++	COMMA	shift 270
++
++	trailingComma	goto 359
++
++	.	reduce by rule 168
++
++
++state 268:
++
++	enumeratorList : enumeratorList . COMMA enumerator 
++	enumSpecifier : ENUM ID LCURLY enumeratorList . trailingComma RCURLY 
++
++	COMMA	shift 270
++
++	trailingComma	goto 360
++
++	.	reduce by rule 168
++
++
++state 269:
++
++	enumSpecifier : ENUM LCURLY enumeratorList trailingComma . RCURLY 
++
++	RCURLY	shift 361
++
++
++	.	error
++
++
++state 270:
++
++	trailingComma : COMMA .  (reduce by rule 169)
++	enumeratorList : enumeratorList COMMA . enumerator 
++
++	ID	shift 156
++
++	enumerator	goto 362
++
++	.	reduce by rule 169
++
++
++state 271:
++
++	enumerator : ID EQUALS . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 363
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 272:
++
++	structOrUnionSpecifier : structOrUnion TYPE_NAME LCURLY structDeclarationList RCURLY .  (reduce by rule 133)
++
++
++
++	.	reduce by rule 133
++
++
++state 273:
++
++	structOrUnionSpecifier : structOrUnion ID LCURLY structDeclarationList RCURLY .  (reduce by rule 132)
++
++
++
++	.	reduce by rule 132
++
++
++state 274:
++
++	structDeclaratorList : structDeclaratorList COMMA . structDeclarator 
++
++	COLON	shift 167
++	LPAREN	shift 68
++	TIMES	shift 40
++	ID	shift 39
++	TYPE_NAME	shift 67
++
++	pointer	goto 64
++	declarator	goto 166
++	aftertypeDeclarator	goto 62
++	notypeDeclarator	goto 61
++	aftertypeDirectDeclarator	goto 60
++	notypeDirectDeclarator	goto 16
++	structDeclarator	goto 364
++
++	.	error
++
++
++state 275:
++
++	structDeclaration : specifierQualifierList structDeclaratorList SEMICOLON .  (reduce by rule 140)
++
++
++
++	.	reduce by rule 140
++
++
++state 276:
++
++	structDeclarator : declarator COLON . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 365
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 277:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++	structDeclarator : COLON expr .  (reduce by rule 147)
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 147
++
++
++state 278:
++
++	notypeStructDeclaratorList : notypeStructDeclaratorList COMMA . structDeclarator 
++
++	COLON	shift 167
++	LPAREN	shift 68
++	TIMES	shift 40
++	ID	shift 39
++	TYPE_NAME	shift 67
++
++	pointer	goto 64
++	declarator	goto 166
++	aftertypeDeclarator	goto 62
++	notypeDeclarator	goto 61
++	aftertypeDirectDeclarator	goto 60
++	notypeDirectDeclarator	goto 16
++	structDeclarator	goto 366
++
++	.	error
++
++
++state 279:
++
++	structDeclaration : typeQualifierList notypeStructDeclaratorList SEMICOLON .  (reduce by rule 141)
++
++
++
++	.	reduce by rule 141
++
++
++state 280:
++
++	reservedSpecifierQualifiers : reservedSpecifierQualifiers . specifierQualifierReserved 
++	specifierQualifierList : typeQualifierList typeSpecifier reservedSpecifierQualifiers .  (reduce by rule 113)
++
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++
++	specifierQualifierReserved	goto 283
++	typeSpecifierReserved	goto 129
++	typeQualifier	goto 128
++	enumSpecifier	goto 127
++	structOrUnionSpecifier	goto 126
++	structOrUnion	goto 2
++
++	.	reduce by rule 113
++
++
++state 281:
++
++	notypeStructDeclarator : notypeDeclarator COLON . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 367
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 282:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++	notypeStructDeclarator : COLON expr .  (reduce by rule 150)
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 150
++
++
++state 283:
++
++	reservedSpecifierQualifiers : reservedSpecifierQualifiers specifierQualifierReserved .  (reduce by rule 115)
++
++
++
++	.	reduce by rule 115
++
++
++state 284:
++
++	compoundStatement : LCURLY pushScope declarationList ostatementlist . popScope RCURLY 
++
++
++	popScope	goto 368
++
++	.	reduce by rule 246
++
++
++state 285:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++	exprWComma : exprWComma COMMA expr .  (reduce by rule 92)
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 92
++
++
++state 286:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr RSHIFT expr .  (reduce by rule 62)
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	PERCENT	shift 209
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++
++
++	.	reduce by rule 62
++
++
++state 287:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr LSHIFT expr .  (reduce by rule 61)
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	PERCENT	shift 209
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++
++
++	.	reduce by rule 61
++
++
++state 288:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr AND expr .  (reduce by rule 51)
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 51
++
++
++state 289:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr OR expr .  (reduce by rule 50)
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 50
++
++
++state 290:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr NEQ expr .  (reduce by rule 56)
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	PERCENT	shift 209
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 56
++
++
++state 291:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr EQ expr .  (reduce by rule 55)
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	PERCENT	shift 209
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 55
++
++
++state 292:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr GT expr .  (reduce by rule 58)
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	PERCENT	shift 209
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 58
++
++
++state 293:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr LT expr .  (reduce by rule 57)
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	PERCENT	shift 209
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 57
++
++
++state 294:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr GTE expr .  (reduce by rule 60)
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	PERCENT	shift 209
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 60
++
++
++state 295:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr LTE expr .  (reduce by rule 59)
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	PERCENT	shift 209
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 59
++
++
++state 296:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr RSHIFTEQUALS expr .  (reduce by rule 48)
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 48
++
++
++state 297:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr LSHIFTEQUALS expr .  (reduce by rule 47)
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 47
++
++
++state 298:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr ANDEQUALS expr .  (reduce by rule 46)
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 46
++
++
++state 299:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr OREQUALS expr .  (reduce by rule 45)
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 45
++
++
++state 300:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr DIVEQUALS expr .  (reduce by rule 42)
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 42
++
++
++state 301:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr TIMESEQUALS expr .  (reduce by rule 41)
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 41
++
++
++state 302:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr MODEQUALS expr .  (reduce by rule 43)
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 43
++
++
++state 303:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr XOREQUALS expr .  (reduce by rule 44)
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 44
++
++
++state 304:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr MINUSEQUALS expr .  (reduce by rule 40)
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 40
++
++
++state 305:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr PLUSEQUALS expr .  (reduce by rule 39)
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 39
++
++
++state 306:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr EQUALS expr .  (reduce by rule 49)
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 49
++
++
++state 307:
++
++	expr : expr ARROW TYPE_NAME .  (reduce by rule 82)
++
++
++
++	.	reduce by rule 82
++
++
++state 308:
++
++	expr : expr ARROW ID .  (reduce by rule 80)
++
++
++
++	.	reduce by rule 80
++
++
++state 309:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr TIMES expr .  (reduce by rule 65)
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++
++
++	.	reduce by rule 65
++
++
++state 310:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr HAT expr .  (reduce by rule 53)
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	PERCENT	shift 209
++	AMP	shift 208
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 53
++
++
++state 311:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr MINUS expr .  (reduce by rule 64)
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	PERCENT	shift 209
++	DIVIDE	shift 206
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++
++
++	.	reduce by rule 64
++
++
++state 312:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr PLUS expr .  (reduce by rule 63)
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	PERCENT	shift 209
++	DIVIDE	shift 206
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++
++
++	.	reduce by rule 63
++
++
++state 313:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr DIVIDE expr .  (reduce by rule 66)
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++
++
++	.	reduce by rule 66
++
++
++state 314:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr BAR expr .  (reduce by rule 52)
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	PERCENT	shift 209
++	AMP	shift 208
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 52
++
++
++state 315:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr AMP expr .  (reduce by rule 54)
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	PERCENT	shift 209
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 54
++
++
++state 316:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr PERCENT expr .  (reduce by rule 67)
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++
++
++	.	reduce by rule 67
++
++
++state 317:
++
++	expr : expr QUESTION exprWComma . COLON expr 
++	exprWComma : exprWComma . COMMA expr 
++
++	COLON	shift 369
++	COMMA	shift 176
++
++
++	.	error
++
++
++state 318:
++
++	expr : expr DOT TYPE_NAME .  (reduce by rule 81)
++
++
++
++	.	reduce by rule 81
++
++
++state 319:
++
++	expr : expr DOT ID .  (reduce by rule 79)
++
++
++
++	.	reduce by rule 79
++
++
++state 320:
++
++	expr : expr LBRACE exprWComma . RBRACE 
++	exprWComma : exprWComma . COMMA expr 
++
++	RBRACE	shift 370
++	COMMA	shift 176
++
++
++	.	error
++
++
++state 321:
++
++	expr : expr LPAREN argumentExprList . RPAREN 
++	argumentExprList : argumentExprList . COMMA expr 
++
++	RPAREN	shift 372
++	COMMA	shift 371
++
++
++	.	error
++
++
++state 322:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++	argumentExprList : expr .  (reduce by rule 95)
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 95
++
++
++state 323:
++
++	expr : expr LPAREN RPAREN .  (reduce by rule 77)
++
++
++
++	.	reduce by rule 77
++
++
++state 324:
++
++	expr : LPAREN typeName . RPAREN expr 
++	expr : SIZEOF LPAREN typeName . RPAREN 
++
++	RPAREN	shift 373
++
++
++	.	error
++
++
++state 325:
++
++	statement : GOTO ID SEMICOLON .  (reduce by rule 13)
++
++
++
++	.	reduce by rule 13
++
++
++state 326:
++
++	statement : RETURN opExpr SEMICOLON .  (reduce by rule 12)
++
++
++
++	.	reduce by rule 12
++
++
++state 327:
++
++	statement : WHILE LPAREN exprWComma . RPAREN statement 
++	exprWComma : exprWComma . COMMA expr 
++
++	RPAREN	shift 374
++	COMMA	shift 176
++
++
++	.	error
++
++
++state 328:
++
++	statement : DEFAULT COLON statement .  (reduce by rule 16)
++
++
++
++	.	reduce by rule 16
++
++
++state 329:
++
++	statement : CASE exprWComma COLON . statement 
++
++	SEMICOLON	shift 125
++	LPAREN	shift 124
++	LCURLY	shift 52
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 115
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	IF	shift 110
++	FOR	shift 109
++	DO	shift 108
++	SWITCH	shift 107
++	CASE	shift 106
++	DEFAULT	shift 105
++	WHILE	shift 104
++	RETURN	shift 103
++	BREAK	shift 102
++	CONTINUE	shift 101
++	GOTO	shift 100
++	SIZEOF	shift 99
++
++	statement	goto 375
++	compoundStatement	goto 95
++	expr	goto 94
++	exprWComma	goto 93
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 330:
++
++	statement : SWITCH LPAREN exprWComma . RPAREN statement 
++	exprWComma : exprWComma . COMMA expr 
++
++	RPAREN	shift 376
++	COMMA	shift 176
++
++
++	.	error
++
++
++state 331:
++
++	statement : DO statement WHILE . LPAREN exprWComma RPAREN SEMICOLON 
++
++	LPAREN	shift 377
++
++
++	.	error
++
++
++state 332:
++
++	statement : FOR LPAREN opExpr . SEMICOLON opExpr SEMICOLON opExpr RPAREN statement 
++
++	SEMICOLON	shift 378
++
++
++	.	error
++
++
++state 333:
++
++	statement : IF LPAREN exprWComma . RPAREN statement 
++	statement : IF LPAREN exprWComma . RPAREN statement ELSE statement 
++	exprWComma : exprWComma . COMMA expr 
++
++	RPAREN	shift 379
++	COMMA	shift 176
++
++
++	.	error
++
++
++state 334:
++
++	statement : ID COLON statement .  (reduce by rule 15)
++
++
++
++	.	reduce by rule 15
++
++
++state 335:
++
++	abstractDeclarator : pointer .  (reduce by rule 223)
++	abstractDeclarator : pointer . directAbstractDeclarator 
++
++	LPAREN	shift 337
++	LBRACE	shift 259
++
++	directAbstractDeclarator	goto 348
++
++	.	reduce by rule 223
++
++
++state 336:
++
++	typeName : specifierQualifierList abstractDeclarator .  (reduce by rule 98)
++
++
++
++	.	reduce by rule 98
++
++
++state 337:
++
++	directAbstractDeclarator : LPAREN . abstractDeclarator RPAREN 
++	directAbstractDeclarator : LPAREN . RPAREN 
++	directAbstractDeclarator : LPAREN . parameterTypeList RPAREN 
++
++	LPAREN	shift 337
++	RPAREN	shift 355
++	LBRACE	shift 259
++	TIMES	shift 40
++	EXTERN	shift 38
++	AUTO	shift 37
++	STATIC	shift 36
++	REGISTER	shift 35
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPEDEF	shift 20
++	TYPE_NAME	shift 19
++
++	abstractDeclarator	goto 354
++	directAbstractDeclarator	goto 257
++	pointer	goto 335
++	declarationSpecifiers	goto 149
++	declarationModifiers	goto 148
++	storageClassSpecifier	goto 13
++	typeSpecifier	goto 12
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 10
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	parameterList	goto 146
++	parameterTypeList	goto 353
++	parameterDeclaration	goto 144
++	structOrUnion	goto 2
++
++	.	error
++
++
++state 338:
++
++	expr : LPAREN typeName RPAREN . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 380
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 339:
++
++	expr : LPAREN exprWComma RPAREN .  (reduce by rule 83)
++
++
++
++	.	reduce by rule 83
++
++
++state 340:
++
++	initializer : LCURLY initializerList . trailingComma RCURLY 
++	initializerList : initializerList . COMMA initializer 
++
++	COMMA	shift 382
++
++	trailingComma	goto 381
++
++	.	reduce by rule 168
++
++
++state 341:
++
++	initializerList : initializer .  (reduce by rule 212)
++
++
++
++	.	reduce by rule 212
++
++
++state 342:
++
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator LBRACE expr RBRACE .  (reduce by rule 193)
++
++
++
++	.	reduce by rule 193
++
++
++state 343:
++
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator LPAREN parameterTypeList RPAREN .  (reduce by rule 195)
++
++
++
++	.	reduce by rule 195
++
++
++state 344:
++
++	aftertypeDirectDeclarator : aftertypeDirectDeclarator LPAREN identlist RPAREN .  (reduce by rule 196)
++
++
++
++	.	reduce by rule 196
++
++
++state 345:
++
++	parameterList : parameterList COMMA parameterDeclaration .  (reduce by rule 238)
++
++
++
++	.	reduce by rule 238
++
++
++state 346:
++
++	parameterTypeList : parameterList COMMA ELIPSIS .  (reduce by rule 236)
++
++
++
++	.	reduce by rule 236
++
++
++state 347:
++
++	identlist : identlist COMMA ID .  (reduce by rule 217)
++
++
++
++	.	reduce by rule 217
++
++
++state 348:
++
++	abstractDeclarator : pointer directAbstractDeclarator .  (reduce by rule 225)
++	directAbstractDeclarator : directAbstractDeclarator . LBRACE RBRACE 
++	directAbstractDeclarator : directAbstractDeclarator . LBRACE expr RBRACE 
++	directAbstractDeclarator : directAbstractDeclarator . LPAREN RPAREN 
++	directAbstractDeclarator : directAbstractDeclarator . LPAREN parameterTypeList RPAREN 
++
++	LPAREN	shift 350
++	LBRACE	shift 349
++
++
++	.	reduce by rule 225
++
++
++state 349:
++
++	directAbstractDeclarator : directAbstractDeclarator LBRACE . RBRACE 
++	directAbstractDeclarator : directAbstractDeclarator LBRACE . expr RBRACE 
++
++	LPAREN	shift 124
++	RBRACE	shift 384
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 383
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 350:
++
++	directAbstractDeclarator : directAbstractDeclarator LPAREN . RPAREN 
++	directAbstractDeclarator : directAbstractDeclarator LPAREN . parameterTypeList RPAREN 
++
++	RPAREN	shift 386
++	EXTERN	shift 38
++	AUTO	shift 37
++	STATIC	shift 36
++	REGISTER	shift 35
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPEDEF	shift 20
++	TYPE_NAME	shift 19
++
++	declarationSpecifiers	goto 149
++	declarationModifiers	goto 148
++	storageClassSpecifier	goto 13
++	typeSpecifier	goto 12
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 10
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	parameterList	goto 146
++	parameterTypeList	goto 385
++	parameterDeclaration	goto 144
++	structOrUnion	goto 2
++
++	.	error
++
++
++state 351:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++	directAbstractDeclarator : LBRACE expr . RBRACE 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	RBRACE	shift 387
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	error
++
++
++state 352:
++
++	directAbstractDeclarator : LBRACE RBRACE .  (reduce by rule 227)
++
++
++
++	.	reduce by rule 227
++
++
++state 353:
++
++	directAbstractDeclarator : LPAREN parameterTypeList . RPAREN 
++
++	RPAREN	shift 388
++
++
++	.	error
++
++
++state 354:
++
++	directAbstractDeclarator : LPAREN abstractDeclarator . RPAREN 
++
++	RPAREN	shift 389
++
++
++	.	error
++
++
++state 355:
++
++	directAbstractDeclarator : LPAREN RPAREN .  (reduce by rule 231)
++
++
++
++	.	reduce by rule 231
++
++
++state 356:
++
++	parmDirectDeclarator : parmDirectDeclarator LBRACE . RBRACE 
++	parmDirectDeclarator : parmDirectDeclarator LBRACE . expr RBRACE 
++
++	LPAREN	shift 124
++	RBRACE	shift 391
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 390
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 357:
++
++	parmDirectDeclarator : parmDirectDeclarator LPAREN . RPAREN 
++	parmDirectDeclarator : parmDirectDeclarator LPAREN . parameterTypeList RPAREN 
++	parmDirectDeclarator : parmDirectDeclarator LPAREN . identlist RPAREN 
++
++	RPAREN	shift 394
++	ID	shift 150
++	EXTERN	shift 38
++	AUTO	shift 37
++	STATIC	shift 36
++	REGISTER	shift 35
++	CONST	shift 34
++	VOLATILE	shift 33
++	CHAR	shift 32
++	DOUBLE	shift 31
++	ENUM	shift 30
++	FLOAT	shift 29
++	INT	shift 28
++	LONG	shift 27
++	SHORT	shift 26
++	STRUCT	shift 25
++	UNION	shift 24
++	UNSIGNED	shift 23
++	SIGNED	shift 22
++	VOID	shift 21
++	TYPEDEF	shift 20
++	TYPE_NAME	shift 19
++
++	declarationSpecifiers	goto 149
++	declarationModifiers	goto 148
++	storageClassSpecifier	goto 13
++	typeSpecifier	goto 12
++	typeSpecifierReserved	goto 11
++	typeQualifier	goto 10
++	enumSpecifier	goto 9
++	structOrUnionSpecifier	goto 8
++	identlist	goto 393
++	parameterList	goto 146
++	parameterTypeList	goto 392
++	parameterDeclaration	goto 144
++	structOrUnion	goto 2
++
++	.	error
++
++
++state 358:
++
++	parmDeclarator : pointer parmDirectDeclarator .  (reduce by rule 185)
++	parmDirectDeclarator : parmDirectDeclarator . LBRACE RBRACE 
++	parmDirectDeclarator : parmDirectDeclarator . LBRACE expr RBRACE 
++	parmDirectDeclarator : parmDirectDeclarator . LPAREN RPAREN 
++	parmDirectDeclarator : parmDirectDeclarator . LPAREN parameterTypeList RPAREN 
++	parmDirectDeclarator : parmDirectDeclarator . LPAREN identlist RPAREN 
++
++	LPAREN	shift 357
++	LBRACE	shift 356
++
++
++	.	reduce by rule 185
++
++
++state 359:
++
++	enumSpecifier : ENUM TYPE_NAME LCURLY enumeratorList trailingComma . RCURLY 
++
++	RCURLY	shift 395
++
++
++	.	error
++
++
++state 360:
++
++	enumSpecifier : ENUM ID LCURLY enumeratorList trailingComma . RCURLY 
++
++	RCURLY	shift 396
++
++
++	.	error
++
++
++state 361:
++
++	enumSpecifier : ENUM LCURLY enumeratorList trailingComma RCURLY .  (reduce by rule 154)
++
++
++
++	.	reduce by rule 154
++
++
++state 362:
++
++	enumeratorList : enumeratorList COMMA enumerator .  (reduce by rule 159)
++
++
++
++	.	reduce by rule 159
++
++
++state 363:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++	enumerator : ID EQUALS expr .  (reduce by rule 162)
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 162
++
++
++state 364:
++
++	structDeclaratorList : structDeclaratorList COMMA structDeclarator .  (reduce by rule 143)
++
++
++
++	.	reduce by rule 143
++
++
++state 365:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++	structDeclarator : declarator COLON expr .  (reduce by rule 148)
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 148
++
++
++state 366:
++
++	notypeStructDeclaratorList : notypeStructDeclaratorList COMMA structDeclarator .  (reduce by rule 145)
++
++
++
++	.	reduce by rule 145
++
++
++state 367:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++	notypeStructDeclarator : notypeDeclarator COLON expr .  (reduce by rule 151)
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 151
++
++
++state 368:
++
++	compoundStatement : LCURLY pushScope declarationList ostatementlist popScope . RCURLY 
++
++	RCURLY	shift 397
++
++
++	.	error
++
++
++state 369:
++
++	expr : expr QUESTION exprWComma COLON . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 398
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 370:
++
++	expr : expr LBRACE exprWComma RBRACE .  (reduce by rule 76)
++
++
++
++	.	reduce by rule 76
++
++
++state 371:
++
++	argumentExprList : argumentExprList COMMA . expr 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 399
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 372:
++
++	expr : expr LPAREN argumentExprList RPAREN .  (reduce by rule 78)
++
++
++
++	.	reduce by rule 78
++
++
++state 373:
++
++	expr : LPAREN typeName RPAREN . expr 
++	expr : SIZEOF LPAREN typeName RPAREN .  (reduce by rule 75)
++
++	LPAREN	shift 124
++	TILDE	shift 122
++	BANG	shift 119
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 380
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	reduce by rule 75
++
++
++state 374:
++
++	statement : WHILE LPAREN exprWComma RPAREN . statement 
++
++	SEMICOLON	shift 125
++	LPAREN	shift 124
++	LCURLY	shift 52
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 115
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	IF	shift 110
++	FOR	shift 109
++	DO	shift 108
++	SWITCH	shift 107
++	CASE	shift 106
++	DEFAULT	shift 105
++	WHILE	shift 104
++	RETURN	shift 103
++	BREAK	shift 102
++	CONTINUE	shift 101
++	GOTO	shift 100
++	SIZEOF	shift 99
++
++	statement	goto 400
++	compoundStatement	goto 95
++	expr	goto 94
++	exprWComma	goto 93
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 375:
++
++	statement : CASE exprWComma COLON statement .  (reduce by rule 17)
++
++
++
++	.	reduce by rule 17
++
++
++state 376:
++
++	statement : SWITCH LPAREN exprWComma RPAREN . statement 
++
++	SEMICOLON	shift 125
++	LPAREN	shift 124
++	LCURLY	shift 52
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 115
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	IF	shift 110
++	FOR	shift 109
++	DO	shift 108
++	SWITCH	shift 107
++	CASE	shift 106
++	DEFAULT	shift 105
++	WHILE	shift 104
++	RETURN	shift 103
++	BREAK	shift 102
++	CONTINUE	shift 101
++	GOTO	shift 100
++	SIZEOF	shift 99
++
++	statement	goto 401
++	compoundStatement	goto 95
++	expr	goto 94
++	exprWComma	goto 93
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 377:
++
++	statement : DO statement WHILE LPAREN . exprWComma RPAREN SEMICOLON 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 94
++	exprWComma	goto 402
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 378:
++
++	statement : FOR LPAREN opExpr SEMICOLON . opExpr SEMICOLON opExpr RPAREN statement 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 94
++	opExpr	goto 403
++	exprWComma	goto 221
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	reduce by rule 93
++
++
++state 379:
++
++	statement : IF LPAREN exprWComma RPAREN . statement 
++	statement : IF LPAREN exprWComma RPAREN . statement ELSE statement 
++
++	SEMICOLON	shift 125
++	LPAREN	shift 124
++	LCURLY	shift 52
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 115
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	IF	shift 110
++	FOR	shift 109
++	DO	shift 108
++	SWITCH	shift 107
++	CASE	shift 106
++	DEFAULT	shift 105
++	WHILE	shift 104
++	RETURN	shift 103
++	BREAK	shift 102
++	CONTINUE	shift 101
++	GOTO	shift 100
++	SIZEOF	shift 99
++
++	statement	goto 404
++	compoundStatement	goto 95
++	expr	goto 94
++	exprWComma	goto 93
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 380:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : LPAREN typeName RPAREN expr .  (reduce by rule 74)
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++
++
++	.	reduce by rule 74
++
++
++state 381:
++
++	initializer : LCURLY initializerList trailingComma . RCURLY 
++
++	RCURLY	shift 405
++
++
++	.	error
++
++
++state 382:
++
++	trailingComma : COMMA .  (reduce by rule 169)
++	initializerList : initializerList COMMA . initializer 
++
++	LPAREN	shift 124
++	LCURLY	shift 240
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 239
++	unaryOperator	goto 92
++	initializer	goto 406
++	strings	goto 90
++
++	.	reduce by rule 169
++
++
++state 383:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++	directAbstractDeclarator : directAbstractDeclarator LBRACE expr . RBRACE 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	RBRACE	shift 407
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	error
++
++
++state 384:
++
++	directAbstractDeclarator : directAbstractDeclarator LBRACE RBRACE .  (reduce by rule 229)
++
++
++
++	.	reduce by rule 229
++
++
++state 385:
++
++	directAbstractDeclarator : directAbstractDeclarator LPAREN parameterTypeList . RPAREN 
++
++	RPAREN	shift 408
++
++
++	.	error
++
++
++state 386:
++
++	directAbstractDeclarator : directAbstractDeclarator LPAREN RPAREN .  (reduce by rule 233)
++
++
++
++	.	reduce by rule 233
++
++
++state 387:
++
++	directAbstractDeclarator : LBRACE expr RBRACE .  (reduce by rule 228)
++
++
++
++	.	reduce by rule 228
++
++
++state 388:
++
++	directAbstractDeclarator : LPAREN parameterTypeList RPAREN .  (reduce by rule 232)
++
++
++
++	.	reduce by rule 232
++
++
++state 389:
++
++	directAbstractDeclarator : LPAREN abstractDeclarator RPAREN .  (reduce by rule 226)
++
++
++
++	.	reduce by rule 226
++
++
++state 390:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++	parmDirectDeclarator : parmDirectDeclarator LBRACE expr . RBRACE 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	RBRACE	shift 409
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	error
++
++
++state 391:
++
++	parmDirectDeclarator : parmDirectDeclarator LBRACE RBRACE .  (reduce by rule 205)
++
++
++
++	.	reduce by rule 205
++
++
++state 392:
++
++	parmDirectDeclarator : parmDirectDeclarator LPAREN parameterTypeList . RPAREN 
++
++	RPAREN	shift 410
++
++
++	.	error
++
++
++state 393:
++
++	parmDirectDeclarator : parmDirectDeclarator LPAREN identlist . RPAREN 
++	identlist : identlist . COMMA ID 
++
++	RPAREN	shift 411
++	COMMA	shift 253
++
++
++	.	error
++
++
++state 394:
++
++	parmDirectDeclarator : parmDirectDeclarator LPAREN RPAREN .  (reduce by rule 207)
++
++
++
++	.	reduce by rule 207
++
++
++state 395:
++
++	enumSpecifier : ENUM TYPE_NAME LCURLY enumeratorList trailingComma RCURLY .  (reduce by rule 156)
++
++
++
++	.	reduce by rule 156
++
++
++state 396:
++
++	enumSpecifier : ENUM ID LCURLY enumeratorList trailingComma RCURLY .  (reduce by rule 155)
++
++
++
++	.	reduce by rule 155
++
++
++state 397:
++
++	compoundStatement : LCURLY pushScope declarationList ostatementlist popScope RCURLY .  (reduce by rule 30)
++
++
++
++	.	reduce by rule 30
++
++
++state 398:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr QUESTION exprWComma COLON expr .  (reduce by rule 38)
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 38
++
++
++state 399:
++
++	expr : expr . QUESTION exprWComma COLON expr 
++	expr : expr . PLUSEQUALS expr 
++	expr : expr . MINUSEQUALS expr 
++	expr : expr . TIMESEQUALS expr 
++	expr : expr . DIVEQUALS expr 
++	expr : expr . MODEQUALS expr 
++	expr : expr . XOREQUALS expr 
++	expr : expr . OREQUALS expr 
++	expr : expr . ANDEQUALS expr 
++	expr : expr . LSHIFTEQUALS expr 
++	expr : expr . RSHIFTEQUALS expr 
++	expr : expr . EQUALS expr 
++	expr : expr . OR expr 
++	expr : expr . AND expr 
++	expr : expr . BAR expr 
++	expr : expr . HAT expr 
++	expr : expr . AMP expr 
++	expr : expr . EQ expr 
++	expr : expr . NEQ expr 
++	expr : expr . LT expr 
++	expr : expr . GT expr 
++	expr : expr . LTE expr 
++	expr : expr . GTE expr 
++	expr : expr . LSHIFT expr 
++	expr : expr . RSHIFT expr 
++	expr : expr . PLUS expr 
++	expr : expr . MINUS expr 
++	expr : expr . TIMES expr 
++	expr : expr . DIVIDE expr 
++	expr : expr . PERCENT expr 
++	expr : expr . INC 
++	expr : expr . DEC 
++	expr : expr . LBRACE exprWComma RBRACE 
++	expr : expr . LPAREN RPAREN 
++	expr : expr . LPAREN argumentExprList RPAREN 
++	expr : expr . DOT ID 
++	expr : expr . ARROW ID 
++	expr : expr . DOT TYPE_NAME 
++	expr : expr . ARROW TYPE_NAME 
++	argumentExprList : argumentExprList COMMA expr .  (reduce by rule 96)
++
++	LPAREN	shift 213
++	LBRACE	shift 212
++	DOT	shift 211
++	QUESTION	shift 210
++	PERCENT	shift 209
++	AMP	shift 208
++	BAR	shift 207
++	DIVIDE	shift 206
++	PLUS	shift 205
++	MINUS	shift 204
++	HAT	shift 203
++	TIMES	shift 202
++	INC	shift 201
++	DEC	shift 200
++	ARROW	shift 199
++	EQUALS	shift 198
++	PLUSEQUALS	shift 197
++	MINUSEQUALS	shift 196
++	XOREQUALS	shift 195
++	MODEQUALS	shift 194
++	TIMESEQUALS	shift 193
++	DIVEQUALS	shift 192
++	OREQUALS	shift 191
++	ANDEQUALS	shift 190
++	LSHIFTEQUALS	shift 189
++	RSHIFTEQUALS	shift 188
++	LTE	shift 187
++	GTE	shift 186
++	LT	shift 185
++	GT	shift 184
++	EQ	shift 183
++	NEQ	shift 182
++	OR	shift 181
++	AND	shift 180
++	LSHIFT	shift 179
++	RSHIFT	shift 178
++
++
++	.	reduce by rule 96
++
++
++state 400:
++
++	statement : WHILE LPAREN exprWComma RPAREN statement .  (reduce by rule 7)
++
++
++
++	.	reduce by rule 7
++
++
++state 401:
++
++	statement : SWITCH LPAREN exprWComma RPAREN statement .  (reduce by rule 8)
++
++
++
++	.	reduce by rule 8
++
++
++state 402:
++
++	statement : DO statement WHILE LPAREN exprWComma . RPAREN SEMICOLON 
++	exprWComma : exprWComma . COMMA expr 
++
++	RPAREN	shift 412
++	COMMA	shift 176
++
++
++	.	error
++
++
++state 403:
++
++	statement : FOR LPAREN opExpr SEMICOLON opExpr . SEMICOLON opExpr RPAREN statement 
++
++	SEMICOLON	shift 413
++
++
++	.	error
++
++error:  state 404: shift/reduce conflict (shift ELSE, reduce by rule 18)
++
++state 404:
++
++	statement : IF LPAREN exprWComma RPAREN statement .  (reduce by rule 18)
++	statement : IF LPAREN exprWComma RPAREN statement . ELSE statement 
++
++	ELSE	shift 414
++
++
++	.	reduce by rule 18
++
++
++state 405:
++
++	initializer : LCURLY initializerList trailingComma RCURLY .  (reduce by rule 211)
++
++
++
++	.	reduce by rule 211
++
++
++state 406:
++
++	initializerList : initializerList COMMA initializer .  (reduce by rule 213)
++
++
++
++	.	reduce by rule 213
++
++
++state 407:
++
++	directAbstractDeclarator : directAbstractDeclarator LBRACE expr RBRACE .  (reduce by rule 230)
++
++
++
++	.	reduce by rule 230
++
++
++state 408:
++
++	directAbstractDeclarator : directAbstractDeclarator LPAREN parameterTypeList RPAREN .  (reduce by rule 234)
++
++
++
++	.	reduce by rule 234
++
++
++state 409:
++
++	parmDirectDeclarator : parmDirectDeclarator LBRACE expr RBRACE .  (reduce by rule 206)
++
++
++
++	.	reduce by rule 206
++
++
++state 410:
++
++	parmDirectDeclarator : parmDirectDeclarator LPAREN parameterTypeList RPAREN .  (reduce by rule 208)
++
++
++
++	.	reduce by rule 208
++
++
++state 411:
++
++	parmDirectDeclarator : parmDirectDeclarator LPAREN identlist RPAREN .  (reduce by rule 209)
++
++
++
++	.	reduce by rule 209
++
++
++state 412:
++
++	statement : DO statement WHILE LPAREN exprWComma RPAREN . SEMICOLON 
++
++	SEMICOLON	shift 415
++
++
++	.	error
++
++
++state 413:
++
++	statement : FOR LPAREN opExpr SEMICOLON opExpr SEMICOLON . opExpr RPAREN statement 
++
++	LPAREN	shift 124
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 142
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	SIZEOF	shift 99
++
++	expr	goto 94
++	opExpr	goto 416
++	exprWComma	goto 221
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	reduce by rule 93
++
++
++state 414:
++
++	statement : IF LPAREN exprWComma RPAREN statement ELSE . statement 
++
++	SEMICOLON	shift 125
++	LPAREN	shift 124
++	LCURLY	shift 52
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 115
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	IF	shift 110
++	FOR	shift 109
++	DO	shift 108
++	SWITCH	shift 107
++	CASE	shift 106
++	DEFAULT	shift 105
++	WHILE	shift 104
++	RETURN	shift 103
++	BREAK	shift 102
++	CONTINUE	shift 101
++	GOTO	shift 100
++	SIZEOF	shift 99
++
++	statement	goto 417
++	compoundStatement	goto 95
++	expr	goto 94
++	exprWComma	goto 93
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 415:
++
++	statement : DO statement WHILE LPAREN exprWComma RPAREN SEMICOLON .  (reduce by rule 9)
++
++
++
++	.	reduce by rule 9
++
++
++state 416:
++
++	statement : FOR LPAREN opExpr SEMICOLON opExpr SEMICOLON opExpr . RPAREN statement 
++
++	RPAREN	shift 418
++
++
++	.	error
++
++
++state 417:
++
++	statement : IF LPAREN exprWComma RPAREN statement ELSE statement .  (reduce by rule 19)
++
++
++
++	.	reduce by rule 19
++
++
++state 418:
++
++	statement : FOR LPAREN opExpr SEMICOLON opExpr SEMICOLON opExpr RPAREN . statement 
++
++	SEMICOLON	shift 125
++	LPAREN	shift 124
++	LCURLY	shift 52
++	AMP	shift 123
++	TILDE	shift 122
++	PLUS	shift 121
++	MINUS	shift 120
++	BANG	shift 119
++	TIMES	shift 118
++	INC	shift 117
++	DEC	shift 116
++	ID	shift 115
++	DECNUM	shift 114
++	REALNUM	shift 113
++	STRING	shift 112
++	CCONST	shift 111
++	IF	shift 110
++	FOR	shift 109
++	DO	shift 108
++	SWITCH	shift 107
++	CASE	shift 106
++	DEFAULT	shift 105
++	WHILE	shift 104
++	RETURN	shift 103
++	BREAK	shift 102
++	CONTINUE	shift 101
++	GOTO	shift 100
++	SIZEOF	shift 99
++
++	statement	goto 419
++	compoundStatement	goto 95
++	expr	goto 94
++	exprWComma	goto 93
++	unaryOperator	goto 92
++	strings	goto 90
++
++	.	error
++
++
++state 419:
++
++	statement : FOR LPAREN opExpr SEMICOLON opExpr SEMICOLON opExpr RPAREN statement .  (reduce by rule 6)
++
++
++
++	.	reduce by rule 6
++
++
++state 420:
++
++
++	EOF	accept
++
++
++	.	error
++
++2243 of 3800 action table entries left after compaction
++712 goto table entries
+diff -Naur ckit/src/parser/grammar/c.grm.sig ckit-mlton/src/parser/grammar/c.grm.sig
+--- ckit/src/parser/grammar/c.grm.sig	1969-12-31 19:00:00.000000000 -0500
++++ ckit-mlton/src/parser/grammar/c.grm.sig	2006-05-02 23:00:53.000000000 -0400
+@@ -0,0 +1,101 @@
++signature C_TOKENS =
++sig
++type ('a,'b) token
++type svalue
++val TYPE_NAME: (string) *  'a * 'a -> (svalue,'a) token
++val ELIPSIS:  'a * 'a -> (svalue,'a) token
++val UNARY:  'a * 'a -> (svalue,'a) token
++val TYPEDEF:  'a * 'a -> (svalue,'a) token
++val SIZEOF:  'a * 'a -> (svalue,'a) token
++val VOID:  'a * 'a -> (svalue,'a) token
++val SIGNED:  'a * 'a -> (svalue,'a) token
++val UNSIGNED:  'a * 'a -> (svalue,'a) token
++val UNION:  'a * 'a -> (svalue,'a) token
++val STRUCT:  'a * 'a -> (svalue,'a) token
++val SATURATE:  'a * 'a -> (svalue,'a) token
++val FRACTIONAL:  'a * 'a -> (svalue,'a) token
++val SHORT:  'a * 'a -> (svalue,'a) token
++val LONG:  'a * 'a -> (svalue,'a) token
++val INT:  'a * 'a -> (svalue,'a) token
++val FLOAT:  'a * 'a -> (svalue,'a) token
++val ENUM:  'a * 'a -> (svalue,'a) token
++val DOUBLE:  'a * 'a -> (svalue,'a) token
++val CHAR:  'a * 'a -> (svalue,'a) token
++val GOTO:  'a * 'a -> (svalue,'a) token
++val CONTINUE:  'a * 'a -> (svalue,'a) token
++val BREAK:  'a * 'a -> (svalue,'a) token
++val RETURN:  'a * 'a -> (svalue,'a) token
++val WHILE:  'a * 'a -> (svalue,'a) token
++val DEFAULT:  'a * 'a -> (svalue,'a) token
++val CASE:  'a * 'a -> (svalue,'a) token
++val SWITCH:  'a * 'a -> (svalue,'a) token
++val DO:  'a * 'a -> (svalue,'a) token
++val FOR:  'a * 'a -> (svalue,'a) token
++val ELSE:  'a * 'a -> (svalue,'a) token
++val THEN:  'a * 'a -> (svalue,'a) token
++val IF:  'a * 'a -> (svalue,'a) token
++val VOLATILE:  'a * 'a -> (svalue,'a) token
++val CONST:  'a * 'a -> (svalue,'a) token
++val REGISTER:  'a * 'a -> (svalue,'a) token
++val STATIC:  'a * 'a -> (svalue,'a) token
++val AUTO:  'a * 'a -> (svalue,'a) token
++val EXTERN:  'a * 'a -> (svalue,'a) token
++val CCONST: (LargeInt.int) *  'a * 'a -> (svalue,'a) token
++val STRING: (string) *  'a * 'a -> (svalue,'a) token
++val REALNUM: (real) *  'a * 'a -> (svalue,'a) token
++val DECNUM: (LargeInt.int) *  'a * 'a -> (svalue,'a) token
++val RSHIFT:  'a * 'a -> (svalue,'a) token
++val LSHIFT:  'a * 'a -> (svalue,'a) token
++val AND:  'a * 'a -> (svalue,'a) token
++val OR:  'a * 'a -> (svalue,'a) token
++val NEQ:  'a * 'a -> (svalue,'a) token
++val EQ:  'a * 'a -> (svalue,'a) token
++val GT:  'a * 'a -> (svalue,'a) token
++val LT:  'a * 'a -> (svalue,'a) token
++val GTE:  'a * 'a -> (svalue,'a) token
++val LTE:  'a * 'a -> (svalue,'a) token
++val RSHIFTEQUALS:  'a * 'a -> (svalue,'a) token
++val LSHIFTEQUALS:  'a * 'a -> (svalue,'a) token
++val ANDEQUALS:  'a * 'a -> (svalue,'a) token
++val OREQUALS:  'a * 'a -> (svalue,'a) token
++val DIVEQUALS:  'a * 'a -> (svalue,'a) token
++val TIMESEQUALS:  'a * 'a -> (svalue,'a) token
++val MODEQUALS:  'a * 'a -> (svalue,'a) token
++val XOREQUALS:  'a * 'a -> (svalue,'a) token
++val MINUSEQUALS:  'a * 'a -> (svalue,'a) token
++val PLUSEQUALS:  'a * 'a -> (svalue,'a) token
++val EQUALS:  'a * 'a -> (svalue,'a) token
++val ID: (string) *  'a * 'a -> (svalue,'a) token
++val ARROW:  'a * 'a -> (svalue,'a) token
++val DEC:  'a * 'a -> (svalue,'a) token
++val INC:  'a * 'a -> (svalue,'a) token
++val TIMES:  'a * 'a -> (svalue,'a) token
++val BANG:  'a * 'a -> (svalue,'a) token
++val HAT:  'a * 'a -> (svalue,'a) token
++val MINUS:  'a * 'a -> (svalue,'a) token
++val PLUS:  'a * 'a -> (svalue,'a) token
++val DIVIDE:  'a * 'a -> (svalue,'a) token
++val TILDE:  'a * 'a -> (svalue,'a) token
++val BAR:  'a * 'a -> (svalue,'a) token
++val AMP:  'a * 'a -> (svalue,'a) token
++val PERCENT:  'a * 'a -> (svalue,'a) token
++val QUESTION:  'a * 'a -> (svalue,'a) token
++val COMMA:  'a * 'a -> (svalue,'a) token
++val DOT:  'a * 'a -> (svalue,'a) token
++val RBRACE:  'a * 'a -> (svalue,'a) token
++val LBRACE:  'a * 'a -> (svalue,'a) token
++val RCURLY:  'a * 'a -> (svalue,'a) token
++val LCURLY:  'a * 'a -> (svalue,'a) token
++val RPAREN:  'a * 'a -> (svalue,'a) token
++val LPAREN:  'a * 'a -> (svalue,'a) token
++val SEMICOLON:  'a * 'a -> (svalue,'a) token
++val COLON:  'a * 'a -> (svalue,'a) token
++val EOF:  'a * 'a -> (svalue,'a) token
++end
++signature C_LRVALS=
++sig
++structure Tokens : C_TOKENS
++structure ParserData:PARSER_DATA
++sharing type ParserData.Token.token = Tokens.token
++sharing type ParserData.svalue = Tokens.svalue
++end
 diff -Naur ckit/src/parser/grammar/c.grm.sml ckit-mlton/src/parser/grammar/c.grm.sml
---- ckit/src/parser/grammar/c.grm.sml	2005-11-21 11:29:22.000000000 -0500
-+++ ckit-mlton/src/parser/grammar/c.grm.sml	2005-11-21 11:29:23.000000000 -0500
-@@ -1866,10 +1866,11 @@
- (T 5) $$ (T 4) $$ (T 3) $$ (T 2) $$ (T 1) $$ (T 0)end
- structure Actions =
- struct 
+--- ckit/src/parser/grammar/c.grm.sml	1969-12-31 19:00:00.000000000 -0500
++++ ckit-mlton/src/parser/grammar/c.grm.sml	2006-05-02 23:00:53.000000000 -0400
+@@ -0,0 +1,3866 @@
++functor LrValsFun(structure Token : TOKEN 
++			    ) = 
++struct
++structure ParserData=
++struct
++structure Header = 
++struct
++(* DO NOT CHANGE THIS FILE -- this file was generated from cd.grm *)
++
++(* Copyright (c) 1998 by Lucent Technologies *)
++
++(* new comments from Satish Chandra, 6/21/99 *)
++(* Overriding design approach: 
++ *
++ * Accept all legal programs, but possibly some illegal ones at this stage. 
++ * Do not attempt to make a really tight grammar. Our tools are supposed to
++ * work on "correct" C programs (i.e. those that cc -ansi would compile without
++ * warnings). Of course, a type checker on the parse tree can report some errors
++ * as syntax errors.
++ *
++ * Note on MARK:
++ *
++ * externalDecl, statement, and expression are the non-terms that are marked.
++ * Compound statements are not separately marked.
++ * declarations eventually become either a statement or a externalDecl
++ *   if they are outside any function. They are marked accordingly.
++ *
++ * Note on function definitions:
++ *
++ * The order of the paramaters will always come from the FuncDecr.
++ * The types of the parameter may come from the second declaration list  
++ * (in K&R style)
++ *
++ * Note on the structure of the grammar:
++ *
++ * It is difficult to write a LALR(1) grammar based on the grammar given at
++ * the back of the K&R book. The basic difficulty is that both TYPE_NAME and
++ * ID are tokens that are strings, but it depends on the context whether
++ * a given string is to be treated as an ID or a TYPE_NAME.
++ * We have borrowed the solution used in GCC's parser specification. In this
++ * scheme, the lexer always return the token TYPE_NAME if a name has been 
++ * defined as a type name (via a typedef) in an applicable scope. The grammar 
++ * productions are heavily rearranged (from K&R's grammar) to do the right 
++ * thing. In this rearrangement, the basic idea is that a TYPE_NAME is  
++ * allowed to appear in a declaration as a plain identifier only after a type 
++ * specifier has previously appeared in the declaration. Also, a TYPE_NAME may 
++ * appear only once in a declaration as a type specifier.
++ *)
++
++(* old comments below *)
++(* Shortcomings *)
++(* 1. No floating-point whatsoever *)
++
++(* Notes on MARK:
++ * externalDecl and statement are the non-terms that are marked.
++ * Compound statements are not separately marked.
++ * expressions are not marked at all.
++ * declarations eventually become either a statement or a externalDecl
++ *   if they are outside any function. they are marked accordingly.
++ *)
++ 
++(* Overriding theme: accept all legal programs, but also some illegal ones at this
++ * stage. Do not attempt to make a really tight grammar. Our tools are supposed to
++ * work on "correct" C programs (i.e. those that cc -ansi would compile without
++ * warnings). Of course, a type checker on the parse tree can report some errors
++ * as syntax errors.
++ *)
++
++(* About function definitions:
++ * The order of the paramaters will always come from the FuncDecr thing 
++ * The types of the parameter may come from the second declaration list  (in K&R style)
++ *)
++
++open ParseTree (* PortingHelp *)
++
++fun markExternalDecl srcMap (d,left,right) = 
++    MARKexternalDecl(SourceMap.location srcMap (left,right), d)
++
++fun markDeclaration srcMap (d,left,right) = 
++    MARKdeclaration(SourceMap.location srcMap (left,right), d)
++
++fun markDeclarator srcMap (d,left,right) = 
++    MARKdeclarator(SourceMap.location srcMap (left,right), d)
++
++fun markStatement srcMap (s,left,right) = 
++    MARKstatement(SourceMap.location srcMap (left, right), s)
++
++fun markExpression srcMap (s,left,right) = 
++    MARKexpression(SourceMap.location srcMap (left, right), s)
++
++val unknown = {storage=[],qualifiers=[],specifiers=[]}:decltype
++
++(* this code duplicated in BuildAst in function processDeclarator *)
++fun ctypeDecrToTypeName (typ as {qualifiers, specifiers},decr) =
++      let fun mkTyp spc = {qualifiers=[], specifiers=[spc]}
++	  fun addQual q = {qualifiers=q::qualifiers, specifiers=specifiers}
++       in case decr
++	    of VarDecr x => (typ,SOME x)
++	     | PointerDecr x =>
++		ctypeDecrToTypeName (mkTyp (Pointer typ),x)
++	     | ArrayDecr (x,sz) =>
++		ctypeDecrToTypeName (mkTyp (Array (sz,typ)),x)
++	     | FuncDecr (x,lst) =>
++		ctypeDecrToTypeName (mkTyp (Function{retType=typ,params=lst}),x)
++	     | QualDecr (q,decr) =>
++		ctypeDecrToTypeName (addQual q, decr)
++	     | EmptyDecr => (typ, NONE)
++	     | EllipsesDecr => (mkTyp Ellipses, SOME("**ellipses**"))
++	     | DecrExt _ => (typ, NONE)  (* should call decr extension? *)
++	     | MARKdeclarator(loc, decr) => ctypeDecrToTypeName(typ, decr)
++      end
++
++fun dclr2str dcl = 
++  (case ctypeDecrToTypeName ({qualifiers=[],specifiers=[]}, dcl)
++     of (_,SOME s) => s
++      | (_,NONE) => "")
++
++fun combineDecltypes ( {qualifiers=q1,storage=st1,specifiers=sp1}
++	           , {qualifiers=q2,storage=st2,specifiers=sp2}
++	           ) =
++  {qualifiers=q1@q2,storage=st1@st2,specifiers=sp1@sp2}  (* @ ok *)
++
++fun applyPointer (PointerDecr x,rest) = PointerDecr (applyPointer (x,rest))
++  | applyPointer (QualDecr (q,x),rest) = QualDecr (q, applyPointer (x,rest))
++  | applyPointer (EmptyDecr, rest) = rest
++  | applyPointer (_, rest) = rest  
++    (* NCH/DBM[6/14/99]: this case can never occur  *)
++
++fun addStorage(st, {qualifiers,storage,specifiers}) =
++        {qualifiers=qualifiers,storage=st::storage,specifiers=specifiers}
++
++fun addQualifiers(qs, {qualifiers,storage,specifiers}) =
++	{qualifiers=qs@qualifiers,storage=storage,specifiers=specifiers} (* @ ok *)
++
++fun addQualifier(q, {qualifiers,storage,specifiers}) =
++	{qualifiers=q::qualifiers,storage=storage,specifiers=specifiers}
++
++fun addSpecifier(sp, {qualifiers,storage,specifiers}) =
++	{qualifiers=qualifiers,storage=storage,specifiers=sp::specifiers}
++
++val addAll = combineDecltypes
++
++fun loopQd (q::rst, acc) = loopQd(rst, QualDecr(q, acc))
++  | loopQd (nil, acc) = acc
++
++fun mkCtype typ = typ
++
++(* DBM: major kludge, using TYPEDEF as storage class *)
++fun insertDeclNames ({storage,...}: decltype, idl) =
++    case storage
++      of [TYPEDEF] =>  List.app (fn x as (dcl,_) => TypeDefs.addTdef (dclr2str dcl)) idl
++       | _ => List.app (fn x as (dcl,_) => TypeDefs.addNoTdef (dclr2str dcl)) idl
++
++fun insertFuncName dcl =
++  let
++    val name = dclr2str dcl
++  in
++    TypeDefs.addNoTdef name
++  end
++
++fun insertFuncParams (FuncDecr (_,params)) : unit = 
++     let
++       fun getName (ct, dclr) = dclr2str dclr
++       val names = map getName params
++     in
++       List.app TypeDefs.addNoTdef names
++     end
++  | insertFuncParams (ArrayDecr(dcl,_)) = insertFuncParams dcl
++  | insertFuncParams (PointerDecr dcl) = insertFuncParams dcl
++  | insertFuncParams _ = ()  (* this is actually an error, but it will be caught in
++		              * BuildAst when processing a PT.FunctionDef *)
++
++abstype 'a seq = SEQ of 'a list
++with val emptySeq = SEQ nil
++     fun singletonSeq x = SEQ[x]
++     fun addToSeq(x, SEQ yl) = SEQ(x :: yl)  (* add to end of sequence! *)
++  (* fun addListToEnd(xl, yl) = SEQ((List.rev xl) @ yl) *)
++     fun addOptToEnd(NONE, yl) = yl
++       | addOptToEnd(SOME x, SEQ yl) = SEQ(x :: yl)
++     fun seqToList(SEQ yl) = List.rev yl
++end
++
++
++end
++structure LrTable = Token.LrTable
++structure Token = Token
++local open LrTable in 
++val table=let val actionRows =
++"\
++\\001\000\001\000\000\000\000\000\
++\\001\000\002\000\169\000\004\000\070\000\022\000\042\000\026\000\041\000\
++\\089\000\069\000\000\000\
++\\001\000\002\000\174\000\004\000\043\000\022\000\042\000\026\000\041\000\
++\\071\000\034\000\072\000\033\000\073\000\032\000\074\000\031\000\
++\\075\000\030\000\076\000\029\000\077\000\028\000\080\000\027\000\
++\\081\000\026\000\082\000\025\000\083\000\024\000\084\000\023\000\
++\\089\000\021\000\000\000\
++\\001\000\002\000\226\000\000\000\
++\\001\000\002\000\075\001\011\000\178\000\000\000\
++\\001\000\002\000\115\001\011\000\178\000\000\000\
++\\001\000\003\000\083\002\006\000\130\002\011\000\083\002\027\000\139\000\
++\\052\000\130\002\053\000\130\002\054\000\130\002\055\000\130\002\
++\\056\000\130\002\057\000\130\002\071\000\130\002\072\000\130\002\
++\\073\000\130\002\074\000\130\002\075\000\130\002\076\000\130\002\
++\\077\000\130\002\080\000\130\002\081\000\130\002\082\000\130\002\
++\\083\000\130\002\084\000\130\002\086\000\130\002\089\000\130\002\000\000\
++\\001\000\003\000\087\002\006\000\131\002\011\000\087\002\027\000\135\000\
++\\052\000\131\002\053\000\131\002\054\000\131\002\055\000\131\002\
++\\056\000\131\002\057\000\131\002\071\000\131\002\072\000\131\002\
++\\073\000\131\002\074\000\131\002\075\000\131\002\076\000\131\002\
++\\077\000\131\002\080\000\131\002\081\000\131\002\082\000\131\002\
++\\083\000\131\002\084\000\131\002\086\000\131\002\089\000\131\002\000\000\
++\\001\000\003\000\048\000\000\000\
++\\001\000\003\000\127\000\004\000\126\000\006\000\054\000\007\000\194\001\
++\\014\000\125\000\016\000\124\000\018\000\123\000\019\000\122\000\
++\\021\000\121\000\022\000\120\000\023\000\119\000\024\000\118\000\
++\\026\000\117\000\048\000\116\000\049\000\115\000\050\000\114\000\
++\\051\000\113\000\052\000\156\002\053\000\156\002\054\000\156\002\
++\\055\000\156\002\056\000\156\002\057\000\156\002\058\000\112\000\
++\\061\000\111\000\062\000\110\000\063\000\109\000\064\000\108\000\
++\\065\000\107\000\066\000\106\000\067\000\105\000\068\000\104\000\
++\\069\000\103\000\070\000\102\000\071\000\156\002\072\000\156\002\
++\\073\000\156\002\074\000\156\002\075\000\156\002\076\000\156\002\
++\\077\000\156\002\080\000\156\002\081\000\156\002\082\000\156\002\
++\\083\000\156\002\084\000\156\002\085\000\101\000\086\000\156\002\
++\\089\000\156\002\000\000\
++\\001\000\003\000\127\000\004\000\126\000\006\000\054\000\014\000\125\000\
++\\016\000\124\000\018\000\123\000\019\000\122\000\021\000\121\000\
++\\022\000\120\000\023\000\119\000\024\000\118\000\026\000\117\000\
++\\048\000\116\000\049\000\115\000\050\000\114\000\051\000\113\000\
++\\058\000\112\000\061\000\111\000\062\000\110\000\063\000\109\000\
++\\064\000\108\000\065\000\107\000\066\000\106\000\067\000\105\000\
++\\068\000\104\000\069\000\103\000\070\000\102\000\085\000\101\000\000\000\
++\\001\000\003\000\179\000\011\000\178\000\000\000\
++\\001\000\003\000\221\000\000\000\
++\\001\000\003\000\222\000\000\000\
++\\001\000\003\000\021\001\011\000\020\001\000\000\
++\\001\000\003\000\025\001\011\000\024\001\000\000\
++\\001\000\003\000\071\001\000\000\
++\\001\000\003\000\072\001\000\000\
++\\001\000\003\000\124\001\000\000\
++\\001\000\003\000\159\001\000\000\
++\\001\000\003\000\161\001\000\000\
++\\001\000\004\000\043\000\022\000\042\000\026\000\041\000\000\000\
++\\001\000\004\000\043\000\022\000\042\000\026\000\041\000\052\000\040\000\
++\\053\000\039\000\054\000\038\000\055\000\037\000\056\000\036\000\
++\\057\000\035\000\071\000\034\000\072\000\033\000\073\000\032\000\
++\\074\000\031\000\075\000\030\000\076\000\029\000\077\000\028\000\
++\\080\000\027\000\081\000\026\000\082\000\025\000\083\000\024\000\
++\\084\000\023\000\086\000\022\000\089\000\021\000\000\000\
++\\001\000\004\000\043\000\026\000\041\000\000\000\
++\\001\000\004\000\070\000\022\000\042\000\026\000\041\000\089\000\069\000\000\000\
++\\001\000\004\000\070\000\026\000\041\000\089\000\069\000\000\000\
++\\001\000\004\000\126\000\005\000\069\001\014\000\125\000\016\000\124\000\
++\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
++\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
++\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\001\000\004\000\126\000\006\000\242\000\014\000\125\000\016\000\124\000\
++\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
++\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
++\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\001\000\004\000\126\000\009\000\145\000\014\000\125\000\016\000\124\000\
++\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
++\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
++\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\001\000\004\000\126\000\009\000\245\000\014\000\125\000\016\000\124\000\
++\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
++\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
++\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\001\000\004\000\126\000\009\000\098\001\014\000\125\000\016\000\124\000\
++\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
++\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
++\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\001\000\004\000\126\000\009\000\130\001\014\000\125\000\016\000\124\000\
++\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
++\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
++\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\001\000\004\000\126\000\009\000\137\001\014\000\125\000\016\000\124\000\
++\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
++\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
++\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\001\000\004\000\126\000\014\000\125\000\016\000\124\000\018\000\123\000\
++\\019\000\122\000\021\000\121\000\022\000\120\000\023\000\119\000\
++\\024\000\118\000\026\000\144\000\048\000\116\000\049\000\115\000\
++\\050\000\114\000\051\000\113\000\056\000\036\000\057\000\035\000\
++\\071\000\034\000\072\000\033\000\073\000\032\000\074\000\031\000\
++\\075\000\030\000\076\000\029\000\077\000\028\000\080\000\027\000\
++\\081\000\026\000\082\000\025\000\083\000\024\000\084\000\023\000\
++\\085\000\101\000\089\000\021\000\000\000\
++\\001\000\004\000\126\000\014\000\125\000\016\000\124\000\018\000\123\000\
++\\019\000\122\000\021\000\121\000\022\000\120\000\023\000\119\000\
++\\024\000\118\000\026\000\144\000\048\000\116\000\049\000\115\000\
++\\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\001\000\004\000\215\000\008\000\214\000\009\000\252\000\010\000\213\000\
++\\012\000\212\000\013\000\211\000\014\000\210\000\015\000\209\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\020\000\205\000\
++\\022\000\204\000\023\000\203\000\024\000\202\000\025\000\201\000\
++\\027\000\200\000\028\000\199\000\029\000\198\000\030\000\197\000\
++\\031\000\196\000\032\000\195\000\033\000\194\000\034\000\193\000\
++\\035\000\192\000\036\000\191\000\037\000\190\000\038\000\189\000\
++\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
++\\043\000\184\000\044\000\183\000\045\000\182\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\001\000\004\000\215\000\008\000\214\000\009\000\088\001\010\000\213\000\
++\\012\000\212\000\013\000\211\000\014\000\210\000\015\000\209\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\020\000\205\000\
++\\022\000\204\000\023\000\203\000\024\000\202\000\025\000\201\000\
++\\027\000\200\000\028\000\199\000\029\000\198\000\030\000\197\000\
++\\031\000\196\000\032\000\195\000\033\000\194\000\034\000\193\000\
++\\035\000\192\000\036\000\191\000\037\000\190\000\038\000\189\000\
++\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
++\\043\000\184\000\044\000\183\000\045\000\182\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\001\000\004\000\215\000\008\000\214\000\009\000\133\001\010\000\213\000\
++\\012\000\212\000\013\000\211\000\014\000\210\000\015\000\209\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\020\000\205\000\
++\\022\000\204\000\023\000\203\000\024\000\202\000\025\000\201\000\
++\\027\000\200\000\028\000\199\000\029\000\198\000\030\000\197\000\
++\\031\000\196\000\032\000\195\000\033\000\194\000\034\000\193\000\
++\\035\000\192\000\036\000\191\000\037\000\190\000\038\000\189\000\
++\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
++\\043\000\184\000\044\000\183\000\045\000\182\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\001\000\004\000\215\000\008\000\214\000\009\000\153\001\010\000\213\000\
++\\012\000\212\000\013\000\211\000\014\000\210\000\015\000\209\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\020\000\205\000\
++\\022\000\204\000\023\000\203\000\024\000\202\000\025\000\201\000\
++\\027\000\200\000\028\000\199\000\029\000\198\000\030\000\197\000\
++\\031\000\196\000\032\000\195\000\033\000\194\000\034\000\193\000\
++\\035\000\192\000\036\000\191\000\037\000\190\000\038\000\189\000\
++\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
++\\043\000\184\000\044\000\183\000\045\000\182\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\001\000\004\000\215\000\008\000\214\000\009\000\155\001\010\000\213\000\
++\\012\000\212\000\013\000\211\000\014\000\210\000\015\000\209\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\020\000\205\000\
++\\022\000\204\000\023\000\203\000\024\000\202\000\025\000\201\000\
++\\027\000\200\000\028\000\199\000\029\000\198\000\030\000\197\000\
++\\031\000\196\000\032\000\195\000\033\000\194\000\034\000\193\000\
++\\035\000\192\000\036\000\191\000\037\000\190\000\038\000\189\000\
++\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
++\\043\000\184\000\044\000\183\000\045\000\182\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\001\000\004\000\219\000\014\000\125\000\016\000\124\000\018\000\123\000\
++\\019\000\122\000\021\000\121\000\022\000\120\000\023\000\119\000\
++\\024\000\118\000\026\000\144\000\048\000\116\000\049\000\115\000\
++\\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\001\000\004\000\225\000\000\000\
++\\001\000\004\000\228\000\000\000\
++\\001\000\004\000\230\000\000\000\
++\\001\000\004\000\231\000\000\000\
++\\001\000\004\000\006\001\005\000\101\001\008\000\005\001\022\000\042\000\
++\\026\000\041\000\052\000\040\000\053\000\039\000\054\000\038\000\
++\\055\000\037\000\056\000\036\000\057\000\035\000\071\000\034\000\
++\\072\000\033\000\073\000\032\000\074\000\031\000\075\000\030\000\
++\\076\000\029\000\077\000\028\000\080\000\027\000\081\000\026\000\
++\\082\000\025\000\083\000\024\000\084\000\023\000\086\000\022\000\
++\\089\000\021\000\000\000\
++\\001\000\004\000\006\001\008\000\005\001\022\000\042\000\026\000\041\000\
++\\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
++\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
++\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
++\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
++\\083\000\024\000\084\000\023\000\086\000\022\000\089\000\021\000\000\000\
++\\001\000\004\000\083\001\005\000\101\001\008\000\005\001\022\000\042\000\
++\\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
++\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
++\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
++\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
++\\083\000\024\000\084\000\023\000\086\000\022\000\089\000\021\000\000\000\
++\\001\000\004\000\123\001\000\000\
++\\001\000\005\000\153\000\026\000\152\000\052\000\040\000\053\000\039\000\
++\\054\000\038\000\055\000\037\000\056\000\036\000\057\000\035\000\
++\\071\000\034\000\072\000\033\000\073\000\032\000\074\000\031\000\
++\\075\000\030\000\076\000\029\000\077\000\028\000\080\000\027\000\
++\\081\000\026\000\082\000\025\000\083\000\024\000\084\000\023\000\
++\\086\000\022\000\089\000\021\000\000\000\
++\\001\000\005\000\161\000\000\000\
++\\001\000\005\000\248\000\026\000\152\000\052\000\040\000\053\000\039\000\
++\\054\000\038\000\055\000\037\000\056\000\036\000\057\000\035\000\
++\\071\000\034\000\072\000\033\000\073\000\032\000\074\000\031\000\
++\\075\000\030\000\076\000\029\000\077\000\028\000\080\000\027\000\
++\\081\000\026\000\082\000\025\000\083\000\024\000\084\000\023\000\
++\\086\000\022\000\089\000\021\000\000\000\
++\\001\000\005\000\251\000\000\000\
++\\001\000\005\000\253\000\000\000\
++\\001\000\005\000\000\001\011\000\255\000\000\000\
++\\001\000\005\000\084\001\000\000\
++\\001\000\005\000\085\001\011\000\178\000\000\000\
++\\001\000\005\000\089\001\000\000\
++\\001\000\005\000\090\001\011\000\255\000\000\000\
++\\001\000\005\000\118\001\011\000\117\001\000\000\
++\\001\000\005\000\119\001\000\000\
++\\001\000\005\000\120\001\011\000\178\000\000\000\
++\\001\000\005\000\122\001\011\000\178\000\000\000\
++\\001\000\005\000\125\001\011\000\178\000\000\000\
++\\001\000\005\000\132\001\052\000\040\000\053\000\039\000\054\000\038\000\
++\\055\000\037\000\056\000\036\000\057\000\035\000\071\000\034\000\
++\\072\000\033\000\073\000\032\000\074\000\031\000\075\000\030\000\
++\\076\000\029\000\077\000\028\000\080\000\027\000\081\000\026\000\
++\\082\000\025\000\083\000\024\000\084\000\023\000\086\000\022\000\
++\\089\000\021\000\000\000\
++\\001\000\005\000\134\001\000\000\
++\\001\000\005\000\135\001\000\000\
++\\001\000\005\000\140\001\026\000\152\000\052\000\040\000\053\000\039\000\
++\\054\000\038\000\055\000\037\000\056\000\036\000\057\000\035\000\
++\\071\000\034\000\072\000\033\000\073\000\032\000\074\000\031\000\
++\\075\000\030\000\076\000\029\000\077\000\028\000\080\000\027\000\
++\\081\000\026\000\082\000\025\000\083\000\024\000\084\000\023\000\
++\\086\000\022\000\089\000\021\000\000\000\
++\\001\000\005\000\154\001\000\000\
++\\001\000\005\000\156\001\000\000\
++\\001\000\005\000\157\001\011\000\255\000\000\000\
++\\001\000\005\000\158\001\011\000\178\000\000\000\
++\\001\000\005\000\164\001\000\000\
++\\001\000\006\000\047\000\026\000\046\000\089\000\045\000\000\000\
++\\001\000\006\000\054\000\052\000\040\000\053\000\039\000\054\000\038\000\
++\\055\000\037\000\056\000\036\000\057\000\035\000\071\000\034\000\
++\\072\000\033\000\073\000\032\000\074\000\031\000\075\000\030\000\
++\\076\000\029\000\077\000\028\000\080\000\027\000\081\000\026\000\
++\\082\000\025\000\083\000\024\000\084\000\023\000\086\000\022\000\
++\\089\000\021\000\000\000\
++\\001\000\006\000\076\000\026\000\075\000\089\000\074\000\000\000\
++\\001\000\007\000\165\000\056\000\036\000\057\000\035\000\071\000\034\000\
++\\072\000\033\000\073\000\032\000\074\000\031\000\075\000\030\000\
++\\076\000\029\000\077\000\028\000\080\000\027\000\081\000\026\000\
++\\082\000\025\000\083\000\024\000\084\000\023\000\089\000\021\000\000\000\
++\\001\000\007\000\217\000\000\000\
++\\001\000\007\000\018\001\056\000\036\000\057\000\035\000\071\000\034\000\
++\\072\000\033\000\073\000\032\000\074\000\031\000\075\000\030\000\
++\\076\000\029\000\077\000\028\000\080\000\027\000\081\000\026\000\
++\\082\000\025\000\083\000\024\000\084\000\023\000\089\000\021\000\000\000\
++\\001\000\007\000\019\001\056\000\036\000\057\000\035\000\071\000\034\000\
++\\072\000\033\000\073\000\032\000\074\000\031\000\075\000\030\000\
++\\076\000\029\000\077\000\028\000\080\000\027\000\081\000\026\000\
++\\082\000\025\000\083\000\024\000\084\000\023\000\089\000\021\000\000\000\
++\\001\000\007\000\107\001\000\000\
++\\001\000\007\000\141\001\000\000\
++\\001\000\007\000\142\001\000\000\
++\\001\000\007\000\143\001\000\000\
++\\001\000\007\000\151\001\000\000\
++\\001\000\009\000\116\001\011\000\178\000\000\000\
++\\001\000\026\000\158\000\000\000\
++\\001\000\026\000\220\000\000\000\
++\\001\000\026\000\054\001\089\000\053\001\000\000\
++\\001\000\026\000\065\001\089\000\064\001\000\000\
++\\001\000\026\000\093\001\000\000\
++\\001\000\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
++\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
++\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
++\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
++\\083\000\024\000\084\000\023\000\086\000\022\000\088\000\092\001\
++\\089\000\021\000\000\000\
++\\001\000\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
++\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
++\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
++\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
++\\083\000\024\000\084\000\023\000\086\000\022\000\089\000\021\000\000\000\
++\\001\000\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
++\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
++\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
++\\083\000\024\000\084\000\023\000\089\000\021\000\000\000\
++\\001\000\066\000\077\001\000\000\
++\\001\000\071\000\034\000\072\000\033\000\073\000\032\000\074\000\031\000\
++\\075\000\030\000\076\000\029\000\077\000\028\000\080\000\027\000\
++\\081\000\026\000\082\000\025\000\083\000\024\000\084\000\023\000\
++\\089\000\021\000\000\000\
++\\167\001\003\000\044\000\004\000\043\000\022\000\042\000\026\000\041\000\
++\\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
++\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
++\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
++\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
++\\083\000\024\000\084\000\023\000\086\000\022\000\089\000\021\000\000\000\
++\\168\001\000\000\
++\\169\001\000\000\
++\\170\001\000\000\
++\\171\001\000\000\
++\\172\001\000\000\
++\\173\001\000\000\
++\\174\001\000\000\
++\\175\001\000\000\
++\\176\001\000\000\
++\\177\001\000\000\
++\\178\001\000\000\
++\\179\001\000\000\
++\\180\001\000\000\
++\\181\001\000\000\
++\\182\001\000\000\
++\\183\001\000\000\
++\\184\001\000\000\
++\\185\001\060\000\160\001\000\000\
++\\186\001\000\000\
++\\187\001\000\000\
++\\188\001\000\000\
++\\189\001\000\000\
++\\190\001\004\000\070\000\022\000\042\000\026\000\041\000\089\000\069\000\000\000\
++\\191\001\011\000\141\000\000\000\
++\\192\001\011\000\136\000\000\000\
++\\193\001\003\000\127\000\004\000\126\000\006\000\054\000\014\000\125\000\
++\\016\000\124\000\018\000\123\000\019\000\122\000\021\000\121\000\
++\\022\000\120\000\023\000\119\000\024\000\118\000\026\000\117\000\
++\\048\000\116\000\049\000\115\000\050\000\114\000\051\000\113\000\
++\\058\000\112\000\061\000\111\000\062\000\110\000\063\000\109\000\
++\\064\000\108\000\065\000\107\000\066\000\106\000\067\000\105\000\
++\\068\000\104\000\069\000\103\000\070\000\102\000\085\000\101\000\000\000\
++\\194\001\003\000\127\000\004\000\126\000\006\000\054\000\014\000\125\000\
++\\016\000\124\000\018\000\123\000\019\000\122\000\021\000\121\000\
++\\022\000\120\000\023\000\119\000\024\000\118\000\026\000\117\000\
++\\048\000\116\000\049\000\115\000\050\000\114\000\051\000\113\000\
++\\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
++\\056\000\036\000\057\000\035\000\058\000\112\000\061\000\111\000\
++\\062\000\110\000\063\000\109\000\064\000\108\000\065\000\107\000\
++\\066\000\106\000\067\000\105\000\068\000\104\000\069\000\103\000\
++\\070\000\102\000\071\000\034\000\072\000\033\000\073\000\032\000\
++\\074\000\031\000\075\000\030\000\076\000\029\000\077\000\028\000\
++\\080\000\027\000\081\000\026\000\082\000\025\000\083\000\024\000\
++\\084\000\023\000\085\000\101\000\086\000\022\000\089\000\021\000\000\000\
++\\195\001\000\000\
++\\196\001\000\000\
++\\197\001\000\000\
++\\198\001\000\000\
++\\199\001\000\000\
++\\200\001\000\000\
++\\201\001\000\000\
++\\202\001\000\000\
++\\203\001\000\000\
++\\204\001\000\000\
++\\205\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\038\000\189\000\
++\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
++\\043\000\184\000\044\000\183\000\045\000\182\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\206\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\207\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\208\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\209\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\210\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\211\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\212\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\213\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\214\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\215\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\216\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\217\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\014\000\210\000\015\000\209\000\017\000\208\000\018\000\207\000\
++\\019\000\206\000\020\000\205\000\022\000\204\000\023\000\203\000\
++\\024\000\202\000\025\000\201\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\218\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\014\000\210\000\015\000\209\000\017\000\208\000\018\000\207\000\
++\\019\000\206\000\020\000\205\000\022\000\204\000\023\000\203\000\
++\\024\000\202\000\025\000\201\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\046\000\181\000\047\000\180\000\000\000\
++\\219\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\014\000\210\000\017\000\208\000\018\000\207\000\019\000\206\000\
++\\020\000\205\000\022\000\204\000\023\000\203\000\024\000\202\000\
++\\025\000\201\000\038\000\189\000\039\000\188\000\040\000\187\000\
++\\041\000\186\000\042\000\185\000\043\000\184\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\220\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\014\000\210\000\017\000\208\000\018\000\207\000\019\000\206\000\
++\\022\000\204\000\023\000\203\000\024\000\202\000\025\000\201\000\
++\\038\000\189\000\039\000\188\000\040\000\187\000\041\000\186\000\
++\\042\000\185\000\043\000\184\000\046\000\181\000\047\000\180\000\000\000\
++\\221\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\038\000\189\000\
++\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
++\\043\000\184\000\046\000\181\000\047\000\180\000\000\000\
++\\222\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\038\000\189\000\
++\\039\000\188\000\040\000\187\000\041\000\186\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\223\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\038\000\189\000\
++\\039\000\188\000\040\000\187\000\041\000\186\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\224\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\225\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\226\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\227\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\228\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\000\000\
++\\229\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\000\000\
++\\230\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\022\000\204\000\023\000\203\000\024\000\202\000\
++\\025\000\201\000\000\000\
++\\231\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\022\000\204\000\023\000\203\000\024\000\202\000\
++\\025\000\201\000\000\000\
++\\232\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
++\\024\000\202\000\025\000\201\000\000\000\
++\\233\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
++\\024\000\202\000\025\000\201\000\000\000\
++\\234\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
++\\024\000\202\000\025\000\201\000\000\000\
++\\235\001\000\000\
++\\236\001\000\000\
++\\237\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
++\\024\000\202\000\025\000\201\000\000\000\
++\\238\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
++\\024\000\202\000\025\000\201\000\000\000\
++\\239\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
++\\024\000\202\000\025\000\201\000\000\000\
++\\240\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
++\\024\000\202\000\025\000\201\000\000\000\
++\\241\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
++\\024\000\202\000\025\000\201\000\000\000\
++\\242\001\004\000\126\000\016\000\124\000\021\000\121\000\023\000\119\000\
++\\024\000\118\000\026\000\144\000\048\000\116\000\049\000\115\000\
++\\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\243\001\000\000\
++\\244\001\000\000\
++\\245\001\000\000\
++\\246\001\000\000\
++\\247\001\000\000\
++\\248\001\000\000\
++\\249\001\000\000\
++\\250\001\000\000\
++\\251\001\000\000\
++\\252\001\000\000\
++\\253\001\000\000\
++\\254\001\000\000\
++\\254\001\002\000\233\000\000\000\
++\\255\001\000\000\
++\\000\002\050\000\114\000\000\000\
++\\001\002\000\000\
++\\002\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\003\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\004\002\004\000\126\000\014\000\125\000\016\000\124\000\018\000\123\000\
++\\019\000\122\000\021\000\121\000\022\000\120\000\023\000\119\000\
++\\024\000\118\000\026\000\144\000\048\000\116\000\049\000\115\000\
++\\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\005\002\011\000\178\000\000\000\
++\\006\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\007\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\008\002\004\000\083\001\008\000\005\001\022\000\042\000\000\000\
++\\009\002\000\000\
++\\010\002\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
++\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
++\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
++\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
++\\083\000\024\000\084\000\023\000\086\000\022\000\000\000\
++\\011\002\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
++\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
++\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
++\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
++\\083\000\024\000\084\000\023\000\086\000\022\000\000\000\
++\\012\002\000\000\
++\\013\002\000\000\
++\\014\002\000\000\
++\\015\002\000\000\
++\\016\002\000\000\
++\\017\002\000\000\
++\\018\002\000\000\
++\\019\002\000\000\
++\\020\002\000\000\
++\\021\002\000\000\
++\\022\002\000\000\
++\\023\002\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
++\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
++\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
++\\083\000\024\000\084\000\023\000\000\000\
++\\024\002\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
++\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
++\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
++\\083\000\024\000\084\000\023\000\000\000\
++\\025\002\000\000\
++\\026\002\000\000\
++\\027\002\056\000\036\000\057\000\035\000\000\000\
++\\028\002\000\000\
++\\029\002\000\000\
++\\030\002\000\000\
++\\031\002\000\000\
++\\032\002\000\000\
++\\033\002\000\000\
++\\034\002\000\000\
++\\035\002\000\000\
++\\036\002\000\000\
++\\037\002\000\000\
++\\038\002\000\000\
++\\039\002\000\000\
++\\040\002\000\000\
++\\041\002\000\000\
++\\042\002\000\000\
++\\043\002\000\000\
++\\044\002\000\000\
++\\045\002\006\000\082\000\000\000\
++\\046\002\006\000\081\000\000\000\
++\\047\002\000\000\
++\\048\002\000\000\
++\\049\002\000\000\
++\\050\002\000\000\
++\\051\002\000\000\
++\\052\002\000\000\
++\\053\002\000\000\
++\\054\002\000\000\
++\\055\002\000\000\
++\\056\002\000\000\
++\\057\002\002\000\022\001\000\000\
++\\058\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\059\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\060\002\002\000\027\001\000\000\
++\\061\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\062\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\063\002\000\000\
++\\064\002\000\000\
++\\065\002\000\000\
++\\066\002\000\000\
++\\067\002\000\000\
++\\068\002\006\000\155\000\000\000\
++\\069\002\006\000\154\000\000\000\
++\\070\002\000\000\
++\\071\002\000\000\
++\\072\002\027\000\017\001\000\000\
++\\073\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\074\002\000\000\
++\\075\002\000\000\
++\\076\002\000\000\
++\\077\002\000\000\
++\\078\002\000\000\
++\\079\002\011\000\016\001\000\000\
++\\079\002\011\000\128\001\000\000\
++\\080\002\004\000\126\000\006\000\242\000\014\000\125\000\016\000\124\000\
++\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
++\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
++\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\080\002\026\000\158\000\000\000\
++\\081\002\000\000\
++\\082\002\000\000\
++\\083\002\027\000\139\000\000\000\
++\\084\002\000\000\
++\\085\002\000\000\
++\\086\002\000\000\
++\\087\002\027\000\135\000\000\000\
++\\088\002\000\000\
++\\089\002\000\000\
++\\090\002\000\000\
++\\091\002\004\000\138\000\008\000\137\000\000\000\
++\\092\002\004\000\138\000\008\000\137\000\000\000\
++\\093\002\004\000\072\000\008\000\071\000\000\000\
++\\094\002\004\000\072\000\008\000\071\000\000\000\
++\\095\002\004\000\103\001\008\000\102\001\000\000\
++\\096\002\004\000\103\001\008\000\102\001\000\000\
++\\097\002\022\000\042\000\056\000\036\000\057\000\035\000\000\000\
++\\098\002\022\000\042\000\000\000\
++\\099\002\000\000\
++\\100\002\000\000\
++\\101\002\000\000\
++\\102\002\000\000\
++\\103\002\000\000\
++\\104\002\000\000\
++\\105\002\000\000\
++\\106\002\000\000\
++\\107\002\000\000\
++\\108\002\000\000\
++\\109\002\000\000\
++\\110\002\000\000\
++\\111\002\000\000\
++\\112\002\000\000\
++\\113\002\000\000\
++\\114\002\000\000\
++\\115\002\000\000\
++\\116\002\000\000\
++\\117\002\000\000\
++\\118\002\000\000\
++\\119\002\000\000\
++\\120\002\000\000\
++\\121\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\122\002\000\000\
++\\123\002\000\000\
++\\124\002\000\000\
++\\125\002\000\000\
++\\126\002\000\000\
++\\127\002\000\000\
++\\128\002\000\000\
++\\129\002\000\000\
++\\132\002\000\000\
++\\133\002\000\000\
++\\134\002\004\000\006\001\008\000\005\001\026\000\041\000\000\000\
++\\134\002\004\000\006\001\008\000\005\001\026\000\041\000\089\000\012\001\000\000\
++\\134\002\004\000\083\001\008\000\005\001\000\000\
++\\135\002\004\000\096\001\008\000\095\001\000\000\
++\\136\002\004\000\096\001\008\000\095\001\000\000\
++\\137\002\000\000\
++\\138\002\000\000\
++\\139\002\000\000\
++\\140\002\000\000\
++\\141\002\000\000\
++\\142\002\000\000\
++\\143\002\000\000\
++\\144\002\000\000\
++\\145\002\000\000\
++\\146\002\011\000\254\000\000\000\
++\\147\002\000\000\
++\\148\002\000\000\
++\\149\002\000\000\
++\\150\002\000\000\
++\\151\002\000\000\
++\\152\002\004\000\006\001\008\000\005\001\022\000\042\000\026\000\041\000\
++\\089\000\012\001\000\000\
++\\153\002\000\000\
++\\154\002\000\000\
++\\155\002\000\000\
++\\157\002\000\000\
++\"
++val actionRowNumbers =
++"\097\000\096\000\073\000\098\000\
++\\008\000\099\000\101\000\074\000\
++\\216\000\217\000\207\000\215\000\
++\\198\000\205\000\022\000\119\000\
++\\025\001\061\001\023\000\218\000\
++\\008\001\219\000\226\000\227\000\
++\\234\000\233\000\221\000\223\000\
++\\222\000\224\000\075\000\225\000\
++\\220\000\250\000\249\000\007\001\
++\\005\001\006\001\004\001\040\001\
++\\029\001\021\000\100\000\232\000\
++\\231\000\093\000\118\000\057\001\
++\\074\000\022\000\119\000\062\001\
++\\009\000\196\000\208\000\198\000\
++\\206\000\007\000\121\000\017\001\
++\\023\001\022\001\021\001\006\000\
++\\025\000\120\000\013\001\033\001\
++\\024\000\028\000\049\000\026\001\
++\\255\000\254\000\086\000\030\001\
++\\213\000\031\001\050\000\093\000\
++\\093\000\235\000\076\000\001\000\
++\\002\000\211\000\058\001\063\001\
++\\019\001\015\001\185\000\092\000\
++\\034\000\011\000\188\000\110\000\
++\\122\000\077\000\124\000\040\000\
++\\087\000\012\000\013\000\190\000\
++\\041\000\003\000\034\000\042\000\
++\\010\000\043\000\044\000\182\000\
++\\186\000\181\000\180\000\184\000\
++\\034\000\034\000\129\000\133\000\
++\\131\000\130\000\132\000\128\000\
++\\033\000\117\000\203\000\204\000\
++\\202\000\201\000\200\000\199\000\
++\\197\000\027\000\024\000\029\000\
++\\051\000\027\000\024\001\024\000\
++\\052\000\035\000\183\000\042\001\
++\\080\001\053\000\078\001\054\000\
++\\046\000\084\001\059\001\044\001\
++\\086\000\086\000\001\001\009\001\
++\\002\001\032\001\214\000\041\001\
++\\078\000\079\000\236\000\228\000\
++\\014\000\239\000\243\000\034\000\
++\\015\000\241\000\211\000\246\000\
++\\034\000\209\000\123\000\168\000\
++\\034\000\116\000\034\000\034\000\
++\\034\000\034\000\034\000\034\000\
++\\034\000\034\000\034\000\034\000\
++\\034\000\034\000\034\000\034\000\
++\\034\000\034\000\034\000\034\000\
++\\034\000\034\000\034\000\088\000\
++\\165\000\164\000\034\000\034\000\
++\\034\000\034\000\034\000\034\000\
++\\034\000\034\000\034\000\089\000\
++\\034\000\026\000\125\000\127\000\
++\\169\000\033\000\016\000\107\000\
++\\106\000\191\000\017\000\034\000\
++\\010\000\004\000\034\000\094\000\
++\\190\000\034\000\187\000\010\000\
++\\167\000\166\000\194\000\095\000\
++\\055\000\056\000\020\001\053\001\
++\\027\000\018\001\036\000\035\001\
++\\057\000\058\000\037\001\016\001\
++\\014\001\034\001\043\001\045\001\
++\\091\000\090\000\046\001\086\001\
++\\064\001\067\001\087\001\030\000\
++\\045\000\027\001\083\001\082\001\
++\\065\001\085\001\047\001\009\001\
++\\009\001\080\000\012\001\034\000\
++\\230\000\229\000\001\000\237\000\
++\\034\000\244\000\001\000\238\000\
++\\210\000\034\000\247\000\212\000\
++\\088\001\189\000\158\000\157\000\
++\\147\000\146\000\152\000\151\000\
++\\154\000\153\000\156\000\155\000\
++\\144\000\143\000\142\000\141\000\
++\\138\000\137\000\139\000\140\000\
++\\136\000\135\000\145\000\178\000\
++\\176\000\161\000\149\000\160\000\
++\\159\000\162\000\148\000\150\000\
++\\163\000\005\000\177\000\175\000\
++\\085\000\059\000\192\000\173\000\
++\\060\000\109\000\108\000\061\000\
++\\112\000\010\000\062\000\048\000\
++\\018\000\063\000\111\000\066\001\
++\\195\000\047\000\034\000\179\000\
++\\010\001\055\001\036\001\038\001\
++\\039\001\081\001\079\001\060\001\
++\\068\001\031\000\064\000\037\000\
++\\070\001\065\000\066\000\074\001\
++\\032\000\067\000\028\001\081\000\
++\\082\000\251\000\000\001\003\001\
++\\240\000\245\000\242\000\248\000\
++\\083\000\034\000\172\000\034\000\
++\\174\000\171\000\010\000\113\000\
++\\010\000\034\000\190\000\010\000\
++\\170\000\084\000\011\001\038\000\
++\\072\001\068\000\076\001\071\001\
++\\075\001\069\001\039\000\048\001\
++\\069\000\070\000\050\001\253\000\
++\\252\000\126\000\134\000\193\000\
++\\103\000\104\000\071\000\019\000\
++\\114\000\054\001\056\001\073\001\
++\\077\001\049\001\051\001\052\001\
++\\020\000\190\000\010\000\105\000\
++\\072\000\115\000\010\000\102\000\
++\\000\000"
++val gotoT =
++"\
++\\001\000\164\001\002\000\001\000\000\000\
++\\021\000\018\000\024\000\017\000\027\000\016\000\029\000\015\000\
++\\030\000\014\000\036\000\013\000\038\000\012\000\039\000\011\000\
++\\040\000\010\000\043\000\009\000\044\000\008\000\045\000\007\000\
++\\048\000\006\000\049\000\005\000\050\000\004\000\051\000\003\000\
++\\055\000\002\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\006\000\051\000\029\000\050\000\030\000\049\000\036\000\013\000\
++\\038\000\012\000\039\000\011\000\040\000\010\000\043\000\009\000\
++\\044\000\008\000\046\000\048\000\049\000\047\000\050\000\004\000\
++\\055\000\002\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\031\000\053\000\000\000\
++\\000\000\
++\\018\000\059\000\020\000\058\000\021\000\018\000\024\000\057\000\
++\\027\000\016\000\036\000\056\000\038\000\055\000\039\000\011\000\
++\\040\000\054\000\043\000\009\000\044\000\008\000\055\000\002\000\000\000\
++\\017\000\066\000\019\000\065\000\021\000\064\000\022\000\063\000\
++\\023\000\062\000\024\000\061\000\026\000\060\000\027\000\016\000\000\000\
++\\000\000\
++\\000\000\
++\\027\000\071\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\021\000\077\000\040\000\076\000\041\000\075\000\000\000\
++\\021\000\018\000\024\000\078\000\027\000\016\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\084\000\
++\\042\000\083\000\043\000\009\000\044\000\008\000\055\000\002\000\
++\\060\000\082\000\061\000\081\000\000\000\
++\\000\000\
++\\000\000\
++\\006\000\087\000\029\000\050\000\030\000\049\000\036\000\013\000\
++\\038\000\012\000\039\000\011\000\040\000\010\000\043\000\009\000\
++\\044\000\008\000\049\000\086\000\050\000\004\000\055\000\002\000\000\000\
++\\018\000\059\000\020\000\058\000\021\000\018\000\024\000\088\000\
++\\027\000\016\000\036\000\056\000\038\000\055\000\039\000\011\000\
++\\040\000\054\000\043\000\009\000\044\000\008\000\055\000\002\000\000\000\
++\\017\000\066\000\019\000\065\000\021\000\064\000\022\000\089\000\
++\\023\000\062\000\024\000\061\000\026\000\060\000\027\000\016\000\000\000\
++\\000\000\
++\\003\000\098\000\004\000\097\000\005\000\096\000\006\000\095\000\
++\\007\000\094\000\009\000\093\000\010\000\092\000\062\000\091\000\
++\\064\000\090\000\000\000\
++\\032\000\131\000\036\000\130\000\039\000\129\000\040\000\128\000\
++\\043\000\127\000\044\000\126\000\055\000\002\000\000\000\
++\\000\000\
++\\031\000\132\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\026\000\138\000\027\000\071\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\021\000\064\000\023\000\140\000\024\000\078\000\026\000\060\000\
++\\027\000\016\000\000\000\
++\\007\000\141\000\010\000\092\000\064\000\090\000\000\000\
++\\029\000\149\000\030\000\148\000\036\000\013\000\038\000\012\000\
++\\039\000\011\000\040\000\010\000\043\000\009\000\044\000\008\000\
++\\047\000\147\000\052\000\146\000\053\000\145\000\054\000\144\000\
++\\055\000\002\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\013\000\155\000\014\000\154\000\000\000\
++\\021\000\157\000\000\000\
++\\040\000\076\000\041\000\158\000\000\000\
++\\000\000\
++\\000\000\
++\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\084\000\
++\\042\000\083\000\043\000\009\000\044\000\008\000\055\000\002\000\
++\\060\000\160\000\061\000\081\000\000\000\
++\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\084\000\
++\\042\000\083\000\043\000\009\000\044\000\008\000\055\000\002\000\
++\\060\000\161\000\061\000\081\000\000\000\
++\\000\000\
++\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\084\000\
++\\042\000\083\000\043\000\009\000\044\000\008\000\055\000\002\000\
++\\061\000\162\000\000\000\
++\\021\000\064\000\022\000\166\000\023\000\062\000\024\000\061\000\
++\\026\000\060\000\027\000\016\000\056\000\165\000\058\000\164\000\000\000\
++\\021\000\018\000\024\000\171\000\027\000\016\000\038\000\170\000\
++\\039\000\011\000\043\000\009\000\044\000\008\000\055\000\002\000\
++\\057\000\169\000\059\000\168\000\000\000\
++\\033\000\173\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\029\000\050\000\030\000\049\000\036\000\013\000\038\000\012\000\
++\\039\000\011\000\040\000\010\000\043\000\009\000\044\000\008\000\
++\\046\000\174\000\049\000\047\000\050\000\004\000\055\000\002\000\000\000\
++\\007\000\175\000\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\003\000\214\000\006\000\095\000\007\000\094\000\009\000\093\000\
++\\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\007\000\216\000\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\094\000\008\000\222\000\009\000\221\000\010\000\092\000\
++\\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\007\000\094\000\009\000\225\000\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\003\000\227\000\006\000\095\000\007\000\094\000\009\000\093\000\
++\\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\064\000\230\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\232\000\010\000\092\000\064\000\090\000\000\000\
++\\007\000\233\000\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\094\000\009\000\237\000\010\000\092\000\037\000\236\000\
++\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\235\000\
++\\042\000\234\000\043\000\009\000\044\000\008\000\055\000\002\000\
++\\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\032\000\131\000\036\000\130\000\039\000\129\000\040\000\128\000\
++\\043\000\127\000\044\000\126\000\055\000\002\000\000\000\
++\\007\000\239\000\010\000\092\000\034\000\238\000\064\000\090\000\000\000\
++\\017\000\241\000\021\000\064\000\022\000\089\000\023\000\062\000\
++\\024\000\061\000\026\000\060\000\027\000\016\000\000\000\
++\\007\000\242\000\010\000\092\000\064\000\090\000\000\000\
++\\029\000\149\000\030\000\148\000\036\000\013\000\038\000\012\000\
++\\039\000\011\000\040\000\010\000\043\000\009\000\044\000\008\000\
++\\047\000\245\000\052\000\146\000\053\000\244\000\054\000\144\000\
++\\055\000\002\000\000\000\
++\\007\000\239\000\010\000\092\000\034\000\247\000\064\000\090\000\000\000\
++\\000\000\
++\\017\000\248\000\021\000\064\000\022\000\089\000\023\000\062\000\
++\\024\000\061\000\026\000\060\000\027\000\016\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\015\000\002\001\016\000\001\001\021\000\000\001\024\000\255\000\
++\\027\000\016\000\036\000\056\000\038\000\055\000\039\000\011\000\
++\\040\000\054\000\043\000\009\000\044\000\008\000\055\000\002\000\000\000\
++\\015\000\009\001\016\000\001\001\021\000\008\001\024\000\007\001\
++\\025\000\006\001\027\000\016\000\028\000\005\001\000\000\
++\\000\000\
++\\000\000\
++\\013\000\011\001\014\000\154\000\000\000\
++\\013\000\012\001\014\000\154\000\000\000\
++\\000\000\
++\\012\000\013\001\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\084\000\
++\\042\000\083\000\043\000\009\000\044\000\008\000\055\000\002\000\
++\\061\000\162\000\000\000\
++\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\084\000\
++\\042\000\083\000\043\000\009\000\044\000\008\000\055\000\002\000\
++\\061\000\162\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\021\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\033\000\024\001\000\000\
++\\000\000\
++\\007\000\026\001\010\000\092\000\064\000\090\000\000\000\
++\\032\000\027\001\039\000\129\000\040\000\128\000\043\000\127\000\
++\\044\000\126\000\055\000\002\000\000\000\
++\\003\000\098\000\004\000\028\001\005\000\096\000\006\000\095\000\
++\\007\000\094\000\009\000\093\000\010\000\092\000\029\000\050\000\
++\\030\000\049\000\036\000\013\000\038\000\012\000\039\000\011\000\
++\\040\000\010\000\043\000\009\000\044\000\008\000\049\000\086\000\
++\\050\000\004\000\055\000\002\000\064\000\090\000\000\000\
++\\000\000\
++\\007\000\029\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\007\000\030\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\031\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\032\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\033\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\034\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\035\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\036\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\037\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\038\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\039\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\040\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\041\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\042\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\043\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\044\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\045\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\046\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\047\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\048\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\049\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\050\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\053\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\054\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\055\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\056\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\057\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\058\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\059\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\060\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\094\000\009\000\061\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\007\000\094\000\009\000\064\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\066\001\010\000\092\000\011\000\065\001\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\094\000\009\000\237\000\010\000\092\000\037\000\068\001\
++\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\235\000\
++\\042\000\234\000\043\000\009\000\044\000\008\000\055\000\002\000\
++\\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\094\000\009\000\071\001\010\000\092\000\064\000\090\000\000\000\
++\\003\000\072\001\006\000\095\000\007\000\094\000\009\000\093\000\
++\\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\007\000\094\000\009\000\074\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\007\000\094\000\008\000\076\001\009\000\221\000\010\000\092\000\
++\\064\000\090\000\000\000\
++\\007\000\094\000\009\000\077\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\003\000\078\001\006\000\095\000\007\000\094\000\009\000\093\000\
++\\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\015\000\080\001\016\000\001\001\021\000\079\001\000\000\
++\\038\000\170\000\039\000\011\000\043\000\009\000\044\000\008\000\
++\\055\000\002\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\239\000\010\000\092\000\034\000\085\001\035\000\084\001\
++\\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\029\000\149\000\030\000\148\000\036\000\013\000\038\000\012\000\
++\\039\000\011\000\040\000\010\000\043\000\009\000\044\000\008\000\
++\\054\000\089\001\055\000\002\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\016\000\092\001\027\000\071\000\000\000\
++\\000\000\
++\\000\000\
++\\007\000\095\001\010\000\092\000\064\000\090\000\000\000\
++\\015\000\098\001\016\000\001\001\021\000\000\001\024\000\078\000\
++\\027\000\016\000\029\000\149\000\030\000\148\000\036\000\013\000\
++\\038\000\012\000\039\000\011\000\040\000\010\000\043\000\009\000\
++\\044\000\008\000\052\000\146\000\053\000\097\001\054\000\144\000\
++\\055\000\002\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\016\000\092\001\027\000\071\000\028\000\102\001\000\000\
++\\000\000\
++\\000\000\
++\\012\000\103\001\000\000\
++\\012\000\104\001\000\000\
++\\000\000\
++\\014\000\106\001\000\000\
++\\007\000\107\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\021\000\064\000\022\000\166\000\023\000\062\000\024\000\061\000\
++\\026\000\060\000\027\000\016\000\056\000\108\001\000\000\
++\\000\000\
++\\007\000\109\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\021\000\064\000\022\000\166\000\023\000\062\000\024\000\061\000\
++\\026\000\060\000\027\000\016\000\056\000\110\001\000\000\
++\\000\000\
++\\032\000\027\001\039\000\129\000\040\000\128\000\043\000\127\000\
++\\044\000\126\000\055\000\002\000\000\000\
++\\007\000\111\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\063\000\112\001\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\003\000\119\001\006\000\095\000\007\000\094\000\009\000\093\000\
++\\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\016\000\092\001\000\000\
++\\000\000\
++\\015\000\098\001\016\000\001\001\021\000\079\001\029\000\149\000\
++\\030\000\148\000\036\000\013\000\038\000\012\000\039\000\011\000\
++\\040\000\010\000\043\000\009\000\044\000\008\000\052\000\146\000\
++\\053\000\097\001\054\000\144\000\055\000\002\000\000\000\
++\\007\000\124\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\012\000\125\001\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\127\001\010\000\092\000\064\000\090\000\000\000\
++\\029\000\149\000\030\000\148\000\036\000\013\000\038\000\012\000\
++\\039\000\011\000\040\000\010\000\043\000\009\000\044\000\008\000\
++\\052\000\146\000\053\000\129\001\054\000\144\000\055\000\002\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\134\001\010\000\092\000\064\000\090\000\000\000\
++\\029\000\149\000\030\000\148\000\036\000\013\000\038\000\012\000\
++\\039\000\011\000\040\000\010\000\043\000\009\000\044\000\008\000\
++\\047\000\137\001\052\000\146\000\053\000\136\001\054\000\144\000\
++\\055\000\002\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\142\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\007\000\143\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\007\000\124\001\010\000\092\000\064\000\090\000\000\000\
++\\003\000\144\001\006\000\095\000\007\000\094\000\009\000\093\000\
++\\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\003\000\145\001\006\000\095\000\007\000\094\000\009\000\093\000\
++\\010\000\092\000\064\000\090\000\000\000\
++\\007\000\094\000\009\000\146\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\094\000\008\000\147\001\009\000\221\000\010\000\092\000\
++\\064\000\090\000\000\000\
++\\003\000\148\001\006\000\095\000\007\000\094\000\009\000\093\000\
++\\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\007\000\239\000\010\000\092\000\034\000\150\001\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\094\000\008\000\160\001\009\000\221\000\010\000\092\000\
++\\064\000\090\000\000\000\
++\\003\000\161\001\006\000\095\000\007\000\094\000\009\000\093\000\
++\\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\003\000\163\001\006\000\095\000\007\000\094\000\009\000\093\000\
++\\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\"
++val numstates = 421
++val numrules = 247
++val s = ref "" and index = ref 0
++val string_to_int = fn () => 
++let val i = !index
++in index := i+2; Char.ord(String.sub(!s,i)) + Char.ord(String.sub(!s,i+1)) * 256
++end
++val string_to_list = fn s' =>
++    let val len = String.size s'
++        fun f () =
++           if !index < len then string_to_int() :: f()
++           else nil
++   in index := 0; s := s'; f ()
++   end
++val string_to_pairlist = fn (conv_key,conv_entry) =>
++     let fun f () =
++         case string_to_int()
++         of 0 => EMPTY
++          | n => PAIR(conv_key (n-1),conv_entry (string_to_int()),f())
++     in f
++     end
++val string_to_pairlist_default = fn (conv_key,conv_entry) =>
++    let val conv_row = string_to_pairlist(conv_key,conv_entry)
++    in fn () =>
++       let val default = conv_entry(string_to_int())
++           val row = conv_row()
++       in (row,default)
++       end
++   end
++val string_to_table = fn (convert_row,s') =>
++    let val len = String.size s'
++        fun f ()=
++           if !index < len then convert_row() :: f()
++           else nil
++     in (s := s'; index := 0; f ())
++     end
++local
++  val memo = Array.array(numstates+numrules,ERROR)
++  val _ =let fun g i=(Array.update(memo,i,REDUCE(i-numstates)); g(i+1))
++       fun f i =
++            if i=numstates then g i
++            else (Array.update(memo,i,SHIFT (STATE i)); f (i+1))
++          in f 0 handle Subscript => ()
++          end
++in
++val entry_to_action = fn 0 => ACCEPT | 1 => ERROR | j => Array.sub(memo,(j-2))
++end
++val gotoT=Array.fromList(string_to_table(string_to_pairlist(NT,STATE),gotoT))
++val actionRows=string_to_table(string_to_pairlist_default(T,entry_to_action),actionRows)
++val actionRowNumbers = string_to_list actionRowNumbers
++val actionT = let val actionRowLookUp=
++let val a=Array.fromList(actionRows) in fn i=>Array.sub(a,i) end
++in Array.fromList(map actionRowLookUp actionRowNumbers)
++end
++in LrTable.mkLrTable {actions=actionT,gotos=gotoT,numRules=numrules,
++numStates=numstates,initialState=STATE 0}
++end
++end
++local open Header in
++type pos = int
++type arg = SourceMap.sourcemap
++structure MlyValue = 
++struct
++datatype svalue = VOID' | ntVOID of unit | TYPE_NAME of  (string)
++ | CCONST of  (LargeInt.int) | STRING of  (string)
++ | REALNUM of  (real) | DECNUM of  (LargeInt.int) | ID of  (string)
++ | strings of  (string) | popScope of  (unit) | pushScope of  (unit)
++ | structDeclaration of  ( ( ctype * (declarator * expression) list ) )
++ | structDeclarationList of  ( ( ctype * (declarator * expression) list )  seq)
++ | notypeStructDeclaratorList of  ( ( declarator * expression )  seq)
++ | structDeclaratorList of  ( ( declarator * expression )  seq)
++ | notypeStructDeclarator of  ( ( declarator * expression ) )
++ | structDeclarator of  ( ( declarator * expression ) )
++ | structOrUnion of  (bool)
++ | parameterDeclaration of  ( ( decltype * declarator ) )
++ | parameterTypeList of  ( ( decltype * declarator )  list)
++ | parameterList of  ( ( decltype * declarator )  seq)
++ | externalDeclaration of  (externalDecl option)
++ | declaration1 of  (declaration) | declaration of  (declaration)
++ | functionDefinition of  (externalDecl)
++ | identlist of  ( ( string * int * int )  seq)
++ | declarationList of  (declaration seq)
++ | fDefDeclaration of  ( ( decltype * declarator ) )
++ | structOrUnionSpecifier of  (specifier)
++ | enumSpecifier of  (specifier) | specifierQualifierList of  (ctype)
++ | typeQualifierList of  (qualifier list)
++ | typeQualifier of  (qualifier)
++ | typeSpecifierReserved of  (specifier)
++ | typeSpecifier of  (specifier) | typeName of  (ctype)
++ | storageClassSpecifier of  (storage)
++ | initializerList of  (expression seq) | initializer of  (expression)
++ | reservedSpecifierQualifiers of  (ctype)
++ | specifierQualifierReserved of  (ctype)
++ | reservedDeclarationSpecifier of  (decltype)
++ | declarationModifiers of  (decltype)
++ | declarationSpecifiers of  (decltype)
++ | parmDirectDeclarator of  (declarator)
++ | notypeDirectDeclarator of  (declarator)
++ | aftertypeDirectDeclarator of  (declarator)
++ | parmDeclarator of  (declarator) | notypeDeclarator of  (declarator)
++ | aftertypeDeclarator of  (declarator) | declarator of  (declarator)
++ | pointer of  (declarator)
++ | notypeInitDeclaratorList of  ( ( declarator * expression )  seq)
++ | initDeclaratorList of  ( ( declarator * expression )  seq)
++ | notypeInitDeclarator of  ( ( declarator * expression ) )
++ | initDeclarator of  ( ( declarator * expression ) )
++ | directAbstractDeclarator of  (declarator)
++ | abstractDeclarator of  (declarator)
++ | enumerator of  ( ( string * expression ) )
++ | enumeratorList of  ( ( string * expression )  seq)
++ | trailingComma of  (bool) | argumentExprList of  (expression seq)
++ | unaryOperator of  (operator) | exprWComma of  (expression)
++ | opExpr of  (expression) | expr of  (expression)
++ | compoundStatement of  (statement)
++ | statementlist of  (statement seq)
++ | ostatementlist of  (statement list) | statement of  (statement)
++ | tu of  (externalDecl seq) | translationUnit of  (externalDecl list)
++end
++type svalue = MlyValue.svalue
++type result = externalDecl list
++end
++structure EC=
++struct
++open LrTable
++infix 5 $$
++fun x $$ y = y::x
++val is_keyword =
++fn (T 11) => true | (T 57) => true | (T 58) => true | (T 59) => true
++ | (T 60) => true | (T 61) => true | (T 62) => true | (T 63) => true
++ | (T 64) => true | (T 65) => true | (T 66) => true | (T 67) => true
++ | (T 68) => true | (T 69) => true | _ => false
++val preferred_change : (term list * term list) list = 
++(nil
++ $$ (T 25),nil
++ $$ (T 88))::
++nil
++val noShift = 
++fn (T 0) => true | _ => false
++val showTerminal =
++fn (T 0) => "EOF"
++  | (T 1) => "COLON"
++  | (T 2) => "SEMICOLON"
++  | (T 3) => "LPAREN"
++  | (T 4) => "RPAREN"
++  | (T 5) => "LCURLY"
++  | (T 6) => "RCURLY"
++  | (T 7) => "LBRACE"
++  | (T 8) => "RBRACE"
++  | (T 9) => "DOT"
++  | (T 10) => "COMMA"
++  | (T 11) => "QUESTION"
++  | (T 12) => "PERCENT"
++  | (T 13) => "AMP"
++  | (T 14) => "BAR"
++  | (T 15) => "TILDE"
++  | (T 16) => "DIVIDE"
++  | (T 17) => "PLUS"
++  | (T 18) => "MINUS"
++  | (T 19) => "HAT"
++  | (T 20) => "BANG"
++  | (T 21) => "TIMES"
++  | (T 22) => "INC"
++  | (T 23) => "DEC"
++  | (T 24) => "ARROW"
++  | (T 25) => "ID"
++  | (T 26) => "EQUALS"
++  | (T 27) => "PLUSEQUALS"
++  | (T 28) => "MINUSEQUALS"
++  | (T 29) => "XOREQUALS"
++  | (T 30) => "MODEQUALS"
++  | (T 31) => "TIMESEQUALS"
++  | (T 32) => "DIVEQUALS"
++  | (T 33) => "OREQUALS"
++  | (T 34) => "ANDEQUALS"
++  | (T 35) => "LSHIFTEQUALS"
++  | (T 36) => "RSHIFTEQUALS"
++  | (T 37) => "LTE"
++  | (T 38) => "GTE"
++  | (T 39) => "LT"
++  | (T 40) => "GT"
++  | (T 41) => "EQ"
++  | (T 42) => "NEQ"
++  | (T 43) => "OR"
++  | (T 44) => "AND"
++  | (T 45) => "LSHIFT"
++  | (T 46) => "RSHIFT"
++  | (T 47) => "DECNUM"
++  | (T 48) => "REALNUM"
++  | (T 49) => "STRING"
++  | (T 50) => "CCONST"
++  | (T 51) => "EXTERN"
++  | (T 52) => "AUTO"
++  | (T 53) => "STATIC"
++  | (T 54) => "REGISTER"
++  | (T 55) => "CONST"
++  | (T 56) => "VOLATILE"
++  | (T 57) => "IF"
++  | (T 58) => "THEN"
++  | (T 59) => "ELSE"
++  | (T 60) => "FOR"
++  | (T 61) => "DO"
++  | (T 62) => "SWITCH"
++  | (T 63) => "CASE"
++  | (T 64) => "DEFAULT"
++  | (T 65) => "WHILE"
++  | (T 66) => "RETURN"
++  | (T 67) => "BREAK"
++  | (T 68) => "CONTINUE"
++  | (T 69) => "GOTO"
++  | (T 70) => "CHAR"
++  | (T 71) => "DOUBLE"
++  | (T 72) => "ENUM"
++  | (T 73) => "FLOAT"
++  | (T 74) => "INT"
++  | (T 75) => "LONG"
++  | (T 76) => "SHORT"
++  | (T 77) => "FRACTIONAL"
++  | (T 78) => "SATURATE"
++  | (T 79) => "STRUCT"
++  | (T 80) => "UNION"
++  | (T 81) => "UNSIGNED"
++  | (T 82) => "SIGNED"
++  | (T 83) => "VOID"
++  | (T 84) => "SIZEOF"
++  | (T 85) => "TYPEDEF"
++  | (T 86) => "UNARY"
++  | (T 87) => "ELIPSIS"
++  | (T 88) => "TYPE_NAME"
++  | _ => "bogus-term"
++local open Header in
++val errtermvalue=
++fn (T 88) => MlyValue.TYPE_NAME((
++Error.hint "Likely cause: missing typedef declaration.\n"; "bogus")) | 
++_ => MlyValue.VOID'
++end
++val terms : term list = nil
++ $$ (T 87) $$ (T 86) $$ (T 85) $$ (T 84) $$ (T 83) $$ (T 82) $$ (T 81)
++ $$ (T 80) $$ (T 79) $$ (T 78) $$ (T 77) $$ (T 76) $$ (T 75) $$ (T 74)
++ $$ (T 73) $$ (T 72) $$ (T 71) $$ (T 70) $$ (T 69) $$ (T 68) $$ (T 67)
++ $$ (T 66) $$ (T 65) $$ (T 64) $$ (T 63) $$ (T 62) $$ (T 61) $$ (T 60)
++ $$ (T 59) $$ (T 58) $$ (T 57) $$ (T 56) $$ (T 55) $$ (T 54) $$ (T 53)
++ $$ (T 52) $$ (T 51) $$ (T 46) $$ (T 45) $$ (T 44) $$ (T 43) $$ (T 42)
++ $$ (T 41) $$ (T 40) $$ (T 39) $$ (T 38) $$ (T 37) $$ (T 36) $$ (T 35)
++ $$ (T 34) $$ (T 33) $$ (T 32) $$ (T 31) $$ (T 30) $$ (T 29) $$ (T 28)
++ $$ (T 27) $$ (T 26) $$ (T 24) $$ (T 23) $$ (T 22) $$ (T 21) $$ (T 20)
++ $$ (T 19) $$ (T 18) $$ (T 17) $$ (T 16) $$ (T 15) $$ (T 14) $$ (T 13)
++ $$ (T 12) $$ (T 11) $$ (T 10) $$ (T 9) $$ (T 8) $$ (T 7) $$ (T 6) $$ 
++(T 5) $$ (T 4) $$ (T 3) $$ (T 2) $$ (T 1) $$ (T 0)end
++structure Actions =
++struct 
 +type int = Int.int
- exception mlyAction of int
- local open Header in
- val actions = 
--fn (i392,defaultPos,stack,
++exception mlyAction of int
++local open Header in
++val actions = 
 +fn (i392:int,defaultPos,stack,
-     (srcMap):arg) =>
- case (i392,stack)
- of  ( 0, ( ( _, ( MlyValue.tu tu, tu1left, tu1right)) :: rest671)) =>
++    (srcMap):arg) =>
++case (i392,stack)
++of  ( 0, ( ( _, ( MlyValue.tu tu, tu1left, tu1right)) :: rest671)) =>
++ let val  result = MlyValue.translationUnit (seqToList tu)
++ in ( LrTable.NT 0, ( result, tu1left, tu1right), rest671)
++end
++|  ( 1, ( rest671)) => let val  result = MlyValue.tu (emptySeq)
++ in ( LrTable.NT 1, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 2, ( ( _, ( MlyValue.externalDeclaration externalDeclaration, _, 
++externalDeclaration1right)) :: ( _, ( MlyValue.tu tu, tu1left, _)) :: 
++rest671)) => let val  result = MlyValue.tu (
++addOptToEnd(externalDeclaration, tu))
++ in ( LrTable.NT 1, ( result, tu1left, externalDeclaration1right), 
++rest671)
++end
++|  ( 3, ( ( _, ( MlyValue.declaration declaration, (declarationleft
++ as declaration1left), (declarationright as declaration1right))) :: 
++rest671)) => let val  result = MlyValue.externalDeclaration (
++SOME(markExternalDecl srcMap (ExternalDecl declaration,
++						                       declarationleft,
++								       declarationright))
++)
++ in ( LrTable.NT 50, ( result, declaration1left, declaration1right), 
++rest671)
++end
++|  ( 4, ( ( _, ( _, SEMICOLON1left, SEMICOLON1right)) :: rest671)) =>
++ let val  result = MlyValue.externalDeclaration (NONE)
++ in ( LrTable.NT 50, ( result, SEMICOLON1left, SEMICOLON1right), 
++rest671)
++end
++|  ( 5, ( ( _, ( MlyValue.functionDefinition functionDefinition, (
++functionDefinitionleft as functionDefinition1left), (
++functionDefinitionright as functionDefinition1right))) :: rest671)) =>
++ let val  result = MlyValue.externalDeclaration (
++SOME(markExternalDecl srcMap (functionDefinition,
++						   	               functionDefinitionleft,
++							               functionDefinitionright))
++)
++ in ( LrTable.NT 50, ( result, functionDefinition1left, 
++functionDefinition1right), rest671)
++end
++|  ( 6, ( ( _, ( MlyValue.statement statement, _, (statementright as 
++statement1right))) :: _ :: ( _, ( MlyValue.opExpr opExpr3, _, _)) :: _
++ :: ( _, ( MlyValue.opExpr opExpr2, _, _)) :: _ :: ( _, ( 
++MlyValue.opExpr opExpr1, _, _)) :: _ :: ( _, ( _, (FORleft as FOR1left
++), _)) :: rest671)) => let val  result = MlyValue.statement (
++markStatement srcMap (For(opExpr1,opExpr2,opExpr3,statement),
++							FORleft, statementright)
++)
++ in ( LrTable.NT 2, ( result, FOR1left, statement1right), rest671)
++end
++|  ( 7, ( ( _, ( MlyValue.statement statement, _, (statementright as 
++statement1right))) :: _ :: ( _, ( MlyValue.exprWComma exprWComma, _, _
++)) :: _ :: ( _, ( _, (WHILEleft as WHILE1left), _)) :: rest671)) =>
++ let val  result = MlyValue.statement (
++markStatement srcMap (While(exprWComma,statement),
++							WHILEleft, statementright)
++)
++ in ( LrTable.NT 2, ( result, WHILE1left, statement1right), rest671)
++
++end
++|  ( 8, ( ( _, ( MlyValue.statement statement, _, (statementright as 
++statement1right))) :: _ :: ( _, ( MlyValue.exprWComma exprWComma, _, _
++)) :: _ :: ( _, ( _, (SWITCHleft as SWITCH1left), _)) :: rest671)) =>
++ let val  result = MlyValue.statement (
++markStatement srcMap (Switch(exprWComma,statement),
++							SWITCHleft, statementright)
++)
++ in ( LrTable.NT 2, ( result, SWITCH1left, statement1right), rest671)
++
++end
++|  ( 9, ( ( _, ( _, _, (SEMICOLONright as SEMICOLON1right))) :: _ :: (
++ _, ( MlyValue.exprWComma exprWComma, _, _)) :: _ :: _ :: ( _, ( 
++MlyValue.statement statement, _, _)) :: ( _, ( _, (DOleft as DO1left),
++ _)) :: rest671)) => let val  result = MlyValue.statement (
++markStatement srcMap (Do(exprWComma,statement),
++							DOleft, SEMICOLONright)
++)
++ in ( LrTable.NT 2, ( result, DO1left, SEMICOLON1right), rest671)
++end
++|  ( 10, ( ( _, ( _, _, (SEMICOLONright as SEMICOLON1right))) :: ( _, 
++( _, (BREAKleft as BREAK1left), _)) :: rest671)) => let val  result = 
++MlyValue.statement (
++markStatement srcMap (Break, 
++							BREAKleft, SEMICOLONright))
++ in ( LrTable.NT 2, ( result, BREAK1left, SEMICOLON1right), rest671)
++
++end
++|  ( 11, ( ( _, ( _, _, (SEMICOLONright as SEMICOLON1right))) :: ( _, 
++( _, (CONTINUEleft as CONTINUE1left), _)) :: rest671)) => let val  
++result = MlyValue.statement (
++markStatement srcMap (Continue, 
++							CONTINUEleft, SEMICOLONright))
++ in ( LrTable.NT 2, ( result, CONTINUE1left, SEMICOLON1right), rest671
++)
++end
++|  ( 12, ( ( _, ( _, _, (SEMICOLONright as SEMICOLON1right))) :: ( _, 
++( MlyValue.opExpr opExpr, _, _)) :: ( _, ( _, (RETURNleft as 
++RETURN1left), _)) :: rest671)) => let val  result = MlyValue.statement
++ (
++markStatement srcMap (Return(opExpr), 
++							RETURNleft, SEMICOLONright)
++)
++ in ( LrTable.NT 2, ( result, RETURN1left, SEMICOLON1right), rest671)
++
++end
++|  ( 13, ( ( _, ( _, _, (SEMICOLONright as SEMICOLON1right))) :: ( _, 
++( MlyValue.ID ID, _, _)) :: ( _, ( _, (GOTOleft as GOTO1left), _)) :: 
++rest671)) => let val  result = MlyValue.statement (
++markStatement srcMap (Goto(ID), 
++							GOTOleft, SEMICOLONright))
++ in ( LrTable.NT 2, ( result, GOTO1left, SEMICOLON1right), rest671)
++
++end
++|  ( 14, ( ( _, ( MlyValue.compoundStatement compoundStatement, 
++compoundStatement1left, compoundStatement1right)) :: rest671)) => let
++ val  result = MlyValue.statement (compoundStatement)
++ in ( LrTable.NT 2, ( result, compoundStatement1left, 
++compoundStatement1right), rest671)
++end
++|  ( 15, ( ( _, ( MlyValue.statement statement, _, (statementright as 
++statement1right))) :: _ :: ( _, ( MlyValue.ID ID, (IDleft as ID1left),
++ _)) :: rest671)) => let val  result = MlyValue.statement (
++markStatement srcMap (Labeled(ID,statement),
++							IDleft,statementright)
++)
++ in ( LrTable.NT 2, ( result, ID1left, statement1right), rest671)
++end
++|  ( 16, ( ( _, ( MlyValue.statement statement, _, (statementright as 
++statement1right))) :: _ :: ( _, ( _, (DEFAULTleft as DEFAULT1left), _)
++) :: rest671)) => let val  result = MlyValue.statement (
++markStatement srcMap (DefaultLabel(statement),
++							DEFAULTleft, statementright)
++)
++ in ( LrTable.NT 2, ( result, DEFAULT1left, statement1right), rest671)
++
++end
++|  ( 17, ( ( _, ( MlyValue.statement statement, _, (statementright as 
++statement1right))) :: _ :: ( _, ( MlyValue.exprWComma exprWComma, _, _
++)) :: ( _, ( _, (CASEleft as CASE1left), _)) :: rest671)) => let val  
++result = MlyValue.statement (
++markStatement srcMap (CaseLabel(exprWComma,statement),
++							CASEleft, statementright)
++)
++ in ( LrTable.NT 2, ( result, CASE1left, statement1right), rest671)
++
++end
++|  ( 18, ( ( _, ( MlyValue.statement statement, _, (statementright as 
++statement1right))) :: _ :: ( _, ( MlyValue.exprWComma exprWComma, _, _
++)) :: _ :: ( _, ( _, (IFleft as IF1left), _)) :: rest671)) => let val 
++ result = MlyValue.statement (
++markStatement srcMap (IfThen(exprWComma,statement),
++							IFleft, statementright)
++)
++ in ( LrTable.NT 2, ( result, IF1left, statement1right), rest671)
++end
++|  ( 19, ( ( _, ( MlyValue.statement statement2, _, statement2right))
++ :: _ :: ( _, ( MlyValue.statement statement1, _, _)) :: _ :: ( _, ( 
++MlyValue.exprWComma exprWComma, _, _)) :: _ :: ( _, ( _, (IFleft as 
++IF1left), _)) :: rest671)) => let val  result = MlyValue.statement (
++markStatement srcMap (IfThenElse(exprWComma,statement1,statement2),
++							IFleft,
++							statement2right)
++)
++ in ( LrTable.NT 2, ( result, IF1left, statement2right), rest671)
++end
++|  ( 20, ( ( _, ( _, _, (SEMICOLONright as SEMICOLON1right))) :: ( _, 
++( MlyValue.exprWComma exprWComma, (exprWCommaleft as exprWComma1left),
++ _)) :: rest671)) => let val  result = MlyValue.statement (
++markStatement srcMap (Expr(exprWComma),
++							exprWCommaleft, SEMICOLONright)
++)
++ in ( LrTable.NT 2, ( result, exprWComma1left, SEMICOLON1right), 
++rest671)
++end
++|  ( 21, ( ( _, ( _, (SEMICOLONleft as SEMICOLON1left), (
++SEMICOLONright as SEMICOLON1right))) :: rest671)) => let val  result =
++ MlyValue.statement (
++markStatement srcMap (Expr(EmptyExpr),
++							SEMICOLONleft, SEMICOLONright)
++)
++ in ( LrTable.NT 2, ( result, SEMICOLON1left, SEMICOLON1right), 
++rest671)
++end
++|  ( 22, ( ( _, ( _, _, SEMICOLON1right)) :: ( _, ( 
++MlyValue.declaration1 declaration1, declaration11left, _)) :: rest671)
++) => let val  result = MlyValue.declaration (declaration1)
++ in ( LrTable.NT 48, ( result, declaration11left, SEMICOLON1right), 
++rest671)
++end
++|  ( 23, ( ( _, ( MlyValue.declarationSpecifiers declarationSpecifiers
++, (declarationSpecifiersleft as declarationSpecifiers1left), (
++declarationSpecifiersright as declarationSpecifiers1right))) :: 
++rest671)) => let val  result = MlyValue.declaration1 (
++insertDeclNames (declarationSpecifiers, []);
++		 markDeclaration srcMap
++		   (Declaration(declarationSpecifiers, []), 
++		    declarationSpecifiersleft, declarationSpecifiersright)
++)
++ in ( LrTable.NT 49, ( result, declarationSpecifiers1left, 
++declarationSpecifiers1right), rest671)
++end
++|  ( 24, ( ( _, ( MlyValue.initDeclaratorList initDeclaratorList, _, (
++initDeclaratorListright as initDeclaratorList1right))) :: ( _, ( 
++MlyValue.declarationSpecifiers declarationSpecifiers, (
++declarationSpecifiersleft as declarationSpecifiers1left), _)) :: 
++rest671)) => let val  result = MlyValue.declaration1 (
++let val decl = (declarationSpecifiers, seqToList initDeclaratorList)
++		  in insertDeclNames decl;
++		     markDeclaration srcMap
++		       (Declaration decl, declarationSpecifiersleft, initDeclaratorListright)
++	         end
++)
++ in ( LrTable.NT 49, ( result, declarationSpecifiers1left, 
++initDeclaratorList1right), rest671)
++end
++|  ( 25, ( ( _, ( MlyValue.notypeInitDeclaratorList 
++notypeInitDeclaratorList, _, (notypeInitDeclaratorListright as 
++notypeInitDeclaratorList1right))) :: ( _, ( 
++MlyValue.declarationModifiers declarationModifiers, (
++declarationModifiersleft as declarationModifiers1left), _)) :: rest671
++)) => let val  result = MlyValue.declaration1 (
++let val decl = (declarationModifiers, seqToList notypeInitDeclaratorList)
++		  in insertDeclNames decl;
++		     markDeclaration srcMap
++		       (Declaration decl, declarationModifiersleft, notypeInitDeclaratorListright)
++	         end
++)
++ in ( LrTable.NT 49, ( result, declarationModifiers1left, 
++notypeInitDeclaratorList1right), rest671)
++end
++|  ( 26, ( ( _, ( MlyValue.statementlist statementlist, 
++statementlist1left, statementlist1right)) :: rest671)) => let val  
++result = MlyValue.ostatementlist (seqToList statementlist)
++ in ( LrTable.NT 3, ( result, statementlist1left, statementlist1right)
++, rest671)
++end
++|  ( 27, ( rest671)) => let val  result = MlyValue.ostatementlist ([])
++ in ( LrTable.NT 3, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 28, ( ( _, ( MlyValue.statement statement, statement1left, 
++statement1right)) :: rest671)) => let val  result = 
++MlyValue.statementlist (singletonSeq statement)
++ in ( LrTable.NT 4, ( result, statement1left, statement1right), 
++rest671)
++end
++|  ( 29, ( ( _, ( MlyValue.statement statement, _, statement1right))
++ :: ( _, ( MlyValue.statementlist statementlist, statementlist1left, _
++)) :: rest671)) => let val  result = MlyValue.statementlist (
++addToSeq(statement, statementlist))
++ in ( LrTable.NT 4, ( result, statementlist1left, statement1right), 
++rest671)
++end
++|  ( 30, ( ( _, ( _, _, (RCURLYright as RCURLY1right))) :: _ :: ( _, (
++ MlyValue.ostatementlist ostatementlist, _, _)) :: ( _, ( 
++MlyValue.declarationList declarationList, _, _)) :: _ :: ( _, ( _, (
++LCURLYleft as LCURLY1left), _)) :: rest671)) => let val  result = 
++MlyValue.compoundStatement (
++markStatement srcMap (Compound ((map Decl (seqToList declarationList)) @ ostatementlist), LCURLYleft, RCURLYright)
++)
++ in ( LrTable.NT 5, ( result, LCURLY1left, RCURLY1right), rest671)
++end
++|  ( 31, ( ( _, ( _, _, (RCURLYright as RCURLY1right))) :: ( _, ( 
++MlyValue.ostatementlist ostatementlist, _, _)) :: ( _, ( _, (
++LCURLYleft as LCURLY1left), _)) :: rest671)) => let val  result = 
++MlyValue.compoundStatement (
++markStatement srcMap (Compound (ostatementlist), LCURLYleft, RCURLYright)
++)
++ in ( LrTable.NT 5, ( result, LCURLY1left, RCURLY1right), rest671)
++end
++|  ( 32, ( ( _, ( _, AMP1left, AMP1right)) :: rest671)) => let val  
++result = MlyValue.unaryOperator (AddrOf)
++ in ( LrTable.NT 9, ( result, AMP1left, AMP1right), rest671)
++end
++|  ( 33, ( ( _, ( _, TIMES1left, TIMES1right)) :: rest671)) => let
++ val  result = MlyValue.unaryOperator (Star)
++ in ( LrTable.NT 9, ( result, TIMES1left, TIMES1right), rest671)
++end
++|  ( 34, ( ( _, ( _, PLUS1left, PLUS1right)) :: rest671)) => let val  
++result = MlyValue.unaryOperator (Uplus)
++ in ( LrTable.NT 9, ( result, PLUS1left, PLUS1right), rest671)
++end
++|  ( 35, ( ( _, ( _, MINUS1left, MINUS1right)) :: rest671)) => let
++ val  result = MlyValue.unaryOperator (Negate)
++ in ( LrTable.NT 9, ( result, MINUS1left, MINUS1right), rest671)
++end
++|  ( 36, ( ( _, ( _, TILDE1left, TILDE1right)) :: rest671)) => let
++ val  result = MlyValue.unaryOperator (BitNot)
++ in ( LrTable.NT 9, ( result, TILDE1left, TILDE1right), rest671)
++end
++|  ( 37, ( ( _, ( _, BANG1left, BANG1right)) :: rest671)) => let val  
++result = MlyValue.unaryOperator (Not)
++ in ( LrTable.NT 9, ( result, BANG1left, BANG1right), rest671)
++end
++|  ( 38, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.exprWComma exprWComma1, _, _)) :: _ :: ( _, ( MlyValue.expr 
++expr1, expr1left, _)) :: rest671)) => let val  result = MlyValue.expr
++ (
++markExpression srcMap (QuestionColon(expr1,exprWComma1,expr2),expr1left,expr2right)
++)
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 39, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(PlusAssign,expr1,expr2),expr1left,expr2right)
++)
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 40, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(MinusAssign,expr1,expr2),expr1left,expr2right)
++)
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 41, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(TimesAssign,expr1,expr2),expr1left,expr2right)
++)
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 42, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(DivAssign,expr1,expr2),expr1left,expr2right)
++)
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 43, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(ModAssign,expr1,expr2),expr1left,expr2right)
++)
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 44, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(XorAssign,expr1,expr2),expr1left,expr2right)
++)
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 45, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(OrAssign,expr1,expr2),expr1left,expr2right)
++)
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 46, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(AndAssign,expr1,expr2),expr1left,expr2right)
++)
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 47, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(LshiftAssign,expr1,expr2),expr1left,expr2right)
++)
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 48, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(RshiftAssign,expr1,expr2),expr1left,expr2right)
++)
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 49, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(Assign,expr1,expr2),expr1left,expr2right)
++)
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 50, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(Or,expr1,expr2),expr1left,expr2right))
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 51, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(And,expr1,expr2),expr1left,expr2right))
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 52, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(BitOr,expr1,expr2),expr1left,expr2right))
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 53, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(BitXor,expr1,expr2),expr1left,expr2right)
++)
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 54, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(BitAnd,expr1,expr2),expr1left,expr2right)
++)
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 55, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(Eq,expr1,expr2),expr1left,expr2right))
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 56, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(Neq,expr1,expr2),expr1left,expr2right))
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 57, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(Lt,expr1,expr2),expr1left,expr2right))
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 58, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(Gt,expr1,expr2),expr1left,expr2right))
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 59, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(Lte,expr1,expr2),expr1left,expr2right))
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 60, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(Gte,expr1,expr2),expr1left,expr2right))
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 61, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(Lshift,expr1,expr2),expr1left,expr2right)
++)
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 62, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(Rshift,expr1,expr2),expr1left,expr2right)
++)
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 63, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(Plus,expr1,expr2),expr1left,expr2right))
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 64, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(Minus,expr1,expr2),expr1left,expr2right))
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 65, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(Times,expr1,expr2),expr1left,expr2right))
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 66, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(Divide,expr1,expr2),expr1left,expr2right)
++)
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 67, ( ( _, ( MlyValue.expr expr2, _, expr2right)) :: _ :: ( _, ( 
++MlyValue.expr expr1, expr1left, _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(Mod,expr1,expr2),expr1left,expr2right))
++ in ( LrTable.NT 6, ( result, expr1left, expr2right), rest671)
++end
++|  ( 68, ( ( _, ( _, _, (INCright as INC1right))) :: ( _, ( 
++MlyValue.expr expr, (exprleft as expr1left), _)) :: rest671)) => let
++ val  result = MlyValue.expr (
++markExpression srcMap (Unop(PostInc,expr),exprleft,INCright))
++ in ( LrTable.NT 6, ( result, expr1left, INC1right), rest671)
++end
++|  ( 69, ( ( _, ( _, _, (DECright as DEC1right))) :: ( _, ( 
++MlyValue.expr expr, (exprleft as expr1left), _)) :: rest671)) => let
++ val  result = MlyValue.expr (
++markExpression srcMap (Unop(PostDec,expr),exprleft,DECright))
++ in ( LrTable.NT 6, ( result, expr1left, DEC1right), rest671)
++end
++|  ( 70, ( ( _, ( MlyValue.expr expr, _, (exprright as expr1right)))
++ :: ( _, ( _, (INCleft as INC1left), _)) :: rest671)) => let val  
++result = MlyValue.expr (
++markExpression srcMap (Unop(PreInc,expr),INCleft,exprright))
++ in ( LrTable.NT 6, ( result, INC1left, expr1right), rest671)
++end
++|  ( 71, ( ( _, ( MlyValue.expr expr, _, (exprright as expr1right)))
++ :: ( _, ( _, (DECleft as DEC1left), _)) :: rest671)) => let val  
++result = MlyValue.expr (
++markExpression srcMap (Unop(PreDec,expr),DECleft,exprright))
++ in ( LrTable.NT 6, ( result, DEC1left, expr1right), rest671)
++end
++|  ( 72, ( ( _, ( MlyValue.expr expr, _, (exprright as expr1right)))
++ :: ( _, ( MlyValue.unaryOperator unaryOperator, (unaryOperatorleft
++ as unaryOperator1left), _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Unop(unaryOperator,expr),unaryOperatorleft,exprright)
++)
++ in ( LrTable.NT 6, ( result, unaryOperator1left, expr1right), rest671
++)
++end
++|  ( 73, ( ( _, ( MlyValue.expr expr, _, (exprright as expr1right)))
++ :: ( _, ( _, (SIZEOFleft as SIZEOF1left), _)) :: rest671)) => let
++ val  result = MlyValue.expr (
++markExpression srcMap (Unop(Sizeof,expr),SIZEOFleft,exprright))
++ in ( LrTable.NT 6, ( result, SIZEOF1left, expr1right), rest671)
++end
++|  ( 74, ( ( _, ( MlyValue.expr expr, _, (exprright as expr1right)))
++ :: _ :: ( _, ( MlyValue.typeName typeName, _, _)) :: ( _, ( _, (
++LPARENleft as LPAREN1left), _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Cast (typeName,expr),LPARENleft,exprright))
++ in ( LrTable.NT 6, ( result, LPAREN1left, expr1right), rest671)
++end
++|  ( 75, ( ( _, ( _, _, (RPARENright as RPAREN1right))) :: ( _, ( 
++MlyValue.typeName typeName, _, _)) :: _ :: ( _, ( _, (SIZEOFleft as 
++SIZEOF1left), _)) :: rest671)) => let val  result = MlyValue.expr (
++markExpression srcMap (Unop(SizeofType typeName,EmptyExpr),SIZEOFleft,RPARENright)
++)
++ in ( LrTable.NT 6, ( result, SIZEOF1left, RPAREN1right), rest671)
++end
++|  ( 76, ( ( _, ( _, _, (RBRACEright as RBRACE1right))) :: ( _, ( 
++MlyValue.exprWComma exprWComma, _, _)) :: _ :: ( _, ( MlyValue.expr 
++expr, (exprleft as expr1left), _)) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (Binop(Sub,expr,exprWComma),exprleft,RBRACEright)
++)
++ in ( LrTable.NT 6, ( result, expr1left, RBRACE1right), rest671)
++end
++|  ( 77, ( ( _, ( _, _, (RPARENright as RPAREN1right))) :: _ :: ( _, (
++ MlyValue.expr expr, (exprleft as expr1left), _)) :: rest671)) => let
++ val  result = MlyValue.expr (
++markExpression srcMap (Call(expr,[]),exprleft,RPARENright))
++ in ( LrTable.NT 6, ( result, expr1left, RPAREN1right), rest671)
++end
++|  ( 78, ( ( _, ( _, _, (RPARENright as RPAREN1right))) :: ( _, ( 
++MlyValue.argumentExprList argumentExprList, _, _)) :: _ :: ( _, ( 
++MlyValue.expr expr, (exprleft as expr1left), _)) :: rest671)) => let
++ val  result = MlyValue.expr (
++markExpression srcMap (Call(expr, seqToList argumentExprList),exprleft,RPARENright)
++)
++ in ( LrTable.NT 6, ( result, expr1left, RPAREN1right), rest671)
++end
++|  ( 79, ( ( _, ( MlyValue.ID ID, _, (IDright as ID1right))) :: _ :: (
++ _, ( MlyValue.expr expr, (exprleft as expr1left), _)) :: rest671)) =>
++ let val  result = MlyValue.expr (
++markExpression srcMap (Binop(Dot,expr,Id(ID)),exprleft,IDright))
++ in ( LrTable.NT 6, ( result, expr1left, ID1right), rest671)
++end
++|  ( 80, ( ( _, ( MlyValue.ID ID, _, (IDright as ID1right))) :: _ :: (
++ _, ( MlyValue.expr expr, (exprleft as expr1left), _)) :: rest671)) =>
++ let val  result = MlyValue.expr (
++markExpression srcMap (Binop(Arrow,expr,Id(ID)),exprleft,IDright))
++ in ( LrTable.NT 6, ( result, expr1left, ID1right), rest671)
++end
++|  ( 81, ( ( _, ( MlyValue.TYPE_NAME TYPE_NAME, _, (TYPE_NAMEright as 
++TYPE_NAME1right))) :: _ :: ( _, ( MlyValue.expr expr, (exprleft as 
++expr1left), _)) :: rest671)) => let val  result = MlyValue.expr (
++markExpression srcMap (Binop(Dot,expr,Id(TYPE_NAME)),exprleft,TYPE_NAMEright)
++)
++ in ( LrTable.NT 6, ( result, expr1left, TYPE_NAME1right), rest671)
++
++end
++|  ( 82, ( ( _, ( MlyValue.TYPE_NAME TYPE_NAME, _, (TYPE_NAMEright as 
++TYPE_NAME1right))) :: _ :: ( _, ( MlyValue.expr expr, (exprleft as 
++expr1left), _)) :: rest671)) => let val  result = MlyValue.expr (
++markExpression srcMap (Binop(Arrow,expr,Id(TYPE_NAME)),exprleft,TYPE_NAMEright)
++)
++ in ( LrTable.NT 6, ( result, expr1left, TYPE_NAME1right), rest671)
++
++end
++|  ( 83, ( ( _, ( _, _, (RPARENright as RPAREN1right))) :: ( _, ( 
++MlyValue.exprWComma exprWComma, _, _)) :: ( _, ( _, (LPARENleft as 
++LPAREN1left), _)) :: rest671)) => let val  result = MlyValue.expr (
++markExpression srcMap (exprWComma,LPARENleft,RPARENright))
++ in ( LrTable.NT 6, ( result, LPAREN1left, RPAREN1right), rest671)
++end
++|  ( 84, ( ( _, ( MlyValue.DECNUM DECNUM, (DECNUMleft as DECNUM1left),
++ (DECNUMright as DECNUM1right))) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (IntConst DECNUM,DECNUMleft,DECNUMright))
++ in ( LrTable.NT 6, ( result, DECNUM1left, DECNUM1right), rest671)
++end
++|  ( 85, ( ( _, ( MlyValue.REALNUM REALNUM, (REALNUMleft as 
++REALNUM1left), (REALNUMright as REALNUM1right))) :: rest671)) => let
++ val  result = MlyValue.expr (
++markExpression srcMap (RealConst REALNUM, REALNUMleft,REALNUMright))
++ in ( LrTable.NT 6, ( result, REALNUM1left, REALNUM1right), rest671)
++
++end
++|  ( 86, ( ( _, ( MlyValue.CCONST CCONST, (CCONSTleft as CCONST1left),
++ (CCONSTright as CCONST1right))) :: rest671)) => let val  result = 
++MlyValue.expr (
++markExpression srcMap (IntConst CCONST, CCONSTleft,CCONSTright))
++ in ( LrTable.NT 6, ( result, CCONST1left, CCONST1right), rest671)
++end
++|  ( 87, ( ( _, ( MlyValue.ID ID, (IDleft as ID1left), (IDright as 
++ID1right))) :: rest671)) => let val  result = MlyValue.expr (
++markExpression srcMap (Id(ID), IDleft, IDright))
++ in ( LrTable.NT 6, ( result, ID1left, ID1right), rest671)
++end
++|  ( 88, ( ( _, ( MlyValue.strings strings, (stringsleft as 
++strings1left), (stringsright as strings1right))) :: rest671)) => let
++ val  result = MlyValue.expr (
++markExpression srcMap (String(strings),stringsleft,stringsright))
++ in ( LrTable.NT 6, ( result, strings1left, strings1right), rest671)
++
++end
++|  ( 89, ( ( _, ( MlyValue.STRING STRING, STRING1left, STRING1right))
++ :: rest671)) => let val  result = MlyValue.strings (STRING)
++ in ( LrTable.NT 63, ( result, STRING1left, STRING1right), rest671)
++
++end
++|  ( 90, ( ( _, ( MlyValue.strings strings, _, strings1right)) :: ( _,
++ ( MlyValue.STRING STRING, STRING1left, _)) :: rest671)) => let val  
++result = MlyValue.strings (STRING ^ strings)
++ in ( LrTable.NT 63, ( result, STRING1left, strings1right), rest671)
++
++end
++|  ( 91, ( ( _, ( MlyValue.expr expr, expr1left, expr1right)) :: 
++rest671)) => let val  result = MlyValue.exprWComma (expr)
++ in ( LrTable.NT 8, ( result, expr1left, expr1right), rest671)
++end
++|  ( 92, ( ( _, ( MlyValue.expr expr, _, (exprright as expr1right)))
++ :: _ :: ( _, ( MlyValue.exprWComma exprWComma, (exprWCommaleft as 
++exprWComma1left), _)) :: rest671)) => let val  result = 
++MlyValue.exprWComma (
++markExpression srcMap (Binop(Comma,exprWComma,expr),exprWCommaleft,exprright)
++)
++ in ( LrTable.NT 8, ( result, exprWComma1left, expr1right), rest671)
++
++end
++|  ( 93, ( rest671)) => let val  result = MlyValue.opExpr (EmptyExpr)
++ in ( LrTable.NT 7, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 94, ( ( _, ( MlyValue.exprWComma exprWComma, exprWComma1left, 
++exprWComma1right)) :: rest671)) => let val  result = MlyValue.opExpr (
++exprWComma)
++ in ( LrTable.NT 7, ( result, exprWComma1left, exprWComma1right), 
++rest671)
++end
++|  ( 95, ( ( _, ( MlyValue.expr expr, expr1left, expr1right)) :: 
++rest671)) => let val  result = MlyValue.argumentExprList (
++singletonSeq expr)
++ in ( LrTable.NT 10, ( result, expr1left, expr1right), rest671)
++end
++|  ( 96, ( ( _, ( MlyValue.expr expr, _, expr1right)) :: _ :: ( _, ( 
++MlyValue.argumentExprList argumentExprList, argumentExprList1left, _))
++ :: rest671)) => let val  result = MlyValue.argumentExprList (
++addToSeq(expr, argumentExprList))
++ in ( LrTable.NT 10, ( result, argumentExprList1left, expr1right), 
++rest671)
++end
++|  ( 97, ( ( _, ( MlyValue.specifierQualifierList 
++specifierQualifierList, specifierQualifierList1left, 
++specifierQualifierList1right)) :: rest671)) => let val  result = 
++MlyValue.typeName (specifierQualifierList)
++ in ( LrTable.NT 36, ( result, specifierQualifierList1left, 
++specifierQualifierList1right), rest671)
++end
++|  ( 98, ( ( _, ( MlyValue.abstractDeclarator abstractDeclarator, _, 
++abstractDeclarator1right)) :: ( _, ( MlyValue.specifierQualifierList 
++specifierQualifierList, specifierQualifierList1left, _)) :: rest671))
++ => let val  result = MlyValue.typeName (
++#1 (ctypeDecrToTypeName (specifierQualifierList, abstractDeclarator)))
++ in ( LrTable.NT 36, ( result, specifierQualifierList1left, 
++abstractDeclarator1right), rest671)
++end
++|  ( 99, ( ( _, ( MlyValue.reservedDeclarationSpecifier 
++reservedDeclarationSpecifier, _, reservedDeclarationSpecifier1right))
++ :: ( _, ( MlyValue.typeSpecifier typeSpecifier, typeSpecifier1left, _
++)) :: rest671)) => let val  result = MlyValue.declarationSpecifiers (
++addSpecifier (typeSpecifier,
++						        reservedDeclarationSpecifier)
++)
++ in ( LrTable.NT 28, ( result, typeSpecifier1left, 
++reservedDeclarationSpecifier1right), rest671)
++end
++|  ( 100, ( ( _, ( MlyValue.reservedDeclarationSpecifier 
++reservedDeclarationSpecifier, _, reservedDeclarationSpecifier1right))
++ :: ( _, ( MlyValue.typeSpecifier typeSpecifier, _, _)) :: ( _, ( 
++MlyValue.declarationModifiers declarationModifiers, 
++declarationModifiers1left, _)) :: rest671)) => let val  result = 
++MlyValue.declarationSpecifiers (
++addAll (declarationModifiers,
++                                                  addSpecifier (typeSpecifier,
++							         reservedDeclarationSpecifier))
++)
++ in ( LrTable.NT 28, ( result, declarationModifiers1left, 
++reservedDeclarationSpecifier1right), rest671)
++end
++|  ( 101, ( rest671)) => let val  result = 
++MlyValue.reservedDeclarationSpecifier (unknown)
++ in ( LrTable.NT 30, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 102, ( ( _, ( MlyValue.specifierQualifierReserved 
++specifierQualifierReserved, _, specifierQualifierReserved1right)) :: (
++ _, ( MlyValue.reservedDeclarationSpecifier 
++reservedDeclarationSpecifier, reservedDeclarationSpecifier1left, _))
++ :: rest671)) => let val  result = 
++MlyValue.reservedDeclarationSpecifier (
++let val {qualifiers,specifiers} = specifierQualifierReserved
++					     val decltype = {qualifiers=qualifiers,specifiers=specifiers,storage=[]}
++	   				 in addAll (decltype, reservedDeclarationSpecifier) end 
++)
++ in ( LrTable.NT 30, ( result, reservedDeclarationSpecifier1left, 
++specifierQualifierReserved1right), rest671)
++end
++|  ( 103, ( ( _, ( MlyValue.storageClassSpecifier 
++storageClassSpecifier, _, storageClassSpecifier1right)) :: ( _, ( 
++MlyValue.reservedDeclarationSpecifier reservedDeclarationSpecifier, 
++reservedDeclarationSpecifier1left, _)) :: rest671)) => let val  result
++ = MlyValue.reservedDeclarationSpecifier (
++addStorage (storageClassSpecifier,
++                                                      reservedDeclarationSpecifier)
++)
++ in ( LrTable.NT 30, ( result, reservedDeclarationSpecifier1left, 
++storageClassSpecifier1right), rest671)
++end
++|  ( 104, ( ( _, ( MlyValue.typeSpecifierReserved 
++typeSpecifierReserved, typeSpecifierReserved1left, 
++typeSpecifierReserved1right)) :: rest671)) => let val  result = 
++MlyValue.specifierQualifierReserved (
++{qualifiers=[],specifiers=[typeSpecifierReserved]})
++ in ( LrTable.NT 31, ( result, typeSpecifierReserved1left, 
++typeSpecifierReserved1right), rest671)
++end
++|  ( 105, ( ( _, ( MlyValue.typeQualifier typeQualifier, 
++typeQualifier1left, typeQualifier1right)) :: rest671)) => let val  
++result = MlyValue.specifierQualifierReserved (
++{qualifiers=[typeQualifier],specifiers=[]})
++ in ( LrTable.NT 31, ( result, typeQualifier1left, typeQualifier1right
++), rest671)
++end
++|  ( 106, ( ( _, ( MlyValue.structOrUnionSpecifier 
++structOrUnionSpecifier, structOrUnionSpecifier1left, 
++structOrUnionSpecifier1right)) :: rest671)) => let val  result = 
++MlyValue.specifierQualifierReserved (
++{qualifiers=[],specifiers=[structOrUnionSpecifier]})
++ in ( LrTable.NT 31, ( result, structOrUnionSpecifier1left, 
++structOrUnionSpecifier1right), rest671)
++end
++|  ( 107, ( ( _, ( MlyValue.enumSpecifier enumSpecifier, 
++enumSpecifier1left, enumSpecifier1right)) :: rest671)) => let val  
++result = MlyValue.specifierQualifierReserved (
++{qualifiers=[],specifiers=[enumSpecifier]})
++ in ( LrTable.NT 31, ( result, enumSpecifier1left, enumSpecifier1right
++), rest671)
++end
++|  ( 108, ( ( _, ( MlyValue.storageClassSpecifier 
++storageClassSpecifier, storageClassSpecifier1left, 
++storageClassSpecifier1right)) :: rest671)) => let val  result = 
++MlyValue.declarationModifiers (
++{storage = [storageClassSpecifier],
++					  qualifiers = [],
++					  specifiers = []}
++)
++ in ( LrTable.NT 29, ( result, storageClassSpecifier1left, 
++storageClassSpecifier1right), rest671)
++end
++|  ( 109, ( ( _, ( MlyValue.storageClassSpecifier 
++storageClassSpecifier, _, storageClassSpecifier1right)) :: ( _, ( 
++MlyValue.declarationModifiers declarationModifiers, 
++declarationModifiers1left, _)) :: rest671)) => let val  result = 
++MlyValue.declarationModifiers (
++addStorage(storageClassSpecifier,declarationModifiers))
++ in ( LrTable.NT 29, ( result, declarationModifiers1left, 
++storageClassSpecifier1right), rest671)
++end
++|  ( 110, ( ( _, ( MlyValue.typeQualifier typeQualifier, 
++typeQualifier1left, typeQualifier1right)) :: rest671)) => let val  
++result = MlyValue.declarationModifiers (
++{specifiers = [],
++	 				  storage = [], 
++					  qualifiers = [typeQualifier]}
++)
++ in ( LrTable.NT 29, ( result, typeQualifier1left, typeQualifier1right
++), rest671)
++end
++|  ( 111, ( ( _, ( MlyValue.typeQualifier typeQualifier, _, 
++typeQualifier1right)) :: ( _, ( MlyValue.declarationModifiers 
++declarationModifiers, declarationModifiers1left, _)) :: rest671)) =>
++ let val  result = MlyValue.declarationModifiers (
++addQualifier(typeQualifier, declarationModifiers))
++ in ( LrTable.NT 29, ( result, declarationModifiers1left, 
++typeQualifier1right), rest671)
++end
++|  ( 112, ( ( _, ( MlyValue.reservedSpecifierQualifiers 
++reservedSpecifierQualifiers, _, reservedSpecifierQualifiers1right)) ::
++ ( _, ( MlyValue.typeSpecifier typeSpecifier, typeSpecifier1left, _))
++ :: rest671)) => let val  result = MlyValue.specifierQualifierList (
++let val {specifiers, qualifiers} = reservedSpecifierQualifiers
++	                                 in {specifiers=typeSpecifier::specifiers,qualifiers=qualifiers} end
++)
++ in ( LrTable.NT 41, ( result, typeSpecifier1left, 
++reservedSpecifierQualifiers1right), rest671)
++end
++|  ( 113, ( ( _, ( MlyValue.reservedSpecifierQualifiers 
++reservedSpecifierQualifiers, _, reservedSpecifierQualifiers1right)) ::
++ ( _, ( MlyValue.typeSpecifier typeSpecifier, _, _)) :: ( _, ( 
++MlyValue.typeQualifierList typeQualifierList, typeQualifierList1left,
++ _)) :: rest671)) => let val  result = MlyValue.specifierQualifierList
++ (
++let val {specifiers, qualifiers} = reservedSpecifierQualifiers
++	                                 in {specifiers=typeSpecifier::specifiers
++					    ,qualifiers=typeQualifierList@qualifiers
++                                            }
++                                         end
++)
++ in ( LrTable.NT 41, ( result, typeQualifierList1left, 
++reservedSpecifierQualifiers1right), rest671)
++end
++|  ( 114, ( rest671)) => let val  result = 
++MlyValue.reservedSpecifierQualifiers ({qualifiers=[],specifiers=[]})
++ in ( LrTable.NT 32, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 115, ( ( _, ( MlyValue.specifierQualifierReserved 
++specifierQualifierReserved, _, specifierQualifierReserved1right)) :: (
++ _, ( MlyValue.reservedSpecifierQualifiers reservedSpecifierQualifiers
++, reservedSpecifierQualifiers1left, _)) :: rest671)) => let val  
++result = MlyValue.reservedSpecifierQualifiers (
++let val {specifiers=s1, qualifiers=q1} = reservedSpecifierQualifiers
++					     val {specifiers=s2, qualifiers=q2} = specifierQualifierReserved
++	                                 in {specifiers=s1@s2, qualifiers=q1@q2} end
++)
++ in ( LrTable.NT 32, ( result, reservedSpecifierQualifiers1left, 
++specifierQualifierReserved1right), rest671)
++end
++|  ( 116, ( ( _, ( MlyValue.typeQualifier typeQualifier, 
++typeQualifier1left, typeQualifier1right)) :: rest671)) => let val  
++result = MlyValue.typeQualifierList ([typeQualifier])
++ in ( LrTable.NT 40, ( result, typeQualifier1left, typeQualifier1right
++), rest671)
++end
++|  ( 117, ( ( _, ( MlyValue.typeQualifierList typeQualifierList, _, 
++typeQualifierList1right)) :: ( _, ( MlyValue.typeQualifier 
++typeQualifier, typeQualifier1left, _)) :: rest671)) => let val  result
++ = MlyValue.typeQualifierList (typeQualifier::typeQualifierList)
++ in ( LrTable.NT 40, ( result, typeQualifier1left, 
++typeQualifierList1right), rest671)
++end
++|  ( 118, ( ( _, ( MlyValue.typeSpecifierReserved 
++typeSpecifierReserved, typeSpecifierReserved1left, 
++typeSpecifierReserved1right)) :: rest671)) => let val  result = 
++MlyValue.typeSpecifier (typeSpecifierReserved)
++ in ( LrTable.NT 37, ( result, typeSpecifierReserved1left, 
++typeSpecifierReserved1right), rest671)
++end
++|  ( 119, ( ( _, ( MlyValue.structOrUnionSpecifier 
++structOrUnionSpecifier, structOrUnionSpecifier1left, 
++structOrUnionSpecifier1right)) :: rest671)) => let val  result = 
++MlyValue.typeSpecifier (structOrUnionSpecifier)
++ in ( LrTable.NT 37, ( result, structOrUnionSpecifier1left, 
++structOrUnionSpecifier1right), rest671)
++end
++|  ( 120, ( ( _, ( MlyValue.enumSpecifier enumSpecifier, 
++enumSpecifier1left, enumSpecifier1right)) :: rest671)) => let val  
++result = MlyValue.typeSpecifier (enumSpecifier)
++ in ( LrTable.NT 37, ( result, enumSpecifier1left, enumSpecifier1right
++), rest671)
++end
++|  ( 121, ( ( _, ( MlyValue.TYPE_NAME TYPE_NAME, TYPE_NAME1left, 
++TYPE_NAME1right)) :: rest671)) => let val  result = 
++MlyValue.typeSpecifier (TypedefName TYPE_NAME)
++ in ( LrTable.NT 37, ( result, TYPE_NAME1left, TYPE_NAME1right), 
++rest671)
++end
++|  ( 122, ( ( _, ( _, VOID1left, VOID1right)) :: rest671)) => let val 
++ result = MlyValue.typeSpecifierReserved (Void)
++ in ( LrTable.NT 38, ( result, VOID1left, VOID1right), rest671)
++end
++|  ( 123, ( ( _, ( _, CHAR1left, CHAR1right)) :: rest671)) => let val 
++ result = MlyValue.typeSpecifierReserved (Char)
++ in ( LrTable.NT 38, ( result, CHAR1left, CHAR1right), rest671)
++end
++|  ( 124, ( ( _, ( _, SHORT1left, SHORT1right)) :: rest671)) => let
++ val  result = MlyValue.typeSpecifierReserved (Short)
++ in ( LrTable.NT 38, ( result, SHORT1left, SHORT1right), rest671)
++end
++|  ( 125, ( ( _, ( _, INT1left, INT1right)) :: rest671)) => let val  
++result = MlyValue.typeSpecifierReserved (Int)
++ in ( LrTable.NT 38, ( result, INT1left, INT1right), rest671)
++end
++|  ( 126, ( ( _, ( _, LONG1left, LONG1right)) :: rest671)) => let val 
++ result = MlyValue.typeSpecifierReserved (Long)
++ in ( LrTable.NT 38, ( result, LONG1left, LONG1right), rest671)
++end
++|  ( 127, ( ( _, ( _, FLOAT1left, FLOAT1right)) :: rest671)) => let
++ val  result = MlyValue.typeSpecifierReserved (Float)
++ in ( LrTable.NT 38, ( result, FLOAT1left, FLOAT1right), rest671)
++end
++|  ( 128, ( ( _, ( _, DOUBLE1left, DOUBLE1right)) :: rest671)) => let
++ val  result = MlyValue.typeSpecifierReserved (Double)
++ in ( LrTable.NT 38, ( result, DOUBLE1left, DOUBLE1right), rest671)
++
++end
++|  ( 129, ( ( _, ( _, SIGNED1left, SIGNED1right)) :: rest671)) => let
++ val  result = MlyValue.typeSpecifierReserved (Signed)
++ in ( LrTable.NT 38, ( result, SIGNED1left, SIGNED1right), rest671)
++
++end
++|  ( 130, ( ( _, ( _, UNSIGNED1left, UNSIGNED1right)) :: rest671)) =>
++ let val  result = MlyValue.typeSpecifierReserved (Unsigned)
++ in ( LrTable.NT 38, ( result, UNSIGNED1left, UNSIGNED1right), rest671
++)
++end
++|  ( 131, ( ( _, ( _, _, RCURLY1right)) :: ( _, ( 
++MlyValue.structDeclarationList structDeclarationList, _, _)) :: _ :: (
++ _, ( MlyValue.structOrUnion structOrUnion, structOrUnion1left, _)) ::
++ rest671)) => let val  result = MlyValue.structOrUnionSpecifier (
++Struct{isStruct=structOrUnion, tagOpt=NONE, members=seqToList structDeclarationList}
++)
++ in ( LrTable.NT 43, ( result, structOrUnion1left, RCURLY1right), 
++rest671)
++end
++|  ( 132, ( ( _, ( _, _, RCURLY1right)) :: ( _, ( 
++MlyValue.structDeclarationList structDeclarationList, _, _)) :: _ :: (
++ _, ( MlyValue.ID ID, _, _)) :: ( _, ( MlyValue.structOrUnion 
++structOrUnion, structOrUnion1left, _)) :: rest671)) => let val  result
++ = MlyValue.structOrUnionSpecifier (
++Struct{isStruct=structOrUnion, tagOpt=SOME ID, members=seqToList structDeclarationList}
++)
++ in ( LrTable.NT 43, ( result, structOrUnion1left, RCURLY1right), 
++rest671)
++end
++|  ( 133, ( ( _, ( _, _, RCURLY1right)) :: ( _, ( 
++MlyValue.structDeclarationList structDeclarationList, _, _)) :: _ :: (
++ _, ( MlyValue.TYPE_NAME TYPE_NAME, _, _)) :: ( _, ( 
++MlyValue.structOrUnion structOrUnion, structOrUnion1left, _)) :: 
++rest671)) => let val  result = MlyValue.structOrUnionSpecifier (
++Struct{isStruct=structOrUnion, tagOpt=SOME TYPE_NAME, members=seqToList structDeclarationList}
++)
++ in ( LrTable.NT 43, ( result, structOrUnion1left, RCURLY1right), 
++rest671)
++end
++|  ( 134, ( ( _, ( MlyValue.ID ID, _, ID1right)) :: ( _, ( 
++MlyValue.structOrUnion structOrUnion, structOrUnion1left, _)) :: 
++rest671)) => let val  result = MlyValue.structOrUnionSpecifier (
++StructTag {isStruct=structOrUnion, name=ID})
++ in ( LrTable.NT 43, ( result, structOrUnion1left, ID1right), rest671)
++
++end
++|  ( 135, ( ( _, ( MlyValue.TYPE_NAME TYPE_NAME, _, TYPE_NAME1right))
++ :: ( _, ( MlyValue.structOrUnion structOrUnion, structOrUnion1left, _
++)) :: rest671)) => let val  result = MlyValue.structOrUnionSpecifier (
++StructTag {isStruct=structOrUnion, name=TYPE_NAME})
++ in ( LrTable.NT 43, ( result, structOrUnion1left, TYPE_NAME1right), 
++rest671)
++end
++|  ( 136, ( ( _, ( _, STRUCT1left, STRUCT1right)) :: rest671)) => let
++ val  result = MlyValue.structOrUnion (true)
++ in ( LrTable.NT 54, ( result, STRUCT1left, STRUCT1right), rest671)
++
++end
++|  ( 137, ( ( _, ( _, UNION1left, UNION1right)) :: rest671)) => let
++ val  result = MlyValue.structOrUnion (false)
++ in ( LrTable.NT 54, ( result, UNION1left, UNION1right), rest671)
++end
++|  ( 138, ( ( _, ( MlyValue.structDeclaration structDeclaration, 
++structDeclaration1left, structDeclaration1right)) :: rest671)) => let
++ val  result = MlyValue.structDeclarationList (
++singletonSeq structDeclaration)
++ in ( LrTable.NT 59, ( result, structDeclaration1left, 
++structDeclaration1right), rest671)
++end
++|  ( 139, ( ( _, ( MlyValue.structDeclaration structDeclaration, _, 
++structDeclaration1right)) :: ( _, ( MlyValue.structDeclarationList 
++structDeclarationList, structDeclarationList1left, _)) :: rest671)) =>
++ let val  result = MlyValue.structDeclarationList (
++addToSeq(structDeclaration, structDeclarationList))
++ in ( LrTable.NT 59, ( result, structDeclarationList1left, 
++structDeclaration1right), rest671)
++end
++|  ( 140, ( ( _, ( _, _, SEMICOLON1right)) :: ( _, ( 
++MlyValue.structDeclaratorList structDeclaratorList, _, _)) :: ( _, ( 
++MlyValue.specifierQualifierList specifierQualifierList, 
++specifierQualifierList1left, _)) :: rest671)) => let val  result = 
++MlyValue.structDeclaration (
++(specifierQualifierList, seqToList structDeclaratorList))
++ in ( LrTable.NT 60, ( result, specifierQualifierList1left, 
++SEMICOLON1right), rest671)
++end
++|  ( 141, ( ( _, ( _, _, SEMICOLON1right)) :: ( _, ( 
++MlyValue.notypeStructDeclaratorList notypeStructDeclaratorList, _, _))
++ :: ( _, ( MlyValue.typeQualifierList typeQualifierList, 
++typeQualifierList1left, _)) :: rest671)) => let val  result = 
++MlyValue.structDeclaration (
++let
++					    val ct = {qualifiers=typeQualifierList, specifiers=[]}
++					 in
++					   (ct, seqToList notypeStructDeclaratorList)
++					 end
++)
++ in ( LrTable.NT 60, ( result, typeQualifierList1left, SEMICOLON1right
++), rest671)
++end
++|  ( 142, ( ( _, ( MlyValue.structDeclarator structDeclarator, 
++structDeclarator1left, structDeclarator1right)) :: rest671)) => let
++ val  result = MlyValue.structDeclaratorList (
++singletonSeq structDeclarator)
++ in ( LrTable.NT 57, ( result, structDeclarator1left, 
++structDeclarator1right), rest671)
++end
++|  ( 143, ( ( _, ( MlyValue.structDeclarator structDeclarator, _, 
++structDeclarator1right)) :: _ :: ( _, ( MlyValue.structDeclaratorList 
++structDeclaratorList, structDeclaratorList1left, _)) :: rest671)) =>
++ let val  result = MlyValue.structDeclaratorList (
++addToSeq(structDeclarator, structDeclaratorList))
++ in ( LrTable.NT 57, ( result, structDeclaratorList1left, 
++structDeclarator1right), rest671)
++end
++|  ( 144, ( ( _, ( MlyValue.notypeStructDeclarator 
++notypeStructDeclarator, notypeStructDeclarator1left, 
++notypeStructDeclarator1right)) :: rest671)) => let val  result = 
++MlyValue.notypeStructDeclaratorList (
++singletonSeq notypeStructDeclarator)
++ in ( LrTable.NT 58, ( result, notypeStructDeclarator1left, 
++notypeStructDeclarator1right), rest671)
++end
++|  ( 145, ( ( _, ( MlyValue.structDeclarator structDeclarator, _, 
++structDeclarator1right)) :: _ :: ( _, ( 
++MlyValue.notypeStructDeclaratorList notypeStructDeclaratorList, 
++notypeStructDeclaratorList1left, _)) :: rest671)) => let val  result =
++ MlyValue.notypeStructDeclaratorList (
++addToSeq(structDeclarator, notypeStructDeclaratorList))
++ in ( LrTable.NT 58, ( result, notypeStructDeclaratorList1left, 
++structDeclarator1right), rest671)
++end
++|  ( 146, ( ( _, ( MlyValue.declarator declarator, declarator1left, 
++declarator1right)) :: rest671)) => let val  result = 
++MlyValue.structDeclarator (declarator, EmptyExpr)
++ in ( LrTable.NT 55, ( result, declarator1left, declarator1right), 
++rest671)
++end
++|  ( 147, ( ( _, ( MlyValue.expr expr, _, expr1right)) :: ( _, ( _, 
++COLON1left, _)) :: rest671)) => let val  result = 
++MlyValue.structDeclarator (EmptyDecr, expr)
++ in ( LrTable.NT 55, ( result, COLON1left, expr1right), rest671)
++end
++|  ( 148, ( ( _, ( MlyValue.expr expr, _, expr1right)) :: _ :: ( _, ( 
++MlyValue.declarator declarator, declarator1left, _)) :: rest671)) =>
++ let val  result = MlyValue.structDeclarator (declarator, expr)
++ in ( LrTable.NT 55, ( result, declarator1left, expr1right), rest671)
++
++end
++|  ( 149, ( ( _, ( MlyValue.notypeDeclarator notypeDeclarator, 
++notypeDeclarator1left, notypeDeclarator1right)) :: rest671)) => let
++ val  result = MlyValue.notypeStructDeclarator (
++notypeDeclarator, EmptyExpr)
++ in ( LrTable.NT 56, ( result, notypeDeclarator1left, 
++notypeDeclarator1right), rest671)
++end
++|  ( 150, ( ( _, ( MlyValue.expr expr, _, expr1right)) :: ( _, ( _, 
++COLON1left, _)) :: rest671)) => let val  result = 
++MlyValue.notypeStructDeclarator (EmptyDecr, expr)
++ in ( LrTable.NT 56, ( result, COLON1left, expr1right), rest671)
++end
++|  ( 151, ( ( _, ( MlyValue.expr expr, _, expr1right)) :: _ :: ( _, ( 
++MlyValue.notypeDeclarator notypeDeclarator, notypeDeclarator1left, _))
++ :: rest671)) => let val  result = MlyValue.notypeStructDeclarator (
++notypeDeclarator, expr)
++ in ( LrTable.NT 56, ( result, notypeDeclarator1left, expr1right), 
++rest671)
++end
++|  ( 152, ( ( _, ( _, CONST1left, CONST1right)) :: rest671)) => let
++ val  result = MlyValue.typeQualifier (CONST)
++ in ( LrTable.NT 39, ( result, CONST1left, CONST1right), rest671)
++end
++|  ( 153, ( ( _, ( _, VOLATILE1left, VOLATILE1right)) :: rest671)) =>
++ let val  result = MlyValue.typeQualifier (VOLATILE)
++ in ( LrTable.NT 39, ( result, VOLATILE1left, VOLATILE1right), rest671
++)
++end
++|  ( 154, ( ( _, ( _, _, RCURLY1right)) :: ( _, ( 
++MlyValue.trailingComma trailingComma, _, _)) :: ( _, ( 
++MlyValue.enumeratorList enumeratorList, _, _)) :: _ :: ( _, ( _, 
++ENUM1left, _)) :: rest671)) => let val  result = 
++MlyValue.enumSpecifier (
++Enum{tagOpt=NONE, enumerators=seqToList enumeratorList, trailingComma=trailingComma}
++)
++ in ( LrTable.NT 42, ( result, ENUM1left, RCURLY1right), rest671)
++end
++|  ( 155, ( ( _, ( _, _, RCURLY1right)) :: ( _, ( 
++MlyValue.trailingComma trailingComma, _, _)) :: ( _, ( 
++MlyValue.enumeratorList enumeratorList, _, _)) :: _ :: ( _, ( 
++MlyValue.ID ID, _, _)) :: ( _, ( _, ENUM1left, _)) :: rest671)) => let
++ val  result = MlyValue.enumSpecifier (
++Enum{tagOpt=SOME(ID), enumerators=seqToList enumeratorList, trailingComma=trailingComma}
++)
++ in ( LrTable.NT 42, ( result, ENUM1left, RCURLY1right), rest671)
++end
++|  ( 156, ( ( _, ( _, _, RCURLY1right)) :: ( _, ( 
++MlyValue.trailingComma trailingComma, _, _)) :: ( _, ( 
++MlyValue.enumeratorList enumeratorList, _, _)) :: _ :: ( _, ( 
++MlyValue.TYPE_NAME TYPE_NAME, _, _)) :: ( _, ( _, ENUM1left, _)) :: 
++rest671)) => let val  result = MlyValue.enumSpecifier (
++Enum{tagOpt=SOME(TYPE_NAME), enumerators=seqToList enumeratorList, trailingComma=trailingComma}
++)
++ in ( LrTable.NT 42, ( result, ENUM1left, RCURLY1right), rest671)
++end
++|  ( 157, ( ( _, ( MlyValue.ID ID, _, ID1right)) :: ( _, ( _, 
++ENUM1left, _)) :: rest671)) => let val  result = 
++MlyValue.enumSpecifier (EnumTag(ID))
++ in ( LrTable.NT 42, ( result, ENUM1left, ID1right), rest671)
++end
++|  ( 158, ( ( _, ( MlyValue.TYPE_NAME TYPE_NAME, _, TYPE_NAME1right))
++ :: ( _, ( _, ENUM1left, _)) :: rest671)) => let val  result = 
++MlyValue.enumSpecifier (EnumTag(TYPE_NAME))
++ in ( LrTable.NT 42, ( result, ENUM1left, TYPE_NAME1right), rest671)
++
++end
++|  ( 159, ( ( _, ( MlyValue.enumerator enumerator, _, enumerator1right
++)) :: _ :: ( _, ( MlyValue.enumeratorList enumeratorList, 
++enumeratorList1left, _)) :: rest671)) => let val  result = 
++MlyValue.enumeratorList (addToSeq(enumerator, enumeratorList))
++ in ( LrTable.NT 12, ( result, enumeratorList1left, enumerator1right),
++ rest671)
++end
++|  ( 160, ( ( _, ( MlyValue.enumerator enumerator, enumerator1left, 
++enumerator1right)) :: rest671)) => let val  result = 
++MlyValue.enumeratorList (
++(TypeDefs.addNoTdef(#1(enumerator)));
++					 singletonSeq enumerator)
++ in ( LrTable.NT 12, ( result, enumerator1left, enumerator1right), 
++rest671)
++end
++|  ( 161, ( ( _, ( MlyValue.ID ID, ID1left, ID1right)) :: rest671)) =>
++ let val  result = MlyValue.enumerator ((ID,ParseTree.EmptyExpr))
++ in ( LrTable.NT 13, ( result, ID1left, ID1right), rest671)
++end
++|  ( 162, ( ( _, ( MlyValue.expr expr, _, expr1right)) :: _ :: ( _, ( 
++MlyValue.ID ID, ID1left, _)) :: rest671)) => let val  result = 
++MlyValue.enumerator (ID,expr)
++ in ( LrTable.NT 13, ( result, ID1left, expr1right), rest671)
++end
++|  ( 163, ( ( _, ( _, EXTERN1left, EXTERN1right)) :: rest671)) => let
++ val  result = MlyValue.storageClassSpecifier (EXTERN)
++ in ( LrTable.NT 35, ( result, EXTERN1left, EXTERN1right), rest671)
++
++end
++|  ( 164, ( ( _, ( _, STATIC1left, STATIC1right)) :: rest671)) => let
++ val  result = MlyValue.storageClassSpecifier (STATIC)
++ in ( LrTable.NT 35, ( result, STATIC1left, STATIC1right), rest671)
++
++end
++|  ( 165, ( ( _, ( _, AUTO1left, AUTO1right)) :: rest671)) => let val 
++ result = MlyValue.storageClassSpecifier (AUTO)
++ in ( LrTable.NT 35, ( result, AUTO1left, AUTO1right), rest671)
++end
++|  ( 166, ( ( _, ( _, REGISTER1left, REGISTER1right)) :: rest671)) =>
++ let val  result = MlyValue.storageClassSpecifier (REGISTER)
++ in ( LrTable.NT 35, ( result, REGISTER1left, REGISTER1right), rest671
++)
++end
++|  ( 167, ( ( _, ( _, TYPEDEF1left, TYPEDEF1right)) :: rest671)) =>
++ let val  result = MlyValue.storageClassSpecifier (TYPEDEF)
++ in ( LrTable.NT 35, ( result, TYPEDEF1left, TYPEDEF1right), rest671)
++
++end
++|  ( 168, ( rest671)) => let val  result = MlyValue.trailingComma (
++false)
++ in ( LrTable.NT 11, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 169, ( ( _, ( _, COMMA1left, COMMA1right)) :: rest671)) => let
++ val  result = MlyValue.trailingComma (true)
++ in ( LrTable.NT 11, ( result, COMMA1left, COMMA1right), rest671)
++end
++|  ( 170, ( ( _, ( MlyValue.initDeclarator initDeclarator, 
++initDeclarator1left, initDeclarator1right)) :: rest671)) => let val  
++result = MlyValue.initDeclaratorList (singletonSeq initDeclarator)
++ in ( LrTable.NT 18, ( result, initDeclarator1left, 
++initDeclarator1right), rest671)
++end
++|  ( 171, ( ( _, ( MlyValue.initDeclarator initDeclarator, _, 
++initDeclarator1right)) :: _ :: ( _, ( MlyValue.initDeclaratorList 
++initDeclaratorList, initDeclaratorList1left, _)) :: rest671)) => let
++ val  result = MlyValue.initDeclaratorList (
++addToSeq(initDeclarator, initDeclaratorList))
++ in ( LrTable.NT 18, ( result, initDeclaratorList1left, 
++initDeclarator1right), rest671)
++end
++|  ( 172, ( ( _, ( MlyValue.declarator declarator, declarator1left, 
++declarator1right)) :: rest671)) => let val  result = 
++MlyValue.initDeclarator ((declarator,EmptyExpr))
++ in ( LrTable.NT 16, ( result, declarator1left, declarator1right), 
++rest671)
++end
++|  ( 173, ( ( _, ( MlyValue.initializer initializer, _, 
++initializer1right)) :: _ :: ( _, ( MlyValue.declarator declarator, 
++declarator1left, _)) :: rest671)) => let val  result = 
++MlyValue.initDeclarator (declarator,initializer)
++ in ( LrTable.NT 16, ( result, declarator1left, initializer1right), 
++rest671)
++end
++|  ( 174, ( ( _, ( MlyValue.notypeInitDeclarator notypeInitDeclarator,
++ notypeInitDeclarator1left, notypeInitDeclarator1right)) :: rest671))
++ => let val  result = MlyValue.notypeInitDeclaratorList (
++singletonSeq notypeInitDeclarator)
++ in ( LrTable.NT 19, ( result, notypeInitDeclarator1left, 
++notypeInitDeclarator1right), rest671)
++end
++|  ( 175, ( ( _, ( MlyValue.initDeclarator initDeclarator, _, 
++initDeclarator1right)) :: _ :: ( _, ( 
++MlyValue.notypeInitDeclaratorList notypeInitDeclaratorList, 
++notypeInitDeclaratorList1left, _)) :: rest671)) => let val  result = 
++MlyValue.notypeInitDeclaratorList (
++addToSeq(initDeclarator, notypeInitDeclaratorList))
++ in ( LrTable.NT 19, ( result, notypeInitDeclaratorList1left, 
++initDeclarator1right), rest671)
++end
++|  ( 176, ( ( _, ( MlyValue.notypeDeclarator notypeDeclarator, 
++notypeDeclarator1left, notypeDeclarator1right)) :: rest671)) => let
++ val  result = MlyValue.notypeInitDeclarator (
++(notypeDeclarator,EmptyExpr))
++ in ( LrTable.NT 17, ( result, notypeDeclarator1left, 
++notypeDeclarator1right), rest671)
++end
++|  ( 177, ( ( _, ( MlyValue.initializer initializer, _, 
++initializer1right)) :: _ :: ( _, ( MlyValue.notypeDeclarator 
++notypeDeclarator, notypeDeclarator1left, _)) :: rest671)) => let val  
++result = MlyValue.notypeInitDeclarator (notypeDeclarator,initializer)
++ in ( LrTable.NT 17, ( result, notypeDeclarator1left, 
++initializer1right), rest671)
++end
++|  ( 178, ( ( _, ( MlyValue.aftertypeDeclarator aftertypeDeclarator, 
++aftertypeDeclarator1left, aftertypeDeclarator1right)) :: rest671)) =>
++ let val  result = MlyValue.declarator (aftertypeDeclarator)
++ in ( LrTable.NT 21, ( result, aftertypeDeclarator1left, 
++aftertypeDeclarator1right), rest671)
++end
++|  ( 179, ( ( _, ( MlyValue.notypeDeclarator notypeDeclarator, 
++notypeDeclarator1left, notypeDeclarator1right)) :: rest671)) => let
++ val  result = MlyValue.declarator (notypeDeclarator)
++ in ( LrTable.NT 21, ( result, notypeDeclarator1left, 
++notypeDeclarator1right), rest671)
++end
++|  ( 180, ( ( _, ( MlyValue.aftertypeDirectDeclarator 
++aftertypeDirectDeclarator, aftertypeDirectDeclarator1left, 
++aftertypeDirectDeclarator1right)) :: rest671)) => let val  result = 
++MlyValue.aftertypeDeclarator (aftertypeDirectDeclarator)
++ in ( LrTable.NT 22, ( result, aftertypeDirectDeclarator1left, 
++aftertypeDirectDeclarator1right), rest671)
++end
++|  ( 181, ( ( _, ( MlyValue.aftertypeDirectDeclarator 
++aftertypeDirectDeclarator, _, aftertypeDirectDeclarator1right)) :: ( _
++, ( MlyValue.pointer pointer, pointer1left, _)) :: rest671)) => let
++ val  result = MlyValue.aftertypeDeclarator (
++applyPointer(pointer,aftertypeDirectDeclarator))
++ in ( LrTable.NT 22, ( result, pointer1left, 
++aftertypeDirectDeclarator1right), rest671)
++end
++|  ( 182, ( ( _, ( MlyValue.notypeDirectDeclarator 
++notypeDirectDeclarator, notypeDirectDeclarator1left, 
++notypeDirectDeclarator1right)) :: rest671)) => let val  result = 
++MlyValue.notypeDeclarator (notypeDirectDeclarator)
++ in ( LrTable.NT 23, ( result, notypeDirectDeclarator1left, 
++notypeDirectDeclarator1right), rest671)
++end
++|  ( 183, ( ( _, ( MlyValue.notypeDirectDeclarator 
++notypeDirectDeclarator, _, notypeDirectDeclarator1right)) :: ( _, ( 
++MlyValue.pointer pointer, pointer1left, _)) :: rest671)) => let val  
++result = MlyValue.notypeDeclarator (
++applyPointer(pointer, notypeDirectDeclarator))
++ in ( LrTable.NT 23, ( result, pointer1left, 
++notypeDirectDeclarator1right), rest671)
++end
++|  ( 184, ( ( _, ( MlyValue.parmDirectDeclarator parmDirectDeclarator,
++ parmDirectDeclarator1left, parmDirectDeclarator1right)) :: rest671))
++ => let val  result = MlyValue.parmDeclarator (parmDirectDeclarator)
++ in ( LrTable.NT 24, ( result, parmDirectDeclarator1left, 
++parmDirectDeclarator1right), rest671)
++end
++|  ( 185, ( ( _, ( MlyValue.parmDirectDeclarator parmDirectDeclarator,
++ _, parmDirectDeclarator1right)) :: ( _, ( MlyValue.pointer pointer, 
++pointer1left, _)) :: rest671)) => let val  result = 
++MlyValue.parmDeclarator (applyPointer(pointer, parmDirectDeclarator))
++ in ( LrTable.NT 24, ( result, pointer1left, 
++parmDirectDeclarator1right), rest671)
++end
++|  ( 186, ( ( _, ( _, TIMES1left, TIMES1right)) :: rest671)) => let
++ val  result = MlyValue.pointer (PointerDecr(EmptyDecr))
++ in ( LrTable.NT 20, ( result, TIMES1left, TIMES1right), rest671)
++end
++|  ( 187, ( ( _, ( MlyValue.typeQualifierList typeQualifierList, _, 
++typeQualifierList1right)) :: ( _, ( _, TIMES1left, _)) :: rest671)) =>
++ let val  result = MlyValue.pointer (
++PointerDecr(loopQd(typeQualifierList,EmptyDecr)))
++ in ( LrTable.NT 20, ( result, TIMES1left, typeQualifierList1right), 
++rest671)
++end
++|  ( 188, ( ( _, ( MlyValue.pointer pointer, _, pointer1right)) :: ( _
++, ( _, TIMES1left, _)) :: rest671)) => let val  result = 
++MlyValue.pointer (PointerDecr(pointer))
++ in ( LrTable.NT 20, ( result, TIMES1left, pointer1right), rest671)
++
++end
++|  ( 189, ( ( _, ( MlyValue.pointer pointer, _, pointer1right)) :: ( _
++, ( MlyValue.typeQualifierList typeQualifierList, _, _)) :: ( _, ( _, 
++TIMES1left, _)) :: rest671)) => let val  result = MlyValue.pointer (
++PointerDecr(loopQd(typeQualifierList,pointer)))
++ in ( LrTable.NT 20, ( result, TIMES1left, pointer1right), rest671)
++
++end
++|  ( 190, ( ( _, ( MlyValue.TYPE_NAME TYPE_NAME, (TYPE_NAMEleft as 
++TYPE_NAME1left), (TYPE_NAMEright as TYPE_NAME1right))) :: rest671)) =>
++ let val  result = MlyValue.aftertypeDirectDeclarator (
++markDeclarator srcMap (VarDecr TYPE_NAME,TYPE_NAMEleft,TYPE_NAMEright)
++)
++ in ( LrTable.NT 25, ( result, TYPE_NAME1left, TYPE_NAME1right), 
++rest671)
++end
++|  ( 191, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( 
++MlyValue.aftertypeDeclarator aftertypeDeclarator, _, _)) :: ( _, ( _, 
++LPAREN1left, _)) :: rest671)) => let val  result = 
++MlyValue.aftertypeDirectDeclarator (aftertypeDeclarator)
++ in ( LrTable.NT 25, ( result, LPAREN1left, RPAREN1right), rest671)
++
++end
++|  ( 192, ( ( _, ( _, _, RBRACE1right)) :: _ :: ( _, ( 
++MlyValue.aftertypeDirectDeclarator aftertypeDirectDeclarator, 
++aftertypeDirectDeclarator1left, _)) :: rest671)) => let val  result = 
++MlyValue.aftertypeDirectDeclarator (
++ArrayDecr (aftertypeDirectDeclarator,EmptyExpr))
++ in ( LrTable.NT 25, ( result, aftertypeDirectDeclarator1left, 
++RBRACE1right), rest671)
++end
++|  ( 193, ( ( _, ( _, _, RBRACE1right)) :: ( _, ( MlyValue.expr expr,
++ _, _)) :: _ :: ( _, ( MlyValue.aftertypeDirectDeclarator 
++aftertypeDirectDeclarator, aftertypeDirectDeclarator1left, _)) :: 
++rest671)) => let val  result = MlyValue.aftertypeDirectDeclarator (
++ArrayDecr (aftertypeDirectDeclarator,expr))
++ in ( LrTable.NT 25, ( result, aftertypeDirectDeclarator1left, 
++RBRACE1right), rest671)
++end
++|  ( 194, ( ( _, ( _, _, RPAREN1right)) :: _ :: ( _, ( 
++MlyValue.aftertypeDirectDeclarator aftertypeDirectDeclarator, 
++aftertypeDirectDeclarator1left, _)) :: rest671)) => let val  result = 
++MlyValue.aftertypeDirectDeclarator (
++FuncDecr (aftertypeDirectDeclarator,nil))
++ in ( LrTable.NT 25, ( result, aftertypeDirectDeclarator1left, 
++RPAREN1right), rest671)
++end
++|  ( 195, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( 
++MlyValue.parameterTypeList parameterTypeList, _, _)) :: _ :: ( _, ( 
++MlyValue.aftertypeDirectDeclarator aftertypeDirectDeclarator, 
++aftertypeDirectDeclarator1left, _)) :: rest671)) => let val  result = 
++MlyValue.aftertypeDirectDeclarator (
++FuncDecr (aftertypeDirectDeclarator,parameterTypeList))
++ in ( LrTable.NT 25, ( result, aftertypeDirectDeclarator1left, 
++RPAREN1right), rest671)
++end
++|  ( 196, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( MlyValue.identlist 
++identlist, _, _)) :: _ :: ( _, ( MlyValue.aftertypeDirectDeclarator 
++aftertypeDirectDeclarator, aftertypeDirectDeclarator1left, _)) :: 
++rest671)) => let val  result = MlyValue.aftertypeDirectDeclarator (
++FuncDecr (aftertypeDirectDeclarator,
++					    map (fn (x,y,z) => (unknown,markDeclarator srcMap (VarDecr x,y,z))) (seqToList identlist))
++)
++ in ( LrTable.NT 25, ( result, aftertypeDirectDeclarator1left, 
++RPAREN1right), rest671)
++end
++|  ( 197, ( ( _, ( MlyValue.ID ID, (IDleft as ID1left), (IDright as 
++ID1right))) :: rest671)) => let val  result = 
++MlyValue.notypeDirectDeclarator (
++markDeclarator srcMap (VarDecr ID,IDleft,IDright))
++ in ( LrTable.NT 26, ( result, ID1left, ID1right), rest671)
++end
++|  ( 198, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( 
++MlyValue.notypeDeclarator notypeDeclarator, _, _)) :: ( _, ( _, 
++LPAREN1left, _)) :: rest671)) => let val  result = 
++MlyValue.notypeDirectDeclarator (notypeDeclarator)
++ in ( LrTable.NT 26, ( result, LPAREN1left, RPAREN1right), rest671)
++
++end
++|  ( 199, ( ( _, ( _, _, RBRACE1right)) :: _ :: ( _, ( 
++MlyValue.notypeDirectDeclarator notypeDirectDeclarator, 
++notypeDirectDeclarator1left, _)) :: rest671)) => let val  result = 
++MlyValue.notypeDirectDeclarator (
++ArrayDecr (notypeDirectDeclarator,EmptyExpr))
++ in ( LrTable.NT 26, ( result, notypeDirectDeclarator1left, 
++RBRACE1right), rest671)
++end
++|  ( 200, ( ( _, ( _, _, RBRACE1right)) :: ( _, ( MlyValue.expr expr,
++ _, _)) :: _ :: ( _, ( MlyValue.notypeDirectDeclarator 
++notypeDirectDeclarator, notypeDirectDeclarator1left, _)) :: rest671))
++ => let val  result = MlyValue.notypeDirectDeclarator (
++ArrayDecr (notypeDirectDeclarator,expr))
++ in ( LrTable.NT 26, ( result, notypeDirectDeclarator1left, 
++RBRACE1right), rest671)
++end
++|  ( 201, ( ( _, ( _, _, RPAREN1right)) :: _ :: ( _, ( 
++MlyValue.notypeDirectDeclarator notypeDirectDeclarator, 
++notypeDirectDeclarator1left, _)) :: rest671)) => let val  result = 
++MlyValue.notypeDirectDeclarator (FuncDecr (notypeDirectDeclarator,nil)
++)
++ in ( LrTable.NT 26, ( result, notypeDirectDeclarator1left, 
++RPAREN1right), rest671)
++end
++|  ( 202, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( 
++MlyValue.parameterTypeList parameterTypeList, _, _)) :: _ :: ( _, ( 
++MlyValue.notypeDirectDeclarator notypeDirectDeclarator, 
++notypeDirectDeclarator1left, _)) :: rest671)) => let val  result = 
++MlyValue.notypeDirectDeclarator (
++FuncDecr (notypeDirectDeclarator,parameterTypeList))
++ in ( LrTable.NT 26, ( result, notypeDirectDeclarator1left, 
++RPAREN1right), rest671)
++end
++|  ( 203, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( MlyValue.identlist 
++identlist, _, _)) :: _ :: ( _, ( MlyValue.notypeDirectDeclarator 
++notypeDirectDeclarator, notypeDirectDeclarator1left, _)) :: rest671))
++ => let val  result = MlyValue.notypeDirectDeclarator (
++FuncDecr (notypeDirectDeclarator,
++ 						   map (fn (x,y,z) => (unknown,markDeclarator srcMap (VarDecr x,y,z))) (seqToList identlist))
++)
++ in ( LrTable.NT 26, ( result, notypeDirectDeclarator1left, 
++RPAREN1right), rest671)
++end
++|  ( 204, ( ( _, ( MlyValue.TYPE_NAME TYPE_NAME, (TYPE_NAMEleft as 
++TYPE_NAME1left), (TYPE_NAMEright as TYPE_NAME1right))) :: rest671)) =>
++ let val  result = MlyValue.parmDirectDeclarator (
++markDeclarator srcMap (VarDecr TYPE_NAME,TYPE_NAMEleft,TYPE_NAMEright)
++)
++ in ( LrTable.NT 27, ( result, TYPE_NAME1left, TYPE_NAME1right), 
++rest671)
++end
++|  ( 205, ( ( _, ( _, _, RBRACE1right)) :: _ :: ( _, ( 
++MlyValue.parmDirectDeclarator parmDirectDeclarator, 
++parmDirectDeclarator1left, _)) :: rest671)) => let val  result = 
++MlyValue.parmDirectDeclarator (
++ArrayDecr (parmDirectDeclarator,EmptyExpr))
++ in ( LrTable.NT 27, ( result, parmDirectDeclarator1left, RBRACE1right
++), rest671)
++end
++|  ( 206, ( ( _, ( _, _, RBRACE1right)) :: ( _, ( MlyValue.expr expr,
++ _, _)) :: _ :: ( _, ( MlyValue.parmDirectDeclarator 
++parmDirectDeclarator, parmDirectDeclarator1left, _)) :: rest671)) =>
++ let val  result = MlyValue.parmDirectDeclarator (
++ArrayDecr (parmDirectDeclarator,expr))
++ in ( LrTable.NT 27, ( result, parmDirectDeclarator1left, RBRACE1right
++), rest671)
++end
++|  ( 207, ( ( _, ( _, _, RPAREN1right)) :: _ :: ( _, ( 
++MlyValue.parmDirectDeclarator parmDirectDeclarator, 
++parmDirectDeclarator1left, _)) :: rest671)) => let val  result = 
++MlyValue.parmDirectDeclarator (FuncDecr (parmDirectDeclarator,nil))
++ in ( LrTable.NT 27, ( result, parmDirectDeclarator1left, RPAREN1right
++), rest671)
++end
++|  ( 208, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( 
++MlyValue.parameterTypeList parameterTypeList, _, _)) :: _ :: ( _, ( 
++MlyValue.parmDirectDeclarator parmDirectDeclarator, 
++parmDirectDeclarator1left, _)) :: rest671)) => let val  result = 
++MlyValue.parmDirectDeclarator (
++FuncDecr (parmDirectDeclarator,parameterTypeList))
++ in ( LrTable.NT 27, ( result, parmDirectDeclarator1left, RPAREN1right
++), rest671)
++end
++|  ( 209, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( MlyValue.identlist 
++identlist, _, _)) :: _ :: ( _, ( MlyValue.parmDirectDeclarator 
++parmDirectDeclarator, parmDirectDeclarator1left, _)) :: rest671)) =>
++ let val  result = MlyValue.parmDirectDeclarator (
++FuncDecr (parmDirectDeclarator,
++						    map (fn (x,y,z) => (unknown,markDeclarator srcMap (VarDecr x,y,z))) (seqToList identlist))
++)
++ in ( LrTable.NT 27, ( result, parmDirectDeclarator1left, RPAREN1right
++), rest671)
++end
++|  ( 210, ( ( _, ( MlyValue.expr expr, expr1left, expr1right)) :: 
++rest671)) => let val  result = MlyValue.initializer (expr)
++ in ( LrTable.NT 33, ( result, expr1left, expr1right), rest671)
++end
++|  ( 211, ( ( _, ( _, _, (RCURLYright as RCURLY1right))) :: _ :: ( _, 
++( MlyValue.initializerList initializerList, _, _)) :: ( _, ( _, (
++LCURLYleft as LCURLY1left), _)) :: rest671)) => let val  result = 
++MlyValue.initializer (
++markExpression srcMap (InitList(seqToList initializerList),LCURLYleft,RCURLYright)
++)
++ in ( LrTable.NT 33, ( result, LCURLY1left, RCURLY1right), rest671)
++
++end
++|  ( 212, ( ( _, ( MlyValue.initializer initializer, initializer1left,
++ initializer1right)) :: rest671)) => let val  result = 
++MlyValue.initializerList (singletonSeq initializer)
++ in ( LrTable.NT 34, ( result, initializer1left, initializer1right), 
++rest671)
++end
++|  ( 213, ( ( _, ( MlyValue.initializer initializer, _, 
++initializer1right)) :: _ :: ( _, ( MlyValue.initializerList 
++initializerList, initializerList1left, _)) :: rest671)) => let val  
++result = MlyValue.initializerList (
++addToSeq(initializer, initializerList))
++ in ( LrTable.NT 34, ( result, initializerList1left, initializer1right
++), rest671)
++end
++|  ( 214, ( ( _, ( MlyValue.declaration declaration, (declarationleft
++ as declaration1left), (declarationright as declaration1right))) :: 
++rest671)) => let val  result = MlyValue.declarationList (
++singletonSeq(markDeclaration srcMap (declaration,
++									      declarationleft,
++								              declarationright))
++)
++ in ( LrTable.NT 45, ( result, declaration1left, declaration1right), 
++rest671)
++end
++|  ( 215, ( ( _, ( MlyValue.declaration declaration, declarationleft,
++ (declarationright as declaration1right))) :: ( _, ( 
++MlyValue.declarationList declarationList, declarationList1left, _)) ::
++ rest671)) => let val  result = MlyValue.declarationList (
++addToSeq(markDeclaration srcMap (declaration,
++							            	  declarationleft,
++									  declarationright),
++						  declarationList)
++)
++ in ( LrTable.NT 45, ( result, declarationList1left, declaration1right
++), rest671)
++end
++|  ( 216, ( ( _, ( MlyValue.ID ID, (IDleft as ID1left), (IDright as 
++ID1right))) :: rest671)) => let val  result = MlyValue.identlist (
++singletonSeq (ID,IDleft,IDright))
++ in ( LrTable.NT 46, ( result, ID1left, ID1right), rest671)
++end
++|  ( 217, ( ( _, ( MlyValue.ID ID, IDleft, (IDright as ID1right))) ::
++ _ :: ( _, ( MlyValue.identlist identlist, identlist1left, _)) :: 
++rest671)) => let val  result = MlyValue.identlist (
++addToSeq((ID,IDleft,IDright),identlist))
++ in ( LrTable.NT 46, ( result, identlist1left, ID1right), rest671)
++end
++|  ( 218, ( ( _, ( MlyValue.notypeDeclarator notypeDeclarator, 
++notypeDeclarator1left, notypeDeclarator1right)) :: rest671)) => let
++ val  result = MlyValue.fDefDeclaration (
++insertFuncName(notypeDeclarator);
++					 TypeDefs.pushScope();
++					 insertFuncParams(notypeDeclarator);
++					 (unknown, notypeDeclarator)
++)
++ in ( LrTable.NT 44, ( result, notypeDeclarator1left, 
++notypeDeclarator1right), rest671)
++end
++|  ( 219, ( ( _, ( MlyValue.declarator declarator, _, declarator1right
++)) :: ( _, ( MlyValue.declarationSpecifiers declarationSpecifiers, 
++declarationSpecifiers1left, _)) :: rest671)) => let val  result = 
++MlyValue.fDefDeclaration (
++insertFuncName(declarator);
++					 TypeDefs.pushScope();
++					 insertFuncParams(declarator);
++					 (declarationSpecifiers, declarator)
++)
++ in ( LrTable.NT 44, ( result, declarationSpecifiers1left, 
++declarator1right), rest671)
++end
++|  ( 220, ( ( _, ( MlyValue.notypeDeclarator notypeDeclarator, _, 
++notypeDeclarator1right)) :: ( _, ( MlyValue.declarationModifiers 
++declarationModifiers, declarationModifiers1left, _)) :: rest671)) =>
++ let val  result = MlyValue.fDefDeclaration (
++insertFuncName(notypeDeclarator);
++					 TypeDefs.pushScope();
++					 insertFuncParams(notypeDeclarator);
++					 (declarationModifiers, notypeDeclarator)
++)
++ in ( LrTable.NT 44, ( result, declarationModifiers1left, 
++notypeDeclarator1right), rest671)
++end
++|  ( 221, ( ( _, ( MlyValue.compoundStatement compoundStatement, _, 
++compoundStatement1right)) :: ( _, ( MlyValue.fDefDeclaration 
++fDefDeclaration, fDefDeclaration1left, _)) :: rest671)) => let val  
++result = MlyValue.functionDefinition (
++TypeDefs.popScope();
++					 FunctionDef
++					    {retType = #1 fDefDeclaration,
++					     funDecr = #2 fDefDeclaration,
++                                             krParams = [],
++                                             body = compoundStatement}
++)
++ in ( LrTable.NT 47, ( result, fDefDeclaration1left, 
++compoundStatement1right), rest671)
++end
++|  ( 222, ( ( _, ( MlyValue.compoundStatement compoundStatement, _, 
++compoundStatement1right)) :: ( _, ( MlyValue.declarationList 
++declarationList, _, _)) :: ( _, ( MlyValue.fDefDeclaration 
++fDefDeclaration, fDefDeclaration1left, _)) :: rest671)) => let val  
++result = MlyValue.functionDefinition (
++TypeDefs.popScope();
++					 FunctionDef 
++					    {retType = #1 fDefDeclaration,
++					     funDecr = #2 fDefDeclaration,
++                                             krParams = seqToList declarationList,
++                                             body = compoundStatement}
++)
++ in ( LrTable.NT 47, ( result, fDefDeclaration1left, 
++compoundStatement1right), rest671)
++end
++|  ( 223, ( ( _, ( MlyValue.pointer pointer, pointer1left, 
++pointer1right)) :: rest671)) => let val  result = 
++MlyValue.abstractDeclarator (applyPointer (pointer, EmptyDecr))
++ in ( LrTable.NT 14, ( result, pointer1left, pointer1right), rest671)
++
++end
++|  ( 224, ( ( _, ( MlyValue.directAbstractDeclarator 
++directAbstractDeclarator, directAbstractDeclarator1left, 
++directAbstractDeclarator1right)) :: rest671)) => let val  result = 
++MlyValue.abstractDeclarator (directAbstractDeclarator)
++ in ( LrTable.NT 14, ( result, directAbstractDeclarator1left, 
++directAbstractDeclarator1right), rest671)
++end
++|  ( 225, ( ( _, ( MlyValue.directAbstractDeclarator 
++directAbstractDeclarator, _, directAbstractDeclarator1right)) :: ( _, 
++( MlyValue.pointer pointer, pointer1left, _)) :: rest671)) => let val 
++ result = MlyValue.abstractDeclarator (
++applyPointer(pointer, directAbstractDeclarator))
++ in ( LrTable.NT 14, ( result, pointer1left, 
++directAbstractDeclarator1right), rest671)
++end
++|  ( 226, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( 
++MlyValue.abstractDeclarator abstractDeclarator, _, _)) :: ( _, ( _, 
++LPAREN1left, _)) :: rest671)) => let val  result = 
++MlyValue.directAbstractDeclarator (abstractDeclarator)
++ in ( LrTable.NT 15, ( result, LPAREN1left, RPAREN1right), rest671)
++
++end
++|  ( 227, ( ( _, ( _, _, RBRACE1right)) :: ( _, ( _, LBRACE1left, _))
++ :: rest671)) => let val  result = MlyValue.directAbstractDeclarator (
++ArrayDecr(EmptyDecr, EmptyExpr))
++ in ( LrTable.NT 15, ( result, LBRACE1left, RBRACE1right), rest671)
++
++end
++|  ( 228, ( ( _, ( _, _, RBRACE1right)) :: ( _, ( MlyValue.expr expr,
++ _, _)) :: ( _, ( _, LBRACE1left, _)) :: rest671)) => let val  result
++ = MlyValue.directAbstractDeclarator (ArrayDecr(EmptyDecr, expr))
++ in ( LrTable.NT 15, ( result, LBRACE1left, RBRACE1right), rest671)
++
++end
++|  ( 229, ( ( _, ( _, _, RBRACE1right)) :: _ :: ( _, ( 
++MlyValue.directAbstractDeclarator directAbstractDeclarator, 
++directAbstractDeclarator1left, _)) :: rest671)) => let val  result = 
++MlyValue.directAbstractDeclarator (
++ArrayDecr (directAbstractDeclarator,EmptyExpr))
++ in ( LrTable.NT 15, ( result, directAbstractDeclarator1left, 
++RBRACE1right), rest671)
++end
++|  ( 230, ( ( _, ( _, _, RBRACE1right)) :: ( _, ( MlyValue.expr expr,
++ _, _)) :: _ :: ( _, ( MlyValue.directAbstractDeclarator 
++directAbstractDeclarator, directAbstractDeclarator1left, _)) :: 
++rest671)) => let val  result = MlyValue.directAbstractDeclarator (
++ArrayDecr (directAbstractDeclarator,expr))
++ in ( LrTable.NT 15, ( result, directAbstractDeclarator1left, 
++RBRACE1right), rest671)
++end
++|  ( 231, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( _, LPAREN1left, _))
++ :: rest671)) => let val  result = MlyValue.directAbstractDeclarator (
++FuncDecr (EmptyDecr ,nil))
++ in ( LrTable.NT 15, ( result, LPAREN1left, RPAREN1right), rest671)
++
++end
++|  ( 232, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( 
++MlyValue.parameterTypeList parameterTypeList, _, _)) :: ( _, ( _, 
++LPAREN1left, _)) :: rest671)) => let val  result = 
++MlyValue.directAbstractDeclarator (
++FuncDecr (EmptyDecr, parameterTypeList))
++ in ( LrTable.NT 15, ( result, LPAREN1left, RPAREN1right), rest671)
++
++end
++|  ( 233, ( ( _, ( _, _, RPAREN1right)) :: _ :: ( _, ( 
++MlyValue.directAbstractDeclarator directAbstractDeclarator, 
++directAbstractDeclarator1left, _)) :: rest671)) => let val  result = 
++MlyValue.directAbstractDeclarator (
++FuncDecr (directAbstractDeclarator,nil))
++ in ( LrTable.NT 15, ( result, directAbstractDeclarator1left, 
++RPAREN1right), rest671)
++end
++|  ( 234, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( 
++MlyValue.parameterTypeList parameterTypeList, _, _)) :: _ :: ( _, ( 
++MlyValue.directAbstractDeclarator directAbstractDeclarator, 
++directAbstractDeclarator1left, _)) :: rest671)) => let val  result = 
++MlyValue.directAbstractDeclarator (
++FuncDecr (directAbstractDeclarator, parameterTypeList))
++ in ( LrTable.NT 15, ( result, directAbstractDeclarator1left, 
++RPAREN1right), rest671)
++end
++|  ( 235, ( ( _, ( MlyValue.parameterList parameterList, 
++parameterList1left, parameterList1right)) :: rest671)) => let val  
++result = MlyValue.parameterTypeList (seqToList parameterList)
++ in ( LrTable.NT 52, ( result, parameterList1left, parameterList1right
++), rest671)
++end
++|  ( 236, ( ( _, ( _, _, ELIPSIS1right)) :: _ :: ( _, ( 
++MlyValue.parameterList parameterList, parameterList1left, _)) :: 
++rest671)) => let val  result = MlyValue.parameterTypeList (
++let val decltype = {specifiers=[Ellipses],qualifiers=[],storage=[]}
++	        		 in (seqToList parameterList) @ [(decltype, EllipsesDecr)] end
++)
++ in ( LrTable.NT 52, ( result, parameterList1left, ELIPSIS1right), 
++rest671)
++end
++|  ( 237, ( ( _, ( MlyValue.parameterDeclaration parameterDeclaration,
++ (parameterDeclarationleft as parameterDeclaration1left), (
++parameterDeclarationright as parameterDeclaration1right))) :: rest671)
++) => let val  result = MlyValue.parameterList (
++singletonSeq(#1 parameterDeclaration,
++                                              markDeclarator srcMap (#2 parameterDeclaration,
++							             parameterDeclarationleft,
++								     parameterDeclarationright))
++)
++ in ( LrTable.NT 51, ( result, parameterDeclaration1left, 
++parameterDeclaration1right), rest671)
++end
++|  ( 238, ( ( _, ( MlyValue.parameterDeclaration parameterDeclaration,
++ parameterDeclarationleft, (parameterDeclarationright as 
++parameterDeclaration1right))) :: _ :: ( _, ( MlyValue.parameterList 
++parameterList, parameterList1left, _)) :: rest671)) => let val  result
++ = MlyValue.parameterList (
++addToSeq((#1 parameterDeclaration,
++	                                           markDeclarator
++	                                            srcMap 
++                                                     (#2 parameterDeclaration,
++						      parameterDeclarationleft,
++						      parameterDeclarationright)),
++					  parameterList)
++)
++ in ( LrTable.NT 51, ( result, parameterList1left, 
++parameterDeclaration1right), rest671)
++end
++|  ( 239, ( ( _, ( MlyValue.notypeDeclarator notypeDeclarator, _, 
++notypeDeclarator1right)) :: ( _, ( MlyValue.declarationSpecifiers 
++declarationSpecifiers, declarationSpecifiers1left, _)) :: rest671)) =>
++ let val  result = MlyValue.parameterDeclaration (
++(declarationSpecifiers, notypeDeclarator))
++ in ( LrTable.NT 53, ( result, declarationSpecifiers1left, 
++notypeDeclarator1right), rest671)
++end
++|  ( 240, ( ( _, ( MlyValue.parmDeclarator parmDeclarator, _, 
++parmDeclarator1right)) :: ( _, ( MlyValue.declarationSpecifiers 
++declarationSpecifiers, declarationSpecifiers1left, _)) :: rest671)) =>
++ let val  result = MlyValue.parameterDeclaration (
++(declarationSpecifiers, parmDeclarator))
++ in ( LrTable.NT 53, ( result, declarationSpecifiers1left, 
++parmDeclarator1right), rest671)
++end
++|  ( 241, ( ( _, ( MlyValue.declarationSpecifiers 
++declarationSpecifiers, declarationSpecifiers1left, 
++declarationSpecifiers1right)) :: rest671)) => let val  result = 
++MlyValue.parameterDeclaration ((declarationSpecifiers, EmptyDecr))
++ in ( LrTable.NT 53, ( result, declarationSpecifiers1left, 
++declarationSpecifiers1right), rest671)
++end
++|  ( 242, ( ( _, ( MlyValue.abstractDeclarator abstractDeclarator, _, 
++abstractDeclarator1right)) :: ( _, ( MlyValue.declarationSpecifiers 
++declarationSpecifiers, declarationSpecifiers1left, _)) :: rest671)) =>
++ let val  result = MlyValue.parameterDeclaration (
++(declarationSpecifiers, abstractDeclarator))
++ in ( LrTable.NT 53, ( result, declarationSpecifiers1left, 
++abstractDeclarator1right), rest671)
++end
++|  ( 243, ( ( _, ( MlyValue.notypeDeclarator notypeDeclarator, _, 
++notypeDeclarator1right)) :: ( _, ( MlyValue.declarationModifiers 
++declarationModifiers, declarationModifiers1left, _)) :: rest671)) =>
++ let val  result = MlyValue.parameterDeclaration (
++(declarationModifiers, notypeDeclarator))
++ in ( LrTable.NT 53, ( result, declarationModifiers1left, 
++notypeDeclarator1right), rest671)
++end
++|  ( 244, ( ( _, ( MlyValue.abstractDeclarator abstractDeclarator, _, 
++abstractDeclarator1right)) :: ( _, ( MlyValue.declarationModifiers 
++declarationModifiers, declarationModifiers1left, _)) :: rest671)) =>
++ let val  result = MlyValue.parameterDeclaration (
++(declarationModifiers, abstractDeclarator))
++ in ( LrTable.NT 53, ( result, declarationModifiers1left, 
++abstractDeclarator1right), rest671)
++end
++|  ( 245, ( rest671)) => let val  result = MlyValue.pushScope (
++TypeDefs.pushScope())
++ in ( LrTable.NT 61, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 246, ( rest671)) => let val  result = MlyValue.popScope (
++TypeDefs.popScope())
++ in ( LrTable.NT 62, ( result, defaultPos, defaultPos), rest671)
++end
++| _ => raise (mlyAction i392)
++end
++val void = MlyValue.VOID'
++val extract = fn a => (fn MlyValue.translationUnit x => x
++| _ => let exception ParseInternal
++	in raise ParseInternal end) a 
++end
++end
++structure Tokens : C_TOKENS =
++struct
++type svalue = ParserData.svalue
++type ('a,'b) token = ('a,'b) Token.token
++fun EOF (p1,p2) = Token.TOKEN (ParserData.LrTable.T 0,(
++ParserData.MlyValue.VOID',p1,p2))
++fun COLON (p1,p2) = Token.TOKEN (ParserData.LrTable.T 1,(
++ParserData.MlyValue.VOID',p1,p2))
++fun SEMICOLON (p1,p2) = Token.TOKEN (ParserData.LrTable.T 2,(
++ParserData.MlyValue.VOID',p1,p2))
++fun LPAREN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 3,(
++ParserData.MlyValue.VOID',p1,p2))
++fun RPAREN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 4,(
++ParserData.MlyValue.VOID',p1,p2))
++fun LCURLY (p1,p2) = Token.TOKEN (ParserData.LrTable.T 5,(
++ParserData.MlyValue.VOID',p1,p2))
++fun RCURLY (p1,p2) = Token.TOKEN (ParserData.LrTable.T 6,(
++ParserData.MlyValue.VOID',p1,p2))
++fun LBRACE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 7,(
++ParserData.MlyValue.VOID',p1,p2))
++fun RBRACE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 8,(
++ParserData.MlyValue.VOID',p1,p2))
++fun DOT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 9,(
++ParserData.MlyValue.VOID',p1,p2))
++fun COMMA (p1,p2) = Token.TOKEN (ParserData.LrTable.T 10,(
++ParserData.MlyValue.VOID',p1,p2))
++fun QUESTION (p1,p2) = Token.TOKEN (ParserData.LrTable.T 11,(
++ParserData.MlyValue.VOID',p1,p2))
++fun PERCENT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 12,(
++ParserData.MlyValue.VOID',p1,p2))
++fun AMP (p1,p2) = Token.TOKEN (ParserData.LrTable.T 13,(
++ParserData.MlyValue.VOID',p1,p2))
++fun BAR (p1,p2) = Token.TOKEN (ParserData.LrTable.T 14,(
++ParserData.MlyValue.VOID',p1,p2))
++fun TILDE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 15,(
++ParserData.MlyValue.VOID',p1,p2))
++fun DIVIDE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 16,(
++ParserData.MlyValue.VOID',p1,p2))
++fun PLUS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 17,(
++ParserData.MlyValue.VOID',p1,p2))
++fun MINUS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 18,(
++ParserData.MlyValue.VOID',p1,p2))
++fun HAT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 19,(
++ParserData.MlyValue.VOID',p1,p2))
++fun BANG (p1,p2) = Token.TOKEN (ParserData.LrTable.T 20,(
++ParserData.MlyValue.VOID',p1,p2))
++fun TIMES (p1,p2) = Token.TOKEN (ParserData.LrTable.T 21,(
++ParserData.MlyValue.VOID',p1,p2))
++fun INC (p1,p2) = Token.TOKEN (ParserData.LrTable.T 22,(
++ParserData.MlyValue.VOID',p1,p2))
++fun DEC (p1,p2) = Token.TOKEN (ParserData.LrTable.T 23,(
++ParserData.MlyValue.VOID',p1,p2))
++fun ARROW (p1,p2) = Token.TOKEN (ParserData.LrTable.T 24,(
++ParserData.MlyValue.VOID',p1,p2))
++fun ID (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 25,(
++ParserData.MlyValue.ID i,p1,p2))
++fun EQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 26,(
++ParserData.MlyValue.VOID',p1,p2))
++fun PLUSEQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 27,(
++ParserData.MlyValue.VOID',p1,p2))
++fun MINUSEQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 28,(
++ParserData.MlyValue.VOID',p1,p2))
++fun XOREQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 29,(
++ParserData.MlyValue.VOID',p1,p2))
++fun MODEQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 30,(
++ParserData.MlyValue.VOID',p1,p2))
++fun TIMESEQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 31,(
++ParserData.MlyValue.VOID',p1,p2))
++fun DIVEQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 32,(
++ParserData.MlyValue.VOID',p1,p2))
++fun OREQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 33,(
++ParserData.MlyValue.VOID',p1,p2))
++fun ANDEQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 34,(
++ParserData.MlyValue.VOID',p1,p2))
++fun LSHIFTEQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 35,(
++ParserData.MlyValue.VOID',p1,p2))
++fun RSHIFTEQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 36,(
++ParserData.MlyValue.VOID',p1,p2))
++fun LTE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 37,(
++ParserData.MlyValue.VOID',p1,p2))
++fun GTE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 38,(
++ParserData.MlyValue.VOID',p1,p2))
++fun LT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 39,(
++ParserData.MlyValue.VOID',p1,p2))
++fun GT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 40,(
++ParserData.MlyValue.VOID',p1,p2))
++fun EQ (p1,p2) = Token.TOKEN (ParserData.LrTable.T 41,(
++ParserData.MlyValue.VOID',p1,p2))
++fun NEQ (p1,p2) = Token.TOKEN (ParserData.LrTable.T 42,(
++ParserData.MlyValue.VOID',p1,p2))
++fun OR (p1,p2) = Token.TOKEN (ParserData.LrTable.T 43,(
++ParserData.MlyValue.VOID',p1,p2))
++fun AND (p1,p2) = Token.TOKEN (ParserData.LrTable.T 44,(
++ParserData.MlyValue.VOID',p1,p2))
++fun LSHIFT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 45,(
++ParserData.MlyValue.VOID',p1,p2))
++fun RSHIFT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 46,(
++ParserData.MlyValue.VOID',p1,p2))
++fun DECNUM (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 47,(
++ParserData.MlyValue.DECNUM i,p1,p2))
++fun REALNUM (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 48,(
++ParserData.MlyValue.REALNUM i,p1,p2))
++fun STRING (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 49,(
++ParserData.MlyValue.STRING i,p1,p2))
++fun CCONST (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 50,(
++ParserData.MlyValue.CCONST i,p1,p2))
++fun EXTERN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 51,(
++ParserData.MlyValue.VOID',p1,p2))
++fun AUTO (p1,p2) = Token.TOKEN (ParserData.LrTable.T 52,(
++ParserData.MlyValue.VOID',p1,p2))
++fun STATIC (p1,p2) = Token.TOKEN (ParserData.LrTable.T 53,(
++ParserData.MlyValue.VOID',p1,p2))
++fun REGISTER (p1,p2) = Token.TOKEN (ParserData.LrTable.T 54,(
++ParserData.MlyValue.VOID',p1,p2))
++fun CONST (p1,p2) = Token.TOKEN (ParserData.LrTable.T 55,(
++ParserData.MlyValue.VOID',p1,p2))
++fun VOLATILE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 56,(
++ParserData.MlyValue.VOID',p1,p2))
++fun IF (p1,p2) = Token.TOKEN (ParserData.LrTable.T 57,(
++ParserData.MlyValue.VOID',p1,p2))
++fun THEN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 58,(
++ParserData.MlyValue.VOID',p1,p2))
++fun ELSE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 59,(
++ParserData.MlyValue.VOID',p1,p2))
++fun FOR (p1,p2) = Token.TOKEN (ParserData.LrTable.T 60,(
++ParserData.MlyValue.VOID',p1,p2))
++fun DO (p1,p2) = Token.TOKEN (ParserData.LrTable.T 61,(
++ParserData.MlyValue.VOID',p1,p2))
++fun SWITCH (p1,p2) = Token.TOKEN (ParserData.LrTable.T 62,(
++ParserData.MlyValue.VOID',p1,p2))
++fun CASE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 63,(
++ParserData.MlyValue.VOID',p1,p2))
++fun DEFAULT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 64,(
++ParserData.MlyValue.VOID',p1,p2))
++fun WHILE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 65,(
++ParserData.MlyValue.VOID',p1,p2))
++fun RETURN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 66,(
++ParserData.MlyValue.VOID',p1,p2))
++fun BREAK (p1,p2) = Token.TOKEN (ParserData.LrTable.T 67,(
++ParserData.MlyValue.VOID',p1,p2))
++fun CONTINUE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 68,(
++ParserData.MlyValue.VOID',p1,p2))
++fun GOTO (p1,p2) = Token.TOKEN (ParserData.LrTable.T 69,(
++ParserData.MlyValue.VOID',p1,p2))
++fun CHAR (p1,p2) = Token.TOKEN (ParserData.LrTable.T 70,(
++ParserData.MlyValue.VOID',p1,p2))
++fun DOUBLE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 71,(
++ParserData.MlyValue.VOID',p1,p2))
++fun ENUM (p1,p2) = Token.TOKEN (ParserData.LrTable.T 72,(
++ParserData.MlyValue.VOID',p1,p2))
++fun FLOAT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 73,(
++ParserData.MlyValue.VOID',p1,p2))
++fun INT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 74,(
++ParserData.MlyValue.VOID',p1,p2))
++fun LONG (p1,p2) = Token.TOKEN (ParserData.LrTable.T 75,(
++ParserData.MlyValue.VOID',p1,p2))
++fun SHORT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 76,(
++ParserData.MlyValue.VOID',p1,p2))
++fun FRACTIONAL (p1,p2) = Token.TOKEN (ParserData.LrTable.T 77,(
++ParserData.MlyValue.VOID',p1,p2))
++fun SATURATE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 78,(
++ParserData.MlyValue.VOID',p1,p2))
++fun STRUCT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 79,(
++ParserData.MlyValue.VOID',p1,p2))
++fun UNION (p1,p2) = Token.TOKEN (ParserData.LrTable.T 80,(
++ParserData.MlyValue.VOID',p1,p2))
++fun UNSIGNED (p1,p2) = Token.TOKEN (ParserData.LrTable.T 81,(
++ParserData.MlyValue.VOID',p1,p2))
++fun SIGNED (p1,p2) = Token.TOKEN (ParserData.LrTable.T 82,(
++ParserData.MlyValue.VOID',p1,p2))
++fun VOID (p1,p2) = Token.TOKEN (ParserData.LrTable.T 83,(
++ParserData.MlyValue.VOID',p1,p2))
++fun SIZEOF (p1,p2) = Token.TOKEN (ParserData.LrTable.T 84,(
++ParserData.MlyValue.VOID',p1,p2))
++fun TYPEDEF (p1,p2) = Token.TOKEN (ParserData.LrTable.T 85,(
++ParserData.MlyValue.VOID',p1,p2))
++fun UNARY (p1,p2) = Token.TOKEN (ParserData.LrTable.T 86,(
++ParserData.MlyValue.VOID',p1,p2))
++fun ELIPSIS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 87,(
++ParserData.MlyValue.VOID',p1,p2))
++fun TYPE_NAME (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 88,(
++ParserData.MlyValue.TYPE_NAME i,p1,p2))
++end
++end
+diff -Naur ckit/src/parser/grammar/c.grm.sml.orig ckit-mlton/src/parser/grammar/c.grm.sml.orig
+--- ckit/src/parser/grammar/c.grm.sml.orig	1969-12-31 19:00:00.000000000 -0500
++++ ckit-mlton/src/parser/grammar/c.grm.sml.orig	2004-10-26 12:09:49.000000000 -0400
+@@ -0,0 +1,3491 @@
++functor LrValsFun(structure Token : TOKEN 
++			    ) = 
++struct
++structure ParserData=
++struct
++structure Header = 
++struct
++(* DO NOT CHANGE THIS FILE -- this file was generated from cd.grm *)
++
++(* Copyright (c) 1998 by Lucent Technologies *)
++
++(* new comments from Satish Chandra, 6/21/99 *)
++(* Overriding design approach: 
++ *
++ * Accept all legal programs, but possibly some illegal ones at this stage. 
++ * Do not attempt to make a really tight grammar. Our tools are supposed to
++ * work on "correct" C programs (i.e. those that cc -ansi would compile without
++ * warnings). Of course, a type checker on the parse tree can report some errors
++ * as syntax errors.
++ *
++ * Note on MARK:
++ *
++ * externalDecl, statement, and expression are the non-terms that are marked.
++ * Compound statements are not separately marked.
++ * declarations eventually become either a statement or a externalDecl
++ *   if they are outside any function. They are marked accordingly.
++ *
++ * Note on function definitions:
++ *
++ * The order of the paramaters will always come from the FuncDecr.
++ * The types of the parameter may come from the second declaration list  
++ * (in K&R style)
++ *
++ * Note on the structure of the grammar:
++ *
++ * It is difficult to write a LALR(1) grammar based on the grammar given at
++ * the back of the K&R book. The basic difficulty is that both TYPE_NAME and
++ * ID are tokens that are strings, but it depends on the context whether
++ * a given string is to be treated as an ID or a TYPE_NAME.
++ * We have borrowed the solution used in GCC's parser specification. In this
++ * scheme, the lexer always return the token TYPE_NAME if a name has been 
++ * defined as a type name (via a typedef) in an applicable scope. The grammar 
++ * productions are heavily rearranged (from K&R's grammar) to do the right 
++ * thing. In this rearrangement, the basic idea is that a TYPE_NAME is  
++ * allowed to appear in a declaration as a plain identifier only after a type 
++ * specifier has previously appeared in the declaration. Also, a TYPE_NAME may 
++ * appear only once in a declaration as a type specifier.
++ *)
++
++(* old comments below *)
++(* Shortcomings *)
++(* 1. No floating-point whatsoever *)
++
++(* Notes on MARK:
++ * externalDecl and statement are the non-terms that are marked.
++ * Compound statements are not separately marked.
++ * expressions are not marked at all.
++ * declarations eventually become either a statement or a externalDecl
++ *   if they are outside any function. they are marked accordingly.
++ *)
++ 
++(* Overriding theme: accept all legal programs, but also some illegal ones at this
++ * stage. Do not attempt to make a really tight grammar. Our tools are supposed to
++ * work on "correct" C programs (i.e. those that cc -ansi would compile without
++ * warnings). Of course, a type checker on the parse tree can report some errors
++ * as syntax errors.
++ *)
++
++(* About function definitions:
++ * The order of the paramaters will always come from the FuncDecr thing 
++ * The types of the parameter may come from the second declaration list  (in K&R style)
++ *)
++
++open ParseTree (* PortingHelp *)
++
++fun markExternalDecl srcMap (d,left,right) = 
++    MARKexternalDecl(SourceMap.location srcMap (left,right), d)
++
++fun markDeclaration srcMap (d,left,right) = 
++    MARKdeclaration(SourceMap.location srcMap (left,right), d)
++
++fun markDeclarator srcMap (d,left,right) = 
++    MARKdeclarator(SourceMap.location srcMap (left,right), d)
++
++fun markStatement srcMap (s,left,right) = 
++    MARKstatement(SourceMap.location srcMap (left, right), s)
++
++fun markExpression srcMap (s,left,right) = 
++    MARKexpression(SourceMap.location srcMap (left, right), s)
++
++val unknown = {storage=[],qualifiers=[],specifiers=[]}:decltype
++
++(* this code duplicated in BuildAst in function processDeclarator *)
++fun ctypeDecrToTypeName (typ as {qualifiers, specifiers},decr) =
++      let fun mkTyp spc = {qualifiers=[], specifiers=[spc]}
++	  fun addQual q = {qualifiers=q::qualifiers, specifiers=specifiers}
++       in case decr
++	    of VarDecr x => (typ,SOME x)
++	     | PointerDecr x =>
++		ctypeDecrToTypeName (mkTyp (Pointer typ),x)
++	     | ArrayDecr (x,sz) =>
++		ctypeDecrToTypeName (mkTyp (Array (sz,typ)),x)
++	     | FuncDecr (x,lst) =>
++		ctypeDecrToTypeName (mkTyp (Function{retType=typ,params=lst}),x)
++	     | QualDecr (q,decr) =>
++		ctypeDecrToTypeName (addQual q, decr)
++	     | EmptyDecr => (typ, NONE)
++	     | EllipsesDecr => (mkTyp Ellipses, SOME("**ellipses**"))
++	     | DecrExt _ => (typ, NONE)  (* should call decr extension? *)
++	     | MARKdeclarator(loc, decr) => ctypeDecrToTypeName(typ, decr)
++      end
++
++fun dclr2str dcl = 
++  (case ctypeDecrToTypeName ({qualifiers=[],specifiers=[]}, dcl)
++     of (_,SOME s) => s
++      | (_,NONE) => "")
++
++fun combineDecltypes ( {qualifiers=q1,storage=st1,specifiers=sp1}
++	           , {qualifiers=q2,storage=st2,specifiers=sp2}
++	           ) =
++  {qualifiers=q1@q2,storage=st1@st2,specifiers=sp1@sp2}  (* @ ok *)
++
++fun applyPointer (PointerDecr x,rest) = PointerDecr (applyPointer (x,rest))
++  | applyPointer (QualDecr (q,x),rest) = QualDecr (q, applyPointer (x,rest))
++  | applyPointer (EmptyDecr, rest) = rest
++  | applyPointer (_, rest) = rest  
++    (* NCH/DBM[6/14/99]: this case can never occur  *)
++
++fun addStorage(st, {qualifiers,storage,specifiers}) =
++        {qualifiers=qualifiers,storage=st::storage,specifiers=specifiers}
++
++fun addQualifiers(qs, {qualifiers,storage,specifiers}) =
++	{qualifiers=qs@qualifiers,storage=storage,specifiers=specifiers} (* @ ok *)
++
++fun addQualifier(q, {qualifiers,storage,specifiers}) =
++	{qualifiers=q::qualifiers,storage=storage,specifiers=specifiers}
++
++fun addSpecifier(sp, {qualifiers,storage,specifiers}) =
++	{qualifiers=qualifiers,storage=storage,specifiers=sp::specifiers}
++
++val addAll = combineDecltypes
++
++fun loopQd (q::rst, acc) = loopQd(rst, QualDecr(q, acc))
++  | loopQd (nil, acc) = acc
++
++fun mkCtype typ = typ
++
++(* DBM: major kludge, using TYPEDEF as storage class *)
++fun insertDeclNames ({storage,...}: decltype, idl) =
++    case storage
++      of [TYPEDEF] =>  List.app (fn x as (dcl,_) => TypeDefs.addTdef (dclr2str dcl)) idl
++       | _ => List.app (fn x as (dcl,_) => TypeDefs.addNoTdef (dclr2str dcl)) idl
++
++fun insertFuncName dcl =
++  let
++    val name = dclr2str dcl
++  in
++    TypeDefs.addNoTdef name
++  end
++
++fun insertFuncParams (FuncDecr (_,params)) : unit = 
++     let
++       fun getName (ct, dclr) = dclr2str dclr
++       val names = map getName params
++     in
++       List.app TypeDefs.addNoTdef names
++     end
++  | insertFuncParams (ArrayDecr(dcl,_)) = insertFuncParams dcl
++  | insertFuncParams (PointerDecr dcl) = insertFuncParams dcl
++  | insertFuncParams _ = ()  (* this is actually an error, but it will be caught in
++		              * BuildAst when processing a PT.FunctionDef *)
++
++abstype 'a seq = SEQ of 'a list
++with val emptySeq = SEQ nil
++     fun singletonSeq x = SEQ[x]
++     fun addToSeq(x, SEQ yl) = SEQ(x :: yl)  (* add to end of sequence! *)
++  (* fun addListToEnd(xl, yl) = SEQ((List.rev xl) @ yl) *)
++     fun addOptToEnd(NONE, yl) = yl
++       | addOptToEnd(SOME x, SEQ yl) = SEQ(x :: yl)
++     fun seqToList(SEQ yl) = List.rev yl
++end
++
++
++end
++structure LrTable = Token.LrTable
++structure Token = Token
++local open LrTable in 
++val table=let val actionRows =
++"\
++\\001\000\001\000\000\000\000\000\
++\\001\000\002\000\169\000\004\000\070\000\022\000\042\000\026\000\041\000\
++\\089\000\069\000\000\000\
++\\001\000\002\000\174\000\004\000\043\000\022\000\042\000\026\000\041\000\
++\\071\000\034\000\072\000\033\000\073\000\032\000\074\000\031\000\
++\\075\000\030\000\076\000\029\000\077\000\028\000\080\000\027\000\
++\\081\000\026\000\082\000\025\000\083\000\024\000\084\000\023\000\
++\\089\000\021\000\000\000\
++\\001\000\002\000\226\000\000\000\
++\\001\000\002\000\075\001\011\000\178\000\000\000\
++\\001\000\002\000\115\001\011\000\178\000\000\000\
++\\001\000\003\000\083\002\006\000\130\002\011\000\083\002\027\000\139\000\
++\\052\000\130\002\053\000\130\002\054\000\130\002\055\000\130\002\
++\\056\000\130\002\057\000\130\002\071\000\130\002\072\000\130\002\
++\\073\000\130\002\074\000\130\002\075\000\130\002\076\000\130\002\
++\\077\000\130\002\080\000\130\002\081\000\130\002\082\000\130\002\
++\\083\000\130\002\084\000\130\002\086\000\130\002\089\000\130\002\000\000\
++\\001\000\003\000\087\002\006\000\131\002\011\000\087\002\027\000\135\000\
++\\052\000\131\002\053\000\131\002\054\000\131\002\055\000\131\002\
++\\056\000\131\002\057\000\131\002\071\000\131\002\072\000\131\002\
++\\073\000\131\002\074\000\131\002\075\000\131\002\076\000\131\002\
++\\077\000\131\002\080\000\131\002\081\000\131\002\082\000\131\002\
++\\083\000\131\002\084\000\131\002\086\000\131\002\089\000\131\002\000\000\
++\\001\000\003\000\048\000\000\000\
++\\001\000\003\000\127\000\004\000\126\000\006\000\054\000\007\000\194\001\
++\\014\000\125\000\016\000\124\000\018\000\123\000\019\000\122\000\
++\\021\000\121\000\022\000\120\000\023\000\119\000\024\000\118\000\
++\\026\000\117\000\048\000\116\000\049\000\115\000\050\000\114\000\
++\\051\000\113\000\052\000\156\002\053\000\156\002\054\000\156\002\
++\\055\000\156\002\056\000\156\002\057\000\156\002\058\000\112\000\
++\\061\000\111\000\062\000\110\000\063\000\109\000\064\000\108\000\
++\\065\000\107\000\066\000\106\000\067\000\105\000\068\000\104\000\
++\\069\000\103\000\070\000\102\000\071\000\156\002\072\000\156\002\
++\\073\000\156\002\074\000\156\002\075\000\156\002\076\000\156\002\
++\\077\000\156\002\080\000\156\002\081\000\156\002\082\000\156\002\
++\\083\000\156\002\084\000\156\002\085\000\101\000\086\000\156\002\
++\\089\000\156\002\000\000\
++\\001\000\003\000\127\000\004\000\126\000\006\000\054\000\014\000\125\000\
++\\016\000\124\000\018\000\123\000\019\000\122\000\021\000\121\000\
++\\022\000\120\000\023\000\119\000\024\000\118\000\026\000\117\000\
++\\048\000\116\000\049\000\115\000\050\000\114\000\051\000\113\000\
++\\058\000\112\000\061\000\111\000\062\000\110\000\063\000\109\000\
++\\064\000\108\000\065\000\107\000\066\000\106\000\067\000\105\000\
++\\068\000\104\000\069\000\103\000\070\000\102\000\085\000\101\000\000\000\
++\\001\000\003\000\179\000\011\000\178\000\000\000\
++\\001\000\003\000\221\000\000\000\
++\\001\000\003\000\222\000\000\000\
++\\001\000\003\000\021\001\011\000\020\001\000\000\
++\\001\000\003\000\025\001\011\000\024\001\000\000\
++\\001\000\003\000\071\001\000\000\
++\\001\000\003\000\072\001\000\000\
++\\001\000\003\000\124\001\000\000\
++\\001\000\003\000\159\001\000\000\
++\\001\000\003\000\161\001\000\000\
++\\001\000\004\000\043\000\022\000\042\000\026\000\041\000\000\000\
++\\001\000\004\000\043\000\022\000\042\000\026\000\041\000\052\000\040\000\
++\\053\000\039\000\054\000\038\000\055\000\037\000\056\000\036\000\
++\\057\000\035\000\071\000\034\000\072\000\033\000\073\000\032\000\
++\\074\000\031\000\075\000\030\000\076\000\029\000\077\000\028\000\
++\\080\000\027\000\081\000\026\000\082\000\025\000\083\000\024\000\
++\\084\000\023\000\086\000\022\000\089\000\021\000\000\000\
++\\001\000\004\000\043\000\026\000\041\000\000\000\
++\\001\000\004\000\070\000\022\000\042\000\026\000\041\000\089\000\069\000\000\000\
++\\001\000\004\000\070\000\026\000\041\000\089\000\069\000\000\000\
++\\001\000\004\000\126\000\005\000\069\001\014\000\125\000\016\000\124\000\
++\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
++\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
++\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\001\000\004\000\126\000\006\000\242\000\014\000\125\000\016\000\124\000\
++\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
++\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
++\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\001\000\004\000\126\000\009\000\145\000\014\000\125\000\016\000\124\000\
++\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
++\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
++\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\001\000\004\000\126\000\009\000\245\000\014\000\125\000\016\000\124\000\
++\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
++\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
++\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\001\000\004\000\126\000\009\000\098\001\014\000\125\000\016\000\124\000\
++\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
++\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
++\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\001\000\004\000\126\000\009\000\130\001\014\000\125\000\016\000\124\000\
++\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
++\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
++\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\001\000\004\000\126\000\009\000\137\001\014\000\125\000\016\000\124\000\
++\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
++\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
++\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\001\000\004\000\126\000\014\000\125\000\016\000\124\000\018\000\123\000\
++\\019\000\122\000\021\000\121\000\022\000\120\000\023\000\119\000\
++\\024\000\118\000\026\000\144\000\048\000\116\000\049\000\115\000\
++\\050\000\114\000\051\000\113\000\056\000\036\000\057\000\035\000\
++\\071\000\034\000\072\000\033\000\073\000\032\000\074\000\031\000\
++\\075\000\030\000\076\000\029\000\077\000\028\000\080\000\027\000\
++\\081\000\026\000\082\000\025\000\083\000\024\000\084\000\023\000\
++\\085\000\101\000\089\000\021\000\000\000\
++\\001\000\004\000\126\000\014\000\125\000\016\000\124\000\018\000\123\000\
++\\019\000\122\000\021\000\121\000\022\000\120\000\023\000\119\000\
++\\024\000\118\000\026\000\144\000\048\000\116\000\049\000\115\000\
++\\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\001\000\004\000\215\000\008\000\214\000\009\000\252\000\010\000\213\000\
++\\012\000\212\000\013\000\211\000\014\000\210\000\015\000\209\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\020\000\205\000\
++\\022\000\204\000\023\000\203\000\024\000\202\000\025\000\201\000\
++\\027\000\200\000\028\000\199\000\029\000\198\000\030\000\197\000\
++\\031\000\196\000\032\000\195\000\033\000\194\000\034\000\193\000\
++\\035\000\192\000\036\000\191\000\037\000\190\000\038\000\189\000\
++\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
++\\043\000\184\000\044\000\183\000\045\000\182\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\001\000\004\000\215\000\008\000\214\000\009\000\088\001\010\000\213\000\
++\\012\000\212\000\013\000\211\000\014\000\210\000\015\000\209\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\020\000\205\000\
++\\022\000\204\000\023\000\203\000\024\000\202\000\025\000\201\000\
++\\027\000\200\000\028\000\199\000\029\000\198\000\030\000\197\000\
++\\031\000\196\000\032\000\195\000\033\000\194\000\034\000\193\000\
++\\035\000\192\000\036\000\191\000\037\000\190\000\038\000\189\000\
++\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
++\\043\000\184\000\044\000\183\000\045\000\182\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\001\000\004\000\215\000\008\000\214\000\009\000\133\001\010\000\213\000\
++\\012\000\212\000\013\000\211\000\014\000\210\000\015\000\209\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\020\000\205\000\
++\\022\000\204\000\023\000\203\000\024\000\202\000\025\000\201\000\
++\\027\000\200\000\028\000\199\000\029\000\198\000\030\000\197\000\
++\\031\000\196\000\032\000\195\000\033\000\194\000\034\000\193\000\
++\\035\000\192\000\036\000\191\000\037\000\190\000\038\000\189\000\
++\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
++\\043\000\184\000\044\000\183\000\045\000\182\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\001\000\004\000\215\000\008\000\214\000\009\000\153\001\010\000\213\000\
++\\012\000\212\000\013\000\211\000\014\000\210\000\015\000\209\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\020\000\205\000\
++\\022\000\204\000\023\000\203\000\024\000\202\000\025\000\201\000\
++\\027\000\200\000\028\000\199\000\029\000\198\000\030\000\197\000\
++\\031\000\196\000\032\000\195\000\033\000\194\000\034\000\193\000\
++\\035\000\192\000\036\000\191\000\037\000\190\000\038\000\189\000\
++\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
++\\043\000\184\000\044\000\183\000\045\000\182\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\001\000\004\000\215\000\008\000\214\000\009\000\155\001\010\000\213\000\
++\\012\000\212\000\013\000\211\000\014\000\210\000\015\000\209\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\020\000\205\000\
++\\022\000\204\000\023\000\203\000\024\000\202\000\025\000\201\000\
++\\027\000\200\000\028\000\199\000\029\000\198\000\030\000\197\000\
++\\031\000\196\000\032\000\195\000\033\000\194\000\034\000\193\000\
++\\035\000\192\000\036\000\191\000\037\000\190\000\038\000\189\000\
++\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
++\\043\000\184\000\044\000\183\000\045\000\182\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\001\000\004\000\219\000\014\000\125\000\016\000\124\000\018\000\123\000\
++\\019\000\122\000\021\000\121\000\022\000\120\000\023\000\119\000\
++\\024\000\118\000\026\000\144\000\048\000\116\000\049\000\115\000\
++\\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\001\000\004\000\225\000\000\000\
++\\001\000\004\000\228\000\000\000\
++\\001\000\004\000\230\000\000\000\
++\\001\000\004\000\231\000\000\000\
++\\001\000\004\000\006\001\005\000\101\001\008\000\005\001\022\000\042\000\
++\\026\000\041\000\052\000\040\000\053\000\039\000\054\000\038\000\
++\\055\000\037\000\056\000\036\000\057\000\035\000\071\000\034\000\
++\\072\000\033\000\073\000\032\000\074\000\031\000\075\000\030\000\
++\\076\000\029\000\077\000\028\000\080\000\027\000\081\000\026\000\
++\\082\000\025\000\083\000\024\000\084\000\023\000\086\000\022\000\
++\\089\000\021\000\000\000\
++\\001\000\004\000\006\001\008\000\005\001\022\000\042\000\026\000\041\000\
++\\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
++\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
++\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
++\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
++\\083\000\024\000\084\000\023\000\086\000\022\000\089\000\021\000\000\000\
++\\001\000\004\000\083\001\005\000\101\001\008\000\005\001\022\000\042\000\
++\\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
++\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
++\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
++\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
++\\083\000\024\000\084\000\023\000\086\000\022\000\089\000\021\000\000\000\
++\\001\000\004\000\123\001\000\000\
++\\001\000\005\000\153\000\026\000\152\000\052\000\040\000\053\000\039\000\
++\\054\000\038\000\055\000\037\000\056\000\036\000\057\000\035\000\
++\\071\000\034\000\072\000\033\000\073\000\032\000\074\000\031\000\
++\\075\000\030\000\076\000\029\000\077\000\028\000\080\000\027\000\
++\\081\000\026\000\082\000\025\000\083\000\024\000\084\000\023\000\
++\\086\000\022\000\089\000\021\000\000\000\
++\\001\000\005\000\161\000\000\000\
++\\001\000\005\000\248\000\026\000\152\000\052\000\040\000\053\000\039\000\
++\\054\000\038\000\055\000\037\000\056\000\036\000\057\000\035\000\
++\\071\000\034\000\072\000\033\000\073\000\032\000\074\000\031\000\
++\\075\000\030\000\076\000\029\000\077\000\028\000\080\000\027\000\
++\\081\000\026\000\082\000\025\000\083\000\024\000\084\000\023\000\
++\\086\000\022\000\089\000\021\000\000\000\
++\\001\000\005\000\251\000\000\000\
++\\001\000\005\000\253\000\000\000\
++\\001\000\005\000\000\001\011\000\255\000\000\000\
++\\001\000\005\000\084\001\000\000\
++\\001\000\005\000\085\001\011\000\178\000\000\000\
++\\001\000\005\000\089\001\000\000\
++\\001\000\005\000\090\001\011\000\255\000\000\000\
++\\001\000\005\000\118\001\011\000\117\001\000\000\
++\\001\000\005\000\119\001\000\000\
++\\001\000\005\000\120\001\011\000\178\000\000\000\
++\\001\000\005\000\122\001\011\000\178\000\000\000\
++\\001\000\005\000\125\001\011\000\178\000\000\000\
++\\001\000\005\000\132\001\052\000\040\000\053\000\039\000\054\000\038\000\
++\\055\000\037\000\056\000\036\000\057\000\035\000\071\000\034\000\
++\\072\000\033\000\073\000\032\000\074\000\031\000\075\000\030\000\
++\\076\000\029\000\077\000\028\000\080\000\027\000\081\000\026\000\
++\\082\000\025\000\083\000\024\000\084\000\023\000\086\000\022\000\
++\\089\000\021\000\000\000\
++\\001\000\005\000\134\001\000\000\
++\\001\000\005\000\135\001\000\000\
++\\001\000\005\000\140\001\026\000\152\000\052\000\040\000\053\000\039\000\
++\\054\000\038\000\055\000\037\000\056\000\036\000\057\000\035\000\
++\\071\000\034\000\072\000\033\000\073\000\032\000\074\000\031\000\
++\\075\000\030\000\076\000\029\000\077\000\028\000\080\000\027\000\
++\\081\000\026\000\082\000\025\000\083\000\024\000\084\000\023\000\
++\\086\000\022\000\089\000\021\000\000\000\
++\\001\000\005\000\154\001\000\000\
++\\001\000\005\000\156\001\000\000\
++\\001\000\005\000\157\001\011\000\255\000\000\000\
++\\001\000\005\000\158\001\011\000\178\000\000\000\
++\\001\000\005\000\164\001\000\000\
++\\001\000\006\000\047\000\026\000\046\000\089\000\045\000\000\000\
++\\001\000\006\000\054\000\052\000\040\000\053\000\039\000\054\000\038\000\
++\\055\000\037\000\056\000\036\000\057\000\035\000\071\000\034\000\
++\\072\000\033\000\073\000\032\000\074\000\031\000\075\000\030\000\
++\\076\000\029\000\077\000\028\000\080\000\027\000\081\000\026\000\
++\\082\000\025\000\083\000\024\000\084\000\023\000\086\000\022\000\
++\\089\000\021\000\000\000\
++\\001\000\006\000\076\000\026\000\075\000\089\000\074\000\000\000\
++\\001\000\007\000\165\000\056\000\036\000\057\000\035\000\071\000\034\000\
++\\072\000\033\000\073\000\032\000\074\000\031\000\075\000\030\000\
++\\076\000\029\000\077\000\028\000\080\000\027\000\081\000\026\000\
++\\082\000\025\000\083\000\024\000\084\000\023\000\089\000\021\000\000\000\
++\\001\000\007\000\217\000\000\000\
++\\001\000\007\000\018\001\056\000\036\000\057\000\035\000\071\000\034\000\
++\\072\000\033\000\073\000\032\000\074\000\031\000\075\000\030\000\
++\\076\000\029\000\077\000\028\000\080\000\027\000\081\000\026\000\
++\\082\000\025\000\083\000\024\000\084\000\023\000\089\000\021\000\000\000\
++\\001\000\007\000\019\001\056\000\036\000\057\000\035\000\071\000\034\000\
++\\072\000\033\000\073\000\032\000\074\000\031\000\075\000\030\000\
++\\076\000\029\000\077\000\028\000\080\000\027\000\081\000\026\000\
++\\082\000\025\000\083\000\024\000\084\000\023\000\089\000\021\000\000\000\
++\\001\000\007\000\107\001\000\000\
++\\001\000\007\000\141\001\000\000\
++\\001\000\007\000\142\001\000\000\
++\\001\000\007\000\143\001\000\000\
++\\001\000\007\000\151\001\000\000\
++\\001\000\009\000\116\001\011\000\178\000\000\000\
++\\001\000\026\000\158\000\000\000\
++\\001\000\026\000\220\000\000\000\
++\\001\000\026\000\054\001\089\000\053\001\000\000\
++\\001\000\026\000\065\001\089\000\064\001\000\000\
++\\001\000\026\000\093\001\000\000\
++\\001\000\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
++\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
++\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
++\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
++\\083\000\024\000\084\000\023\000\086\000\022\000\088\000\092\001\
++\\089\000\021\000\000\000\
++\\001\000\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
++\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
++\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
++\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
++\\083\000\024\000\084\000\023\000\086\000\022\000\089\000\021\000\000\000\
++\\001\000\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
++\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
++\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
++\\083\000\024\000\084\000\023\000\089\000\021\000\000\000\
++\\001\000\066\000\077\001\000\000\
++\\001\000\071\000\034\000\072\000\033\000\073\000\032\000\074\000\031\000\
++\\075\000\030\000\076\000\029\000\077\000\028\000\080\000\027\000\
++\\081\000\026\000\082\000\025\000\083\000\024\000\084\000\023\000\
++\\089\000\021\000\000\000\
++\\167\001\003\000\044\000\004\000\043\000\022\000\042\000\026\000\041\000\
++\\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
++\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
++\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
++\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
++\\083\000\024\000\084\000\023\000\086\000\022\000\089\000\021\000\000\000\
++\\168\001\000\000\
++\\169\001\000\000\
++\\170\001\000\000\
++\\171\001\000\000\
++\\172\001\000\000\
++\\173\001\000\000\
++\\174\001\000\000\
++\\175\001\000\000\
++\\176\001\000\000\
++\\177\001\000\000\
++\\178\001\000\000\
++\\179\001\000\000\
++\\180\001\000\000\
++\\181\001\000\000\
++\\182\001\000\000\
++\\183\001\000\000\
++\\184\001\000\000\
++\\185\001\060\000\160\001\000\000\
++\\186\001\000\000\
++\\187\001\000\000\
++\\188\001\000\000\
++\\189\001\000\000\
++\\190\001\004\000\070\000\022\000\042\000\026\000\041\000\089\000\069\000\000\000\
++\\191\001\011\000\141\000\000\000\
++\\192\001\011\000\136\000\000\000\
++\\193\001\003\000\127\000\004\000\126\000\006\000\054\000\014\000\125\000\
++\\016\000\124\000\018\000\123\000\019\000\122\000\021\000\121\000\
++\\022\000\120\000\023\000\119\000\024\000\118\000\026\000\117\000\
++\\048\000\116\000\049\000\115\000\050\000\114\000\051\000\113\000\
++\\058\000\112\000\061\000\111\000\062\000\110\000\063\000\109\000\
++\\064\000\108\000\065\000\107\000\066\000\106\000\067\000\105\000\
++\\068\000\104\000\069\000\103\000\070\000\102\000\085\000\101\000\000\000\
++\\194\001\003\000\127\000\004\000\126\000\006\000\054\000\014\000\125\000\
++\\016\000\124\000\018\000\123\000\019\000\122\000\021\000\121\000\
++\\022\000\120\000\023\000\119\000\024\000\118\000\026\000\117\000\
++\\048\000\116\000\049\000\115\000\050\000\114\000\051\000\113\000\
++\\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
++\\056\000\036\000\057\000\035\000\058\000\112\000\061\000\111\000\
++\\062\000\110\000\063\000\109\000\064\000\108\000\065\000\107\000\
++\\066\000\106\000\067\000\105\000\068\000\104\000\069\000\103\000\
++\\070\000\102\000\071\000\034\000\072\000\033\000\073\000\032\000\
++\\074\000\031\000\075\000\030\000\076\000\029\000\077\000\028\000\
++\\080\000\027\000\081\000\026\000\082\000\025\000\083\000\024\000\
++\\084\000\023\000\085\000\101\000\086\000\022\000\089\000\021\000\000\000\
++\\195\001\000\000\
++\\196\001\000\000\
++\\197\001\000\000\
++\\198\001\000\000\
++\\199\001\000\000\
++\\200\001\000\000\
++\\201\001\000\000\
++\\202\001\000\000\
++\\203\001\000\000\
++\\204\001\000\000\
++\\205\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\038\000\189\000\
++\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
++\\043\000\184\000\044\000\183\000\045\000\182\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\206\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\207\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\208\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\209\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\210\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\211\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\212\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\213\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\214\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\215\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\216\001\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\217\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\014\000\210\000\015\000\209\000\017\000\208\000\018\000\207\000\
++\\019\000\206\000\020\000\205\000\022\000\204\000\023\000\203\000\
++\\024\000\202\000\025\000\201\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\218\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\014\000\210\000\015\000\209\000\017\000\208\000\018\000\207\000\
++\\019\000\206\000\020\000\205\000\022\000\204\000\023\000\203\000\
++\\024\000\202\000\025\000\201\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\046\000\181\000\047\000\180\000\000\000\
++\\219\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\014\000\210\000\017\000\208\000\018\000\207\000\019\000\206\000\
++\\020\000\205\000\022\000\204\000\023\000\203\000\024\000\202\000\
++\\025\000\201\000\038\000\189\000\039\000\188\000\040\000\187\000\
++\\041\000\186\000\042\000\185\000\043\000\184\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\220\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\014\000\210\000\017\000\208\000\018\000\207\000\019\000\206\000\
++\\022\000\204\000\023\000\203\000\024\000\202\000\025\000\201\000\
++\\038\000\189\000\039\000\188\000\040\000\187\000\041\000\186\000\
++\\042\000\185\000\043\000\184\000\046\000\181\000\047\000\180\000\000\000\
++\\221\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\038\000\189\000\
++\\039\000\188\000\040\000\187\000\041\000\186\000\042\000\185\000\
++\\043\000\184\000\046\000\181\000\047\000\180\000\000\000\
++\\222\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\038\000\189\000\
++\\039\000\188\000\040\000\187\000\041\000\186\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\223\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\038\000\189\000\
++\\039\000\188\000\040\000\187\000\041\000\186\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\224\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\225\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\226\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\227\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\046\000\181\000\
++\\047\000\180\000\000\000\
++\\228\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\000\000\
++\\229\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\018\000\207\000\019\000\206\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\000\000\
++\\230\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\022\000\204\000\023\000\203\000\024\000\202\000\
++\\025\000\201\000\000\000\
++\\231\001\004\000\215\000\008\000\214\000\010\000\213\000\013\000\211\000\
++\\017\000\208\000\022\000\204\000\023\000\203\000\024\000\202\000\
++\\025\000\201\000\000\000\
++\\232\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
++\\024\000\202\000\025\000\201\000\000\000\
++\\233\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
++\\024\000\202\000\025\000\201\000\000\000\
++\\234\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
++\\024\000\202\000\025\000\201\000\000\000\
++\\235\001\000\000\
++\\236\001\000\000\
++\\237\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
++\\024\000\202\000\025\000\201\000\000\000\
++\\238\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
++\\024\000\202\000\025\000\201\000\000\000\
++\\239\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
++\\024\000\202\000\025\000\201\000\000\000\
++\\240\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
++\\024\000\202\000\025\000\201\000\000\000\
++\\241\001\004\000\215\000\008\000\214\000\010\000\213\000\023\000\203\000\
++\\024\000\202\000\025\000\201\000\000\000\
++\\242\001\004\000\126\000\016\000\124\000\021\000\121\000\023\000\119\000\
++\\024\000\118\000\026\000\144\000\048\000\116\000\049\000\115\000\
++\\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\243\001\000\000\
++\\244\001\000\000\
++\\245\001\000\000\
++\\246\001\000\000\
++\\247\001\000\000\
++\\248\001\000\000\
++\\249\001\000\000\
++\\250\001\000\000\
++\\251\001\000\000\
++\\252\001\000\000\
++\\253\001\000\000\
++\\254\001\000\000\
++\\254\001\002\000\233\000\000\000\
++\\255\001\000\000\
++\\000\002\050\000\114\000\000\000\
++\\001\002\000\000\
++\\002\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\003\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\004\002\004\000\126\000\014\000\125\000\016\000\124\000\018\000\123\000\
++\\019\000\122\000\021\000\121\000\022\000\120\000\023\000\119\000\
++\\024\000\118\000\026\000\144\000\048\000\116\000\049\000\115\000\
++\\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\005\002\011\000\178\000\000\000\
++\\006\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\007\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\008\002\004\000\083\001\008\000\005\001\022\000\042\000\000\000\
++\\009\002\000\000\
++\\010\002\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
++\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
++\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
++\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
++\\083\000\024\000\084\000\023\000\086\000\022\000\000\000\
++\\011\002\052\000\040\000\053\000\039\000\054\000\038\000\055\000\037\000\
++\\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
++\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
++\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
++\\083\000\024\000\084\000\023\000\086\000\022\000\000\000\
++\\012\002\000\000\
++\\013\002\000\000\
++\\014\002\000\000\
++\\015\002\000\000\
++\\016\002\000\000\
++\\017\002\000\000\
++\\018\002\000\000\
++\\019\002\000\000\
++\\020\002\000\000\
++\\021\002\000\000\
++\\022\002\000\000\
++\\023\002\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
++\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
++\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
++\\083\000\024\000\084\000\023\000\000\000\
++\\024\002\056\000\036\000\057\000\035\000\071\000\034\000\072\000\033\000\
++\\073\000\032\000\074\000\031\000\075\000\030\000\076\000\029\000\
++\\077\000\028\000\080\000\027\000\081\000\026\000\082\000\025\000\
++\\083\000\024\000\084\000\023\000\000\000\
++\\025\002\000\000\
++\\026\002\000\000\
++\\027\002\056\000\036\000\057\000\035\000\000\000\
++\\028\002\000\000\
++\\029\002\000\000\
++\\030\002\000\000\
++\\031\002\000\000\
++\\032\002\000\000\
++\\033\002\000\000\
++\\034\002\000\000\
++\\035\002\000\000\
++\\036\002\000\000\
++\\037\002\000\000\
++\\038\002\000\000\
++\\039\002\000\000\
++\\040\002\000\000\
++\\041\002\000\000\
++\\042\002\000\000\
++\\043\002\000\000\
++\\044\002\000\000\
++\\045\002\006\000\082\000\000\000\
++\\046\002\006\000\081\000\000\000\
++\\047\002\000\000\
++\\048\002\000\000\
++\\049\002\000\000\
++\\050\002\000\000\
++\\051\002\000\000\
++\\052\002\000\000\
++\\053\002\000\000\
++\\054\002\000\000\
++\\055\002\000\000\
++\\056\002\000\000\
++\\057\002\002\000\022\001\000\000\
++\\058\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\059\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\060\002\002\000\027\001\000\000\
++\\061\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\062\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\063\002\000\000\
++\\064\002\000\000\
++\\065\002\000\000\
++\\066\002\000\000\
++\\067\002\000\000\
++\\068\002\006\000\155\000\000\000\
++\\069\002\006\000\154\000\000\000\
++\\070\002\000\000\
++\\071\002\000\000\
++\\072\002\027\000\017\001\000\000\
++\\073\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\074\002\000\000\
++\\075\002\000\000\
++\\076\002\000\000\
++\\077\002\000\000\
++\\078\002\000\000\
++\\079\002\011\000\016\001\000\000\
++\\079\002\011\000\128\001\000\000\
++\\080\002\004\000\126\000\006\000\242\000\014\000\125\000\016\000\124\000\
++\\018\000\123\000\019\000\122\000\021\000\121\000\022\000\120\000\
++\\023\000\119\000\024\000\118\000\026\000\144\000\048\000\116\000\
++\\049\000\115\000\050\000\114\000\051\000\113\000\085\000\101\000\000\000\
++\\080\002\026\000\158\000\000\000\
++\\081\002\000\000\
++\\082\002\000\000\
++\\083\002\027\000\139\000\000\000\
++\\084\002\000\000\
++\\085\002\000\000\
++\\086\002\000\000\
++\\087\002\027\000\135\000\000\000\
++\\088\002\000\000\
++\\089\002\000\000\
++\\090\002\000\000\
++\\091\002\004\000\138\000\008\000\137\000\000\000\
++\\092\002\004\000\138\000\008\000\137\000\000\000\
++\\093\002\004\000\072\000\008\000\071\000\000\000\
++\\094\002\004\000\072\000\008\000\071\000\000\000\
++\\095\002\004\000\103\001\008\000\102\001\000\000\
++\\096\002\004\000\103\001\008\000\102\001\000\000\
++\\097\002\022\000\042\000\056\000\036\000\057\000\035\000\000\000\
++\\098\002\022\000\042\000\000\000\
++\\099\002\000\000\
++\\100\002\000\000\
++\\101\002\000\000\
++\\102\002\000\000\
++\\103\002\000\000\
++\\104\002\000\000\
++\\105\002\000\000\
++\\106\002\000\000\
++\\107\002\000\000\
++\\108\002\000\000\
++\\109\002\000\000\
++\\110\002\000\000\
++\\111\002\000\000\
++\\112\002\000\000\
++\\113\002\000\000\
++\\114\002\000\000\
++\\115\002\000\000\
++\\116\002\000\000\
++\\117\002\000\000\
++\\118\002\000\000\
++\\119\002\000\000\
++\\120\002\000\000\
++\\121\002\004\000\215\000\008\000\214\000\010\000\213\000\012\000\212\000\
++\\013\000\211\000\014\000\210\000\015\000\209\000\017\000\208\000\
++\\018\000\207\000\019\000\206\000\020\000\205\000\022\000\204\000\
++\\023\000\203\000\024\000\202\000\025\000\201\000\027\000\200\000\
++\\028\000\199\000\029\000\198\000\030\000\197\000\031\000\196\000\
++\\032\000\195\000\033\000\194\000\034\000\193\000\035\000\192\000\
++\\036\000\191\000\037\000\190\000\038\000\189\000\039\000\188\000\
++\\040\000\187\000\041\000\186\000\042\000\185\000\043\000\184\000\
++\\044\000\183\000\045\000\182\000\046\000\181\000\047\000\180\000\000\000\
++\\122\002\000\000\
++\\123\002\000\000\
++\\124\002\000\000\
++\\125\002\000\000\
++\\126\002\000\000\
++\\127\002\000\000\
++\\128\002\000\000\
++\\129\002\000\000\
++\\132\002\000\000\
++\\133\002\000\000\
++\\134\002\004\000\006\001\008\000\005\001\026\000\041\000\000\000\
++\\134\002\004\000\006\001\008\000\005\001\026\000\041\000\089\000\012\001\000\000\
++\\134\002\004\000\083\001\008\000\005\001\000\000\
++\\135\002\004\000\096\001\008\000\095\001\000\000\
++\\136\002\004\000\096\001\008\000\095\001\000\000\
++\\137\002\000\000\
++\\138\002\000\000\
++\\139\002\000\000\
++\\140\002\000\000\
++\\141\002\000\000\
++\\142\002\000\000\
++\\143\002\000\000\
++\\144\002\000\000\
++\\145\002\000\000\
++\\146\002\011\000\254\000\000\000\
++\\147\002\000\000\
++\\148\002\000\000\
++\\149\002\000\000\
++\\150\002\000\000\
++\\151\002\000\000\
++\\152\002\004\000\006\001\008\000\005\001\022\000\042\000\026\000\041\000\
++\\089\000\012\001\000\000\
++\\153\002\000\000\
++\\154\002\000\000\
++\\155\002\000\000\
++\\157\002\000\000\
++\"
++val actionRowNumbers =
++"\097\000\096\000\073\000\098\000\
++\\008\000\099\000\101\000\074\000\
++\\216\000\217\000\207\000\215\000\
++\\198\000\205\000\022\000\119\000\
++\\025\001\061\001\023\000\218\000\
++\\008\001\219\000\226\000\227\000\
++\\234\000\233\000\221\000\223\000\
++\\222\000\224\000\075\000\225\000\
++\\220\000\250\000\249\000\007\001\
++\\005\001\006\001\004\001\040\001\
++\\029\001\021\000\100\000\232\000\
++\\231\000\093\000\118\000\057\001\
++\\074\000\022\000\119\000\062\001\
++\\009\000\196\000\208\000\198\000\
++\\206\000\007\000\121\000\017\001\
++\\023\001\022\001\021\001\006\000\
++\\025\000\120\000\013\001\033\001\
++\\024\000\028\000\049\000\026\001\
++\\255\000\254\000\086\000\030\001\
++\\213\000\031\001\050\000\093\000\
++\\093\000\235\000\076\000\001\000\
++\\002\000\211\000\058\001\063\001\
++\\019\001\015\001\185\000\092\000\
++\\034\000\011\000\188\000\110\000\
++\\122\000\077\000\124\000\040\000\
++\\087\000\012\000\013\000\190\000\
++\\041\000\003\000\034\000\042\000\
++\\010\000\043\000\044\000\182\000\
++\\186\000\181\000\180\000\184\000\
++\\034\000\034\000\129\000\133\000\
++\\131\000\130\000\132\000\128\000\
++\\033\000\117\000\203\000\204\000\
++\\202\000\201\000\200\000\199\000\
++\\197\000\027\000\024\000\029\000\
++\\051\000\027\000\024\001\024\000\
++\\052\000\035\000\183\000\042\001\
++\\080\001\053\000\078\001\054\000\
++\\046\000\084\001\059\001\044\001\
++\\086\000\086\000\001\001\009\001\
++\\002\001\032\001\214\000\041\001\
++\\078\000\079\000\236\000\228\000\
++\\014\000\239\000\243\000\034\000\
++\\015\000\241\000\211\000\246\000\
++\\034\000\209\000\123\000\168\000\
++\\034\000\116\000\034\000\034\000\
++\\034\000\034\000\034\000\034\000\
++\\034\000\034\000\034\000\034\000\
++\\034\000\034\000\034\000\034\000\
++\\034\000\034\000\034\000\034\000\
++\\034\000\034\000\034\000\088\000\
++\\165\000\164\000\034\000\034\000\
++\\034\000\034\000\034\000\034\000\
++\\034\000\034\000\034\000\089\000\
++\\034\000\026\000\125\000\127\000\
++\\169\000\033\000\016\000\107\000\
++\\106\000\191\000\017\000\034\000\
++\\010\000\004\000\034\000\094\000\
++\\190\000\034\000\187\000\010\000\
++\\167\000\166\000\194\000\095\000\
++\\055\000\056\000\020\001\053\001\
++\\027\000\018\001\036\000\035\001\
++\\057\000\058\000\037\001\016\001\
++\\014\001\034\001\043\001\045\001\
++\\091\000\090\000\046\001\086\001\
++\\064\001\067\001\087\001\030\000\
++\\045\000\027\001\083\001\082\001\
++\\065\001\085\001\047\001\009\001\
++\\009\001\080\000\012\001\034\000\
++\\230\000\229\000\001\000\237\000\
++\\034\000\244\000\001\000\238\000\
++\\210\000\034\000\247\000\212\000\
++\\088\001\189\000\158\000\157\000\
++\\147\000\146\000\152\000\151\000\
++\\154\000\153\000\156\000\155\000\
++\\144\000\143\000\142\000\141\000\
++\\138\000\137\000\139\000\140\000\
++\\136\000\135\000\145\000\178\000\
++\\176\000\161\000\149\000\160\000\
++\\159\000\162\000\148\000\150\000\
++\\163\000\005\000\177\000\175\000\
++\\085\000\059\000\192\000\173\000\
++\\060\000\109\000\108\000\061\000\
++\\112\000\010\000\062\000\048\000\
++\\018\000\063\000\111\000\066\001\
++\\195\000\047\000\034\000\179\000\
++\\010\001\055\001\036\001\038\001\
++\\039\001\081\001\079\001\060\001\
++\\068\001\031\000\064\000\037\000\
++\\070\001\065\000\066\000\074\001\
++\\032\000\067\000\028\001\081\000\
++\\082\000\251\000\000\001\003\001\
++\\240\000\245\000\242\000\248\000\
++\\083\000\034\000\172\000\034\000\
++\\174\000\171\000\010\000\113\000\
++\\010\000\034\000\190\000\010\000\
++\\170\000\084\000\011\001\038\000\
++\\072\001\068\000\076\001\071\001\
++\\075\001\069\001\039\000\048\001\
++\\069\000\070\000\050\001\253\000\
++\\252\000\126\000\134\000\193\000\
++\\103\000\104\000\071\000\019\000\
++\\114\000\054\001\056\001\073\001\
++\\077\001\049\001\051\001\052\001\
++\\020\000\190\000\010\000\105\000\
++\\072\000\115\000\010\000\102\000\
++\\000\000"
++val gotoT =
++"\
++\\001\000\164\001\002\000\001\000\000\000\
++\\021\000\018\000\024\000\017\000\027\000\016\000\029\000\015\000\
++\\030\000\014\000\036\000\013\000\038\000\012\000\039\000\011\000\
++\\040\000\010\000\043\000\009\000\044\000\008\000\045\000\007\000\
++\\048\000\006\000\049\000\005\000\050\000\004\000\051\000\003\000\
++\\055\000\002\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\006\000\051\000\029\000\050\000\030\000\049\000\036\000\013\000\
++\\038\000\012\000\039\000\011\000\040\000\010\000\043\000\009\000\
++\\044\000\008\000\046\000\048\000\049\000\047\000\050\000\004\000\
++\\055\000\002\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\031\000\053\000\000\000\
++\\000\000\
++\\018\000\059\000\020\000\058\000\021\000\018\000\024\000\057\000\
++\\027\000\016\000\036\000\056\000\038\000\055\000\039\000\011\000\
++\\040\000\054\000\043\000\009\000\044\000\008\000\055\000\002\000\000\000\
++\\017\000\066\000\019\000\065\000\021\000\064\000\022\000\063\000\
++\\023\000\062\000\024\000\061\000\026\000\060\000\027\000\016\000\000\000\
++\\000\000\
++\\000\000\
++\\027\000\071\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\021\000\077\000\040\000\076\000\041\000\075\000\000\000\
++\\021\000\018\000\024\000\078\000\027\000\016\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\084\000\
++\\042\000\083\000\043\000\009\000\044\000\008\000\055\000\002\000\
++\\060\000\082\000\061\000\081\000\000\000\
++\\000\000\
++\\000\000\
++\\006\000\087\000\029\000\050\000\030\000\049\000\036\000\013\000\
++\\038\000\012\000\039\000\011\000\040\000\010\000\043\000\009\000\
++\\044\000\008\000\049\000\086\000\050\000\004\000\055\000\002\000\000\000\
++\\018\000\059\000\020\000\058\000\021\000\018\000\024\000\088\000\
++\\027\000\016\000\036\000\056\000\038\000\055\000\039\000\011\000\
++\\040\000\054\000\043\000\009\000\044\000\008\000\055\000\002\000\000\000\
++\\017\000\066\000\019\000\065\000\021\000\064\000\022\000\089\000\
++\\023\000\062\000\024\000\061\000\026\000\060\000\027\000\016\000\000\000\
++\\000\000\
++\\003\000\098\000\004\000\097\000\005\000\096\000\006\000\095\000\
++\\007\000\094\000\009\000\093\000\010\000\092\000\062\000\091\000\
++\\064\000\090\000\000\000\
++\\032\000\131\000\036\000\130\000\039\000\129\000\040\000\128\000\
++\\043\000\127\000\044\000\126\000\055\000\002\000\000\000\
++\\000\000\
++\\031\000\132\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\026\000\138\000\027\000\071\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\021\000\064\000\023\000\140\000\024\000\078\000\026\000\060\000\
++\\027\000\016\000\000\000\
++\\007\000\141\000\010\000\092\000\064\000\090\000\000\000\
++\\029\000\149\000\030\000\148\000\036\000\013\000\038\000\012\000\
++\\039\000\011\000\040\000\010\000\043\000\009\000\044\000\008\000\
++\\047\000\147\000\052\000\146\000\053\000\145\000\054\000\144\000\
++\\055\000\002\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\013\000\155\000\014\000\154\000\000\000\
++\\021\000\157\000\000\000\
++\\040\000\076\000\041\000\158\000\000\000\
++\\000\000\
++\\000\000\
++\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\084\000\
++\\042\000\083\000\043\000\009\000\044\000\008\000\055\000\002\000\
++\\060\000\160\000\061\000\081\000\000\000\
++\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\084\000\
++\\042\000\083\000\043\000\009\000\044\000\008\000\055\000\002\000\
++\\060\000\161\000\061\000\081\000\000\000\
++\\000\000\
++\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\084\000\
++\\042\000\083\000\043\000\009\000\044\000\008\000\055\000\002\000\
++\\061\000\162\000\000\000\
++\\021\000\064\000\022\000\166\000\023\000\062\000\024\000\061\000\
++\\026\000\060\000\027\000\016\000\056\000\165\000\058\000\164\000\000\000\
++\\021\000\018\000\024\000\171\000\027\000\016\000\038\000\170\000\
++\\039\000\011\000\043\000\009\000\044\000\008\000\055\000\002\000\
++\\057\000\169\000\059\000\168\000\000\000\
++\\033\000\173\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\029\000\050\000\030\000\049\000\036\000\013\000\038\000\012\000\
++\\039\000\011\000\040\000\010\000\043\000\009\000\044\000\008\000\
++\\046\000\174\000\049\000\047\000\050\000\004\000\055\000\002\000\000\000\
++\\007\000\175\000\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\003\000\214\000\006\000\095\000\007\000\094\000\009\000\093\000\
++\\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\007\000\216\000\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\094\000\008\000\222\000\009\000\221\000\010\000\092\000\
++\\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\007\000\094\000\009\000\225\000\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\003\000\227\000\006\000\095\000\007\000\094\000\009\000\093\000\
++\\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\064\000\230\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\232\000\010\000\092\000\064\000\090\000\000\000\
++\\007\000\233\000\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\094\000\009\000\237\000\010\000\092\000\037\000\236\000\
++\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\235\000\
++\\042\000\234\000\043\000\009\000\044\000\008\000\055\000\002\000\
++\\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\032\000\131\000\036\000\130\000\039\000\129\000\040\000\128\000\
++\\043\000\127\000\044\000\126\000\055\000\002\000\000\000\
++\\007\000\239\000\010\000\092\000\034\000\238\000\064\000\090\000\000\000\
++\\017\000\241\000\021\000\064\000\022\000\089\000\023\000\062\000\
++\\024\000\061\000\026\000\060\000\027\000\016\000\000\000\
++\\007\000\242\000\010\000\092\000\064\000\090\000\000\000\
++\\029\000\149\000\030\000\148\000\036\000\013\000\038\000\012\000\
++\\039\000\011\000\040\000\010\000\043\000\009\000\044\000\008\000\
++\\047\000\245\000\052\000\146\000\053\000\244\000\054\000\144\000\
++\\055\000\002\000\000\000\
++\\007\000\239\000\010\000\092\000\034\000\247\000\064\000\090\000\000\000\
++\\000\000\
++\\017\000\248\000\021\000\064\000\022\000\089\000\023\000\062\000\
++\\024\000\061\000\026\000\060\000\027\000\016\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\015\000\002\001\016\000\001\001\021\000\000\001\024\000\255\000\
++\\027\000\016\000\036\000\056\000\038\000\055\000\039\000\011\000\
++\\040\000\054\000\043\000\009\000\044\000\008\000\055\000\002\000\000\000\
++\\015\000\009\001\016\000\001\001\021\000\008\001\024\000\007\001\
++\\025\000\006\001\027\000\016\000\028\000\005\001\000\000\
++\\000\000\
++\\000\000\
++\\013\000\011\001\014\000\154\000\000\000\
++\\013\000\012\001\014\000\154\000\000\000\
++\\000\000\
++\\012\000\013\001\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\084\000\
++\\042\000\083\000\043\000\009\000\044\000\008\000\055\000\002\000\
++\\061\000\162\000\000\000\
++\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\084\000\
++\\042\000\083\000\043\000\009\000\044\000\008\000\055\000\002\000\
++\\061\000\162\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\021\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\033\000\024\001\000\000\
++\\000\000\
++\\007\000\026\001\010\000\092\000\064\000\090\000\000\000\
++\\032\000\027\001\039\000\129\000\040\000\128\000\043\000\127\000\
++\\044\000\126\000\055\000\002\000\000\000\
++\\003\000\098\000\004\000\028\001\005\000\096\000\006\000\095\000\
++\\007\000\094\000\009\000\093\000\010\000\092\000\029\000\050\000\
++\\030\000\049\000\036\000\013\000\038\000\012\000\039\000\011\000\
++\\040\000\010\000\043\000\009\000\044\000\008\000\049\000\086\000\
++\\050\000\004\000\055\000\002\000\064\000\090\000\000\000\
++\\000\000\
++\\007\000\029\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\007\000\030\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\031\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\032\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\033\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\034\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\035\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\036\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\037\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\038\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\039\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\040\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\041\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\042\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\043\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\044\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\045\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\046\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\047\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\048\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\049\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\050\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\053\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\054\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\055\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\056\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\057\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\058\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\059\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\060\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\094\000\009\000\061\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\007\000\094\000\009\000\064\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\066\001\010\000\092\000\011\000\065\001\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\094\000\009\000\237\000\010\000\092\000\037\000\068\001\
++\\038\000\085\000\039\000\011\000\040\000\076\000\041\000\235\000\
++\\042\000\234\000\043\000\009\000\044\000\008\000\055\000\002\000\
++\\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\094\000\009\000\071\001\010\000\092\000\064\000\090\000\000\000\
++\\003\000\072\001\006\000\095\000\007\000\094\000\009\000\093\000\
++\\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\007\000\094\000\009\000\074\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\007\000\094\000\008\000\076\001\009\000\221\000\010\000\092\000\
++\\064\000\090\000\000\000\
++\\007\000\094\000\009\000\077\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\003\000\078\001\006\000\095\000\007\000\094\000\009\000\093\000\
++\\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\015\000\080\001\016\000\001\001\021\000\079\001\000\000\
++\\038\000\170\000\039\000\011\000\043\000\009\000\044\000\008\000\
++\\055\000\002\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\239\000\010\000\092\000\034\000\085\001\035\000\084\001\
++\\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\029\000\149\000\030\000\148\000\036\000\013\000\038\000\012\000\
++\\039\000\011\000\040\000\010\000\043\000\009\000\044\000\008\000\
++\\054\000\089\001\055\000\002\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\016\000\092\001\027\000\071\000\000\000\
++\\000\000\
++\\000\000\
++\\007\000\095\001\010\000\092\000\064\000\090\000\000\000\
++\\015\000\098\001\016\000\001\001\021\000\000\001\024\000\078\000\
++\\027\000\016\000\029\000\149\000\030\000\148\000\036\000\013\000\
++\\038\000\012\000\039\000\011\000\040\000\010\000\043\000\009\000\
++\\044\000\008\000\052\000\146\000\053\000\097\001\054\000\144\000\
++\\055\000\002\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\016\000\092\001\027\000\071\000\028\000\102\001\000\000\
++\\000\000\
++\\000\000\
++\\012\000\103\001\000\000\
++\\012\000\104\001\000\000\
++\\000\000\
++\\014\000\106\001\000\000\
++\\007\000\107\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\021\000\064\000\022\000\166\000\023\000\062\000\024\000\061\000\
++\\026\000\060\000\027\000\016\000\056\000\108\001\000\000\
++\\000\000\
++\\007\000\109\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\021\000\064\000\022\000\166\000\023\000\062\000\024\000\061\000\
++\\026\000\060\000\027\000\016\000\056\000\110\001\000\000\
++\\000\000\
++\\032\000\027\001\039\000\129\000\040\000\128\000\043\000\127\000\
++\\044\000\126\000\055\000\002\000\000\000\
++\\007\000\111\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\063\000\112\001\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\003\000\119\001\006\000\095\000\007\000\094\000\009\000\093\000\
++\\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\016\000\092\001\000\000\
++\\000\000\
++\\015\000\098\001\016\000\001\001\021\000\079\001\029\000\149\000\
++\\030\000\148\000\036\000\013\000\038\000\012\000\039\000\011\000\
++\\040\000\010\000\043\000\009\000\044\000\008\000\052\000\146\000\
++\\053\000\097\001\054\000\144\000\055\000\002\000\000\000\
++\\007\000\124\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\012\000\125\001\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\127\001\010\000\092\000\064\000\090\000\000\000\
++\\029\000\149\000\030\000\148\000\036\000\013\000\038\000\012\000\
++\\039\000\011\000\040\000\010\000\043\000\009\000\044\000\008\000\
++\\052\000\146\000\053\000\129\001\054\000\144\000\055\000\002\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\134\001\010\000\092\000\064\000\090\000\000\000\
++\\029\000\149\000\030\000\148\000\036\000\013\000\038\000\012\000\
++\\039\000\011\000\040\000\010\000\043\000\009\000\044\000\008\000\
++\\047\000\137\001\052\000\146\000\053\000\136\001\054\000\144\000\
++\\055\000\002\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\142\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\007\000\143\001\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\007\000\124\001\010\000\092\000\064\000\090\000\000\000\
++\\003\000\144\001\006\000\095\000\007\000\094\000\009\000\093\000\
++\\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\003\000\145\001\006\000\095\000\007\000\094\000\009\000\093\000\
++\\010\000\092\000\064\000\090\000\000\000\
++\\007\000\094\000\009\000\146\001\010\000\092\000\064\000\090\000\000\000\
++\\007\000\094\000\008\000\147\001\009\000\221\000\010\000\092\000\
++\\064\000\090\000\000\000\
++\\003\000\148\001\006\000\095\000\007\000\094\000\009\000\093\000\
++\\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\007\000\239\000\010\000\092\000\034\000\150\001\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\007\000\094\000\008\000\160\001\009\000\221\000\010\000\092\000\
++\\064\000\090\000\000\000\
++\\003\000\161\001\006\000\095\000\007\000\094\000\009\000\093\000\
++\\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\003\000\163\001\006\000\095\000\007\000\094\000\009\000\093\000\
++\\010\000\092\000\064\000\090\000\000\000\
++\\000\000\
++\\000\000\
++\"
++val numstates = 421
++val numrules = 247
++val s = ref "" and index = ref 0
++val string_to_int = fn () => 
++let val i = !index
++in index := i+2; Char.ord(String.sub(!s,i)) + Char.ord(String.sub(!s,i+1)) * 256
++end
++val string_to_list = fn s' =>
++    let val len = String.size s'
++        fun f () =
++           if !index < len then string_to_int() :: f()
++           else nil
++   in index := 0; s := s'; f ()
++   end
++val string_to_pairlist = fn (conv_key,conv_entry) =>
++     let fun f () =
++         case string_to_int()
++         of 0 => EMPTY
++          | n => PAIR(conv_key (n-1),conv_entry (string_to_int()),f())
++     in f
++     end
++val string_to_pairlist_default = fn (conv_key,conv_entry) =>
++    let val conv_row = string_to_pairlist(conv_key,conv_entry)
++    in fn () =>
++       let val default = conv_entry(string_to_int())
++           val row = conv_row()
++       in (row,default)
++       end
++   end
++val string_to_table = fn (convert_row,s') =>
++    let val len = String.size s'
++        fun f ()=
++           if !index < len then convert_row() :: f()
++           else nil
++     in (s := s'; index := 0; f ())
++     end
++local
++  val memo = Array.array(numstates+numrules,ERROR)
++  val _ =let fun g i=(Array.update(memo,i,REDUCE(i-numstates)); g(i+1))
++       fun f i =
++            if i=numstates then g i
++            else (Array.update(memo,i,SHIFT (STATE i)); f (i+1))
++          in f 0 handle Subscript => ()
++          end
++in
++val entry_to_action = fn 0 => ACCEPT | 1 => ERROR | j => Array.sub(memo,(j-2))
++end
++val gotoT=Array.fromList(string_to_table(string_to_pairlist(NT,STATE),gotoT))
++val actionRows=string_to_table(string_to_pairlist_default(T,entry_to_action),actionRows)
++val actionRowNumbers = string_to_list actionRowNumbers
++val actionT = let val actionRowLookUp=
++let val a=Array.fromList(actionRows) in fn i=>Array.sub(a,i) end
++in Array.fromList(map actionRowLookUp actionRowNumbers)
++end
++in LrTable.mkLrTable {actions=actionT,gotos=gotoT,numRules=numrules,
++numStates=numstates,initialState=STATE 0}
++end
++end
++local open Header in
++type pos = int
++type arg = SourceMap.sourcemap
++structure MlyValue = 
++struct
++datatype svalue = VOID' | ntVOID of unit | TYPE_NAME of  (string)
++ | CCONST of  (LargeInt.int) | STRING of  (string)
++ | REALNUM of  (real) | DECNUM of  (LargeInt.int) | ID of  (string)
++ | strings of  (string) | popScope of  (unit) | pushScope of  (unit)
++ | structDeclaration of  ( ( ctype * (declarator * expression) list ) )
++ | structDeclarationList of  ( ( ctype * (declarator * expression) list )  seq)
++ | notypeStructDeclaratorList of  ( ( declarator * expression )  seq)
++ | structDeclaratorList of  ( ( declarator * expression )  seq)
++ | notypeStructDeclarator of  ( ( declarator * expression ) )
++ | structDeclarator of  ( ( declarator * expression ) )
++ | structOrUnion of  (bool)
++ | parameterDeclaration of  ( ( decltype * declarator ) )
++ | parameterTypeList of  ( ( decltype * declarator )  list)
++ | parameterList of  ( ( decltype * declarator )  seq)
++ | externalDeclaration of  (externalDecl option)
++ | declaration1 of  (declaration) | declaration of  (declaration)
++ | functionDefinition of  (externalDecl)
++ | identlist of  ( ( string * int * int )  seq)
++ | declarationList of  (declaration seq)
++ | fDefDeclaration of  ( ( decltype * declarator ) )
++ | structOrUnionSpecifier of  (specifier)
++ | enumSpecifier of  (specifier) | specifierQualifierList of  (ctype)
++ | typeQualifierList of  (qualifier list)
++ | typeQualifier of  (qualifier)
++ | typeSpecifierReserved of  (specifier)
++ | typeSpecifier of  (specifier) | typeName of  (ctype)
++ | storageClassSpecifier of  (storage)
++ | initializerList of  (expression seq) | initializer of  (expression)
++ | reservedSpecifierQualifiers of  (ctype)
++ | specifierQualifierReserved of  (ctype)
++ | reservedDeclarationSpecifier of  (decltype)
++ | declarationModifiers of  (decltype)
++ | declarationSpecifiers of  (decltype)
++ | parmDirectDeclarator of  (declarator)
++ | notypeDirectDeclarator of  (declarator)
++ | aftertypeDirectDeclarator of  (declarator)
++ | parmDeclarator of  (declarator) | notypeDeclarator of  (declarator)
++ | aftertypeDeclarator of  (declarator) | declarator of  (declarator)
++ | pointer of  (declarator)
++ | notypeInitDeclaratorList of  ( ( declarator * expression )  seq)
++ | initDeclaratorList of  ( ( declarator * expression )  seq)
++ | notypeInitDeclarator of  ( ( declarator * expression ) )
++ | initDeclarator of  ( ( declarator * expression ) )
++ | directAbstractDeclarator of  (declarator)
++ | abstractDeclarator of  (declarator)
++ | enumerator of  ( ( string * expression ) )
++ | enumeratorList of  ( ( string * expression )  seq)
++ | trailingComma of  (bool) | argumentExprList of  (expression seq)
++ | unaryOperator of  (operator) | exprWComma of  (expression)
++ | opExpr of  (expression) | expr of  (expression)
++ | compoundStatement of  (statement)
++ | statementlist of  (statement seq)
++ | ostatementlist of  (statement list) | statement of  (statement)
++ | tu of  (externalDecl seq) | translationUnit of  (externalDecl list)
++end
++type svalue = MlyValue.svalue
++type result = externalDecl list
++end
++structure EC=
++struct
++open LrTable
++infix 5 $$
++fun x $$ y = y::x
++val is_keyword =
++fn (T 11) => true | (T 57) => true | (T 58) => true | (T 59) => true
++ | (T 60) => true | (T 61) => true | (T 62) => true | (T 63) => true
++ | (T 64) => true | (T 65) => true | (T 66) => true | (T 67) => true
++ | (T 68) => true | (T 69) => true | _ => false
++val preferred_change : (term list * term list) list = 
++(nil
++ $$ (T 25),nil
++ $$ (T 88))::
++nil
++val noShift = 
++fn (T 0) => true | _ => false
++val showTerminal =
++fn (T 0) => "EOF"
++  | (T 1) => "COLON"
++  | (T 2) => "SEMICOLON"
++  | (T 3) => "LPAREN"
++  | (T 4) => "RPAREN"
++  | (T 5) => "LCURLY"
++  | (T 6) => "RCURLY"
++  | (T 7) => "LBRACE"
++  | (T 8) => "RBRACE"
++  | (T 9) => "DOT"
++  | (T 10) => "COMMA"
++  | (T 11) => "QUESTION"
++  | (T 12) => "PERCENT"
++  | (T 13) => "AMP"
++  | (T 14) => "BAR"
++  | (T 15) => "TILDE"
++  | (T 16) => "DIVIDE"
++  | (T 17) => "PLUS"
++  | (T 18) => "MINUS"
++  | (T 19) => "HAT"
++  | (T 20) => "BANG"
++  | (T 21) => "TIMES"
++  | (T 22) => "INC"
++  | (T 23) => "DEC"
++  | (T 24) => "ARROW"
++  | (T 25) => "ID"
++  | (T 26) => "EQUALS"
++  | (T 27) => "PLUSEQUALS"
++  | (T 28) => "MINUSEQUALS"
++  | (T 29) => "XOREQUALS"
++  | (T 30) => "MODEQUALS"
++  | (T 31) => "TIMESEQUALS"
++  | (T 32) => "DIVEQUALS"
++  | (T 33) => "OREQUALS"
++  | (T 34) => "ANDEQUALS"
++  | (T 35) => "LSHIFTEQUALS"
++  | (T 36) => "RSHIFTEQUALS"
++  | (T 37) => "LTE"
++  | (T 38) => "GTE"
++  | (T 39) => "LT"
++  | (T 40) => "GT"
++  | (T 41) => "EQ"
++  | (T 42) => "NEQ"
++  | (T 43) => "OR"
++  | (T 44) => "AND"
++  | (T 45) => "LSHIFT"
++  | (T 46) => "RSHIFT"
++  | (T 47) => "DECNUM"
++  | (T 48) => "REALNUM"
++  | (T 49) => "STRING"
++  | (T 50) => "CCONST"
++  | (T 51) => "EXTERN"
++  | (T 52) => "AUTO"
++  | (T 53) => "STATIC"
++  | (T 54) => "REGISTER"
++  | (T 55) => "CONST"
++  | (T 56) => "VOLATILE"
++  | (T 57) => "IF"
++  | (T 58) => "THEN"
++  | (T 59) => "ELSE"
++  | (T 60) => "FOR"
++  | (T 61) => "DO"
++  | (T 62) => "SWITCH"
++  | (T 63) => "CASE"
++  | (T 64) => "DEFAULT"
++  | (T 65) => "WHILE"
++  | (T 66) => "RETURN"
++  | (T 67) => "BREAK"
++  | (T 68) => "CONTINUE"
++  | (T 69) => "GOTO"
++  | (T 70) => "CHAR"
++  | (T 71) => "DOUBLE"
++  | (T 72) => "ENUM"
++  | (T 73) => "FLOAT"
++  | (T 74) => "INT"
++  | (T 75) => "LONG"
++  | (T 76) => "SHORT"
++  | (T 77) => "FRACTIONAL"
++  | (T 78) => "SATURATE"
++  | (T 79) => "STRUCT"
++  | (T 80) => "UNION"
++  | (T 81) => "UNSIGNED"
++  | (T 82) => "SIGNED"
++  | (T 83) => "VOID"
++  | (T 84) => "SIZEOF"
++  | (T 85) => "TYPEDEF"
++  | (T 86) => "UNARY"
++  | (T 87) => "ELIPSIS"
++  | (T 88) => "TYPE_NAME"
++  | _ => "bogus-term"
++local open Header in
++val errtermvalue=
++fn (T 88) => MlyValue.TYPE_NAME((
++Error.hint "Likely cause: missing typedef declaration.\n"; "bogus")) | 
++_ => MlyValue.VOID'
++end
++val terms : term list = nil
++ $$ (T 87) $$ (T 86) $$ (T 85) $$ (T 84) $$ (T 83) $$ (T 82) $$ (T 81)
++ $$ (T 80) $$ (T 79) $$ (T 78) $$ (T 77) $$ (T 76) $$ (T 75) $$ (T 74)
++ $$ (T 73) $$ (T 72) $$ (T 71) $$ (T 70) $$ (T 69) $$ (T 68) $$ (T 67)
++ $$ (T 66) $$ (T 65) $$ (T 64) $$ (T 63) $$ (T 62) $$ (T 61) $$ (T 60)
++ $$ (T 59) $$ (T 58) $$ (T 57) $$ (T 56) $$ (T 55) $$ (T 54) $$ (T 53)
++ $$ (T 52) $$ (T 51) $$ (T 46) $$ (T 45) $$ (T 44) $$ (T 43) $$ (T 42)
++ $$ (T 41) $$ (T 40) $$ (T 39) $$ (T 38) $$ (T 37) $$ (T 36) $$ (T 35)
++ $$ (T 34) $$ (T 33) $$ (T 32) $$ (T 31) $$ (T 30) $$ (T 29) $$ (T 28)
++ $$ (T 27) $$ (T 26) $$ (T 24) $$ (T 23) $$ (T 22) $$ (T 21) $$ (T 20)
++ $$ (T 19) $$ (T 18) $$ (T 17) $$ (T 16) $$ (T 15) $$ (T 14) $$ (T 13)
++ $$ (T 12) $$ (T 11) $$ (T 10) $$ (T 9) $$ (T 8) $$ (T 7) $$ (T 6) $$ 
++(T 5) $$ (T 4) $$ (T 3) $$ (T 2) $$ (T 1) $$ (T 0)end
++structure Actions =
++struct 
++exception mlyAction of int
++local open Header in
++val actions = 
++fn (i392,defaultPos,stack,
++    (srcMap):arg) =>
++case (i392,stack)
++of (0,(_,(MlyValue.tu tu,tu1left,tu1right))::rest671) => let val 
++result=MlyValue.translationUnit((seqToList tu))
++ in (LrTable.NT 0,(result,tu1left,tu1right),rest671) end
++| (1,rest671) => let val result=MlyValue.tu((emptySeq))
++ in (LrTable.NT 1,(result,defaultPos,defaultPos),rest671) end
++| (2,(_,(MlyValue.externalDeclaration externalDeclaration,_,
++externalDeclaration1right))::(_,(MlyValue.tu tu,tu1left,_))::rest671)
++ => let val result=MlyValue.tu((addOptToEnd(externalDeclaration, tu)))
++ in (LrTable.NT 1,(result,tu1left,externalDeclaration1right),rest671)
++ end
++| (3,(_,(MlyValue.declaration declaration,declarationleft as 
++declaration1left,declarationright as declaration1right))::rest671) => 
++let val result=MlyValue.externalDeclaration((
++SOME(markExternalDecl srcMap (ExternalDecl declaration,
++						                       declarationleft,
++								       declarationright))
++))
++ in (LrTable.NT 50,(result,declaration1left,declaration1right),rest671
++) end
++| (4,(_,(_,SEMICOLON1left,SEMICOLON1right))::rest671) => let val 
++result=MlyValue.externalDeclaration((NONE))
++ in (LrTable.NT 50,(result,SEMICOLON1left,SEMICOLON1right),rest671)
++ end
++| (5,(_,(MlyValue.functionDefinition functionDefinition,
++functionDefinitionleft as functionDefinition1left,
++functionDefinitionright as functionDefinition1right))::rest671) => 
++let val result=MlyValue.externalDeclaration((
++SOME(markExternalDecl srcMap (functionDefinition,
++						   	               functionDefinitionleft,
++							               functionDefinitionright))
++))
++ in (LrTable.NT 50,(result,functionDefinition1left,
++functionDefinition1right),rest671) end
++| (6,(_,(MlyValue.statement statement,_,statementright as 
++statement1right))::_::(_,(MlyValue.opExpr opExpr3,_,_))::_::(_,(
++MlyValue.opExpr opExpr2,_,_))::_::(_,(MlyValue.opExpr opExpr1,_,_))::_
++::(_,(_,FORleft as FOR1left,_))::rest671) => let val result=
++MlyValue.statement((
++markStatement srcMap (For(opExpr1,opExpr2,opExpr3,statement),
++							FORleft, statementright)
++))
++ in (LrTable.NT 2,(result,FOR1left,statement1right),rest671) end
++| (7,(_,(MlyValue.statement statement,_,statementright as 
++statement1right))::_::(_,(MlyValue.exprWComma exprWComma,_,_))::_::(_,
++(_,WHILEleft as WHILE1left,_))::rest671) => let val result=
++MlyValue.statement((
++markStatement srcMap (While(exprWComma,statement),
++							WHILEleft, statementright)
++))
++ in (LrTable.NT 2,(result,WHILE1left,statement1right),rest671) end
++| (8,(_,(MlyValue.statement statement,_,statementright as 
++statement1right))::_::(_,(MlyValue.exprWComma exprWComma,_,_))::_::(_,
++(_,SWITCHleft as SWITCH1left,_))::rest671) => let val result=
++MlyValue.statement((
++markStatement srcMap (Switch(exprWComma,statement),
++							SWITCHleft, statementright)
++))
++ in (LrTable.NT 2,(result,SWITCH1left,statement1right),rest671) end
++| (9,(_,(_,_,SEMICOLONright as SEMICOLON1right))::_::(_,(
++MlyValue.exprWComma exprWComma,_,_))::_::_::(_,(MlyValue.statement 
++statement,_,_))::(_,(_,DOleft as DO1left,_))::rest671) => let val 
++result=MlyValue.statement((
++markStatement srcMap (Do(exprWComma,statement),
++							DOleft, SEMICOLONright)
++))
++ in (LrTable.NT 2,(result,DO1left,SEMICOLON1right),rest671) end
++| (10,(_,(_,_,SEMICOLONright as SEMICOLON1right))::(_,(_,BREAKleft as 
++BREAK1left,_))::rest671) => let val result=MlyValue.statement((
++markStatement srcMap (Break, 
++							BREAKleft, SEMICOLONright)))
++ in (LrTable.NT 2,(result,BREAK1left,SEMICOLON1right),rest671) end
++| (11,(_,(_,_,SEMICOLONright as SEMICOLON1right))::(_,(_,CONTINUEleft
++ as CONTINUE1left,_))::rest671) => let val result=MlyValue.statement((
++markStatement srcMap (Continue, 
++							CONTINUEleft, SEMICOLONright))
++)
++ in (LrTable.NT 2,(result,CONTINUE1left,SEMICOLON1right),rest671) end
++| (12,(_,(_,_,SEMICOLONright as SEMICOLON1right))::(_,(MlyValue.opExpr
++ opExpr,_,_))::(_,(_,RETURNleft as RETURN1left,_))::rest671) => let 
++val result=MlyValue.statement((
++markStatement srcMap (Return(opExpr), 
++							RETURNleft, SEMICOLONright)
++))
++ in (LrTable.NT 2,(result,RETURN1left,SEMICOLON1right),rest671) end
++| (13,(_,(_,_,SEMICOLONright as SEMICOLON1right))::(_,(MlyValue.ID ID,
++_,_))::(_,(_,GOTOleft as GOTO1left,_))::rest671) => let val result=
++MlyValue.statement((
++markStatement srcMap (Goto(ID), 
++							GOTOleft, SEMICOLONright)))
++ in (LrTable.NT 2,(result,GOTO1left,SEMICOLON1right),rest671) end
++| (14,(_,(MlyValue.compoundStatement compoundStatement,
++compoundStatement1left,compoundStatement1right))::rest671) => let val 
++result=MlyValue.statement((compoundStatement))
++ in (LrTable.NT 2,(result,compoundStatement1left,
++compoundStatement1right),rest671) end
++| (15,(_,(MlyValue.statement statement,_,statementright as 
++statement1right))::_::(_,(MlyValue.ID ID,IDleft as ID1left,_))::
++rest671) => let val result=MlyValue.statement((
++markStatement srcMap (Labeled(ID,statement),
++							IDleft,statementright)
++))
++ in (LrTable.NT 2,(result,ID1left,statement1right),rest671) end
++| (16,(_,(MlyValue.statement statement,_,statementright as 
++statement1right))::_::(_,(_,DEFAULTleft as DEFAULT1left,_))::rest671)
++ => let val result=MlyValue.statement((
++markStatement srcMap (DefaultLabel(statement),
++							DEFAULTleft, statementright)
++))
++ in (LrTable.NT 2,(result,DEFAULT1left,statement1right),rest671) end
++| (17,(_,(MlyValue.statement statement,_,statementright as 
++statement1right))::_::(_,(MlyValue.exprWComma exprWComma,_,_))::(_,(_,
++CASEleft as CASE1left,_))::rest671) => let val result=
++MlyValue.statement((
++markStatement srcMap (CaseLabel(exprWComma,statement),
++							CASEleft, statementright)
++))
++ in (LrTable.NT 2,(result,CASE1left,statement1right),rest671) end
++| (18,(_,(MlyValue.statement statement,_,statementright as 
++statement1right))::_::(_,(MlyValue.exprWComma exprWComma,_,_))::_::(_,
++(_,IFleft as IF1left,_))::rest671) => let val result=
++MlyValue.statement((
++markStatement srcMap (IfThen(exprWComma,statement),
++							IFleft, statementright)
++))
++ in (LrTable.NT 2,(result,IF1left,statement1right),rest671) end
++| (19,(_,(MlyValue.statement statement2,_,statement2right))::_::(_,(
++MlyValue.statement statement1,_,_))::_::(_,(MlyValue.exprWComma 
++exprWComma,_,_))::_::(_,(_,IFleft as IF1left,_))::rest671) => let val 
++result=MlyValue.statement((
++markStatement srcMap (IfThenElse(exprWComma,statement1,statement2),
++							IFleft,
++							statement2right)
++))
++ in (LrTable.NT 2,(result,IF1left,statement2right),rest671) end
++| (20,(_,(_,_,SEMICOLONright as SEMICOLON1right))::(_,(
++MlyValue.exprWComma exprWComma,exprWCommaleft as exprWComma1left,_))::
++rest671) => let val result=MlyValue.statement((
++markStatement srcMap (Expr(exprWComma),
++							exprWCommaleft, SEMICOLONright)
++))
++ in (LrTable.NT 2,(result,exprWComma1left,SEMICOLON1right),rest671)
++ end
++| (21,(_,(_,SEMICOLONleft as SEMICOLON1left,SEMICOLONright as 
++SEMICOLON1right))::rest671) => let val result=MlyValue.statement((
++markStatement srcMap (Expr(EmptyExpr),
++							SEMICOLONleft, SEMICOLONright)
++))
++ in (LrTable.NT 2,(result,SEMICOLON1left,SEMICOLON1right),rest671) end
++| (22,(_,(_,_,SEMICOLON1right))::(_,(MlyValue.declaration1 
++declaration1,declaration11left,_))::rest671) => let val result=
++MlyValue.declaration((declaration1))
++ in (LrTable.NT 48,(result,declaration11left,SEMICOLON1right),rest671)
++ end
++| (23,(_,(MlyValue.declarationSpecifiers declarationSpecifiers,
++declarationSpecifiersleft as declarationSpecifiers1left,
++declarationSpecifiersright as declarationSpecifiers1right))::rest671)
++ => let val result=MlyValue.declaration1((
++insertDeclNames (declarationSpecifiers, []);
++		 markDeclaration srcMap
++		   (Declaration(declarationSpecifiers, []), 
++		    declarationSpecifiersleft, declarationSpecifiersright)
++))
++ in (LrTable.NT 49,(result,declarationSpecifiers1left,
++declarationSpecifiers1right),rest671) end
++| (24,(_,(MlyValue.initDeclaratorList initDeclaratorList,_,
++initDeclaratorListright as initDeclaratorList1right))::(_,(
++MlyValue.declarationSpecifiers declarationSpecifiers,
++declarationSpecifiersleft as declarationSpecifiers1left,_))::rest671)
++ => let val result=MlyValue.declaration1((
++let val decl = (declarationSpecifiers, seqToList initDeclaratorList)
++		  in insertDeclNames decl;
++		     markDeclaration srcMap
++		       (Declaration decl, declarationSpecifiersleft, initDeclaratorListright)
++	         end
++))
++ in (LrTable.NT 49,(result,declarationSpecifiers1left,
++initDeclaratorList1right),rest671) end
++| (25,(_,(MlyValue.notypeInitDeclaratorList notypeInitDeclaratorList,_
++,notypeInitDeclaratorListright as notypeInitDeclaratorList1right))::(_
++,(MlyValue.declarationModifiers declarationModifiers,
++declarationModifiersleft as declarationModifiers1left,_))::rest671)
++ => let val result=MlyValue.declaration1((
++let val decl = (declarationModifiers, seqToList notypeInitDeclaratorList)
++		  in insertDeclNames decl;
++		     markDeclaration srcMap
++		       (Declaration decl, declarationModifiersleft, notypeInitDeclaratorListright)
++	         end
++))
++ in (LrTable.NT 49,(result,declarationModifiers1left,
++notypeInitDeclaratorList1right),rest671) end
++| (26,(_,(MlyValue.statementlist statementlist,statementlist1left,
++statementlist1right))::rest671) => let val result=
++MlyValue.ostatementlist((seqToList statementlist))
++ in (LrTable.NT 3,(result,statementlist1left,statementlist1right),
++rest671) end
++| (27,rest671) => let val result=MlyValue.ostatementlist(([]))
++ in (LrTable.NT 3,(result,defaultPos,defaultPos),rest671) end
++| (28,(_,(MlyValue.statement statement,statement1left,statement1right)
++)::rest671) => let val result=MlyValue.statementlist((
++singletonSeq statement))
++ in (LrTable.NT 4,(result,statement1left,statement1right),rest671) end
++| (29,(_,(MlyValue.statement statement,_,statement1right))::(_,(
++MlyValue.statementlist statementlist,statementlist1left,_))::rest671)
++ => let val result=MlyValue.statementlist((
++addToSeq(statement, statementlist)))
++ in (LrTable.NT 4,(result,statementlist1left,statement1right),rest671)
++ end
++| (30,(_,(_,_,RCURLYright as RCURLY1right))::_::(_,(
++MlyValue.ostatementlist ostatementlist,_,_))::(_,(
++MlyValue.declarationList declarationList,_,_))::_::(_,(_,LCURLYleft
++ as LCURLY1left,_))::rest671) => let val result=
++MlyValue.compoundStatement((
++markStatement srcMap (Compound ((map Decl (seqToList declarationList)) @ ostatementlist), LCURLYleft, RCURLYright)
++))
++ in (LrTable.NT 5,(result,LCURLY1left,RCURLY1right),rest671) end
++| (31,(_,(_,_,RCURLYright as RCURLY1right))::(_,(
++MlyValue.ostatementlist ostatementlist,_,_))::(_,(_,LCURLYleft as 
++LCURLY1left,_))::rest671) => let val result=MlyValue.compoundStatement
++((
++markStatement srcMap (Compound (ostatementlist), LCURLYleft, RCURLYright)
++))
++ in (LrTable.NT 5,(result,LCURLY1left,RCURLY1right),rest671) end
++| (32,(_,(_,AMP1left,AMP1right))::rest671) => let val result=
++MlyValue.unaryOperator((AddrOf))
++ in (LrTable.NT 9,(result,AMP1left,AMP1right),rest671) end
++| (33,(_,(_,TIMES1left,TIMES1right))::rest671) => let val result=
++MlyValue.unaryOperator((Star))
++ in (LrTable.NT 9,(result,TIMES1left,TIMES1right),rest671) end
++| (34,(_,(_,PLUS1left,PLUS1right))::rest671) => let val result=
++MlyValue.unaryOperator((Uplus))
++ in (LrTable.NT 9,(result,PLUS1left,PLUS1right),rest671) end
++| (35,(_,(_,MINUS1left,MINUS1right))::rest671) => let val result=
++MlyValue.unaryOperator((Negate))
++ in (LrTable.NT 9,(result,MINUS1left,MINUS1right),rest671) end
++| (36,(_,(_,TILDE1left,TILDE1right))::rest671) => let val result=
++MlyValue.unaryOperator((BitNot))
++ in (LrTable.NT 9,(result,TILDE1left,TILDE1right),rest671) end
++| (37,(_,(_,BANG1left,BANG1right))::rest671) => let val result=
++MlyValue.unaryOperator((Not))
++ in (LrTable.NT 9,(result,BANG1left,BANG1right),rest671) end
++| (38,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(
++MlyValue.exprWComma exprWComma1,_,_))::_::(_,(MlyValue.expr expr1,
++expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (QuestionColon(expr1,exprWComma1,expr2),expr1left,expr2right)
++))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (39,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(PlusAssign,expr1,expr2),expr1left,expr2right)
++))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (40,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(MinusAssign,expr1,expr2),expr1left,expr2right)
++))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (41,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(TimesAssign,expr1,expr2),expr1left,expr2right)
++))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (42,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(DivAssign,expr1,expr2),expr1left,expr2right)
++))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (43,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(ModAssign,expr1,expr2),expr1left,expr2right)
++))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (44,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(XorAssign,expr1,expr2),expr1left,expr2right)
++))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (45,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(OrAssign,expr1,expr2),expr1left,expr2right)
++))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (46,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(AndAssign,expr1,expr2),expr1left,expr2right)
++))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (47,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(LshiftAssign,expr1,expr2),expr1left,expr2right)
++))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (48,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(RshiftAssign,expr1,expr2),expr1left,expr2right)
++))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (49,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(Assign,expr1,expr2),expr1left,expr2right)
++))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (50,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(Or,expr1,expr2),expr1left,expr2right)))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (51,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(And,expr1,expr2),expr1left,expr2right)))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (52,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(BitOr,expr1,expr2),expr1left,expr2right))
++)
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (53,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(BitXor,expr1,expr2),expr1left,expr2right)
++))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (54,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(BitAnd,expr1,expr2),expr1left,expr2right)
++))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (55,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(Eq,expr1,expr2),expr1left,expr2right)))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (56,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(Neq,expr1,expr2),expr1left,expr2right)))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (57,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(Lt,expr1,expr2),expr1left,expr2right)))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (58,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(Gt,expr1,expr2),expr1left,expr2right)))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (59,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(Lte,expr1,expr2),expr1left,expr2right)))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (60,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(Gte,expr1,expr2),expr1left,expr2right)))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (61,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(Lshift,expr1,expr2),expr1left,expr2right)
++))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (62,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(Rshift,expr1,expr2),expr1left,expr2right)
++))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (63,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(Plus,expr1,expr2),expr1left,expr2right)))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (64,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(Minus,expr1,expr2),expr1left,expr2right))
++)
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (65,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(Times,expr1,expr2),expr1left,expr2right))
++)
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (66,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(Divide,expr1,expr2),expr1left,expr2right)
++))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (67,(_,(MlyValue.expr expr2,_,expr2right))::_::(_,(MlyValue.expr 
++expr1,expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(Mod,expr1,expr2),expr1left,expr2right)))
++ in (LrTable.NT 6,(result,expr1left,expr2right),rest671) end
++| (68,(_,(_,_,INCright as INC1right))::(_,(MlyValue.expr expr,exprleft
++ as expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Unop(PostInc,expr),exprleft,INCright)))
++ in (LrTable.NT 6,(result,expr1left,INC1right),rest671) end
++| (69,(_,(_,_,DECright as DEC1right))::(_,(MlyValue.expr expr,exprleft
++ as expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Unop(PostDec,expr),exprleft,DECright)))
++ in (LrTable.NT 6,(result,expr1left,DEC1right),rest671) end
++| (70,(_,(MlyValue.expr expr,_,exprright as expr1right))::(_,(_,
++INCleft as INC1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Unop(PreInc,expr),INCleft,exprright)))
++ in (LrTable.NT 6,(result,INC1left,expr1right),rest671) end
++| (71,(_,(MlyValue.expr expr,_,exprright as expr1right))::(_,(_,
++DECleft as DEC1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Unop(PreDec,expr),DECleft,exprright)))
++ in (LrTable.NT 6,(result,DEC1left,expr1right),rest671) end
++| (72,(_,(MlyValue.expr expr,_,exprright as expr1right))::(_,(
++MlyValue.unaryOperator unaryOperator,unaryOperatorleft as 
++unaryOperator1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Unop(unaryOperator,expr),unaryOperatorleft,exprright)
++))
++ in (LrTable.NT 6,(result,unaryOperator1left,expr1right),rest671) end
++| (73,(_,(MlyValue.expr expr,_,exprright as expr1right))::(_,(_,
++SIZEOFleft as SIZEOF1left,_))::rest671) => let val result=
++MlyValue.expr((
++markExpression srcMap (Unop(Sizeof,expr),SIZEOFleft,exprright)))
++ in (LrTable.NT 6,(result,SIZEOF1left,expr1right),rest671) end
++| (74,(_,(MlyValue.expr expr,_,exprright as expr1right))::_::(_,(
++MlyValue.typeName typeName,_,_))::(_,(_,LPARENleft as LPAREN1left,_))
++::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Cast (typeName,expr),LPARENleft,exprright)))
++ in (LrTable.NT 6,(result,LPAREN1left,expr1right),rest671) end
++| (75,(_,(_,_,RPARENright as RPAREN1right))::(_,(MlyValue.typeName 
++typeName,_,_))::_::(_,(_,SIZEOFleft as SIZEOF1left,_))::rest671) => 
++let val result=MlyValue.expr((
++markExpression srcMap (Unop(SizeofType typeName,EmptyExpr),SIZEOFleft,RPARENright)
++))
++ in (LrTable.NT 6,(result,SIZEOF1left,RPAREN1right),rest671) end
++| (76,(_,(_,_,RBRACEright as RBRACE1right))::(_,(MlyValue.exprWComma 
++exprWComma,_,_))::_::(_,(MlyValue.expr expr,exprleft as expr1left,_))
++::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(Sub,expr,exprWComma),exprleft,RBRACEright)
++))
++ in (LrTable.NT 6,(result,expr1left,RBRACE1right),rest671) end
++| (77,(_,(_,_,RPARENright as RPAREN1right))::_::(_,(MlyValue.expr expr
++,exprleft as expr1left,_))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Call(expr,[]),exprleft,RPARENright)))
++ in (LrTable.NT 6,(result,expr1left,RPAREN1right),rest671) end
++| (78,(_,(_,_,RPARENright as RPAREN1right))::(_,(
++MlyValue.argumentExprList argumentExprList,_,_))::_::(_,(MlyValue.expr
++ expr,exprleft as expr1left,_))::rest671) => let val result=
++MlyValue.expr((
++markExpression srcMap (Call(expr, seqToList argumentExprList),exprleft,RPARENright)
++))
++ in (LrTable.NT 6,(result,expr1left,RPAREN1right),rest671) end
++| (79,(_,(MlyValue.ID ID,_,IDright as ID1right))::_::(_,(MlyValue.expr
++ expr,exprleft as expr1left,_))::rest671) => let val result=
++MlyValue.expr((
++markExpression srcMap (Binop(Dot,expr,Id(ID)),exprleft,IDright)))
++ in (LrTable.NT 6,(result,expr1left,ID1right),rest671) end
++| (80,(_,(MlyValue.ID ID,_,IDright as ID1right))::_::(_,(MlyValue.expr
++ expr,exprleft as expr1left,_))::rest671) => let val result=
++MlyValue.expr((
++markExpression srcMap (Binop(Arrow,expr,Id(ID)),exprleft,IDright)))
++ in (LrTable.NT 6,(result,expr1left,ID1right),rest671) end
++| (81,(_,(MlyValue.TYPE_NAME TYPE_NAME,_,TYPE_NAMEright as 
++TYPE_NAME1right))::_::(_,(MlyValue.expr expr,exprleft as expr1left,_))
++::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(Dot,expr,Id(TYPE_NAME)),exprleft,TYPE_NAMEright)
++))
++ in (LrTable.NT 6,(result,expr1left,TYPE_NAME1right),rest671) end
++| (82,(_,(MlyValue.TYPE_NAME TYPE_NAME,_,TYPE_NAMEright as 
++TYPE_NAME1right))::_::(_,(MlyValue.expr expr,exprleft as expr1left,_))
++::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Binop(Arrow,expr,Id(TYPE_NAME)),exprleft,TYPE_NAMEright)
++))
++ in (LrTable.NT 6,(result,expr1left,TYPE_NAME1right),rest671) end
++| (83,(_,(_,_,RPARENright as RPAREN1right))::(_,(MlyValue.exprWComma 
++exprWComma,_,_))::(_,(_,LPARENleft as LPAREN1left,_))::rest671) => 
++let val result=MlyValue.expr((
++markExpression srcMap (exprWComma,LPARENleft,RPARENright)))
++ in (LrTable.NT 6,(result,LPAREN1left,RPAREN1right),rest671) end
++| (84,(_,(MlyValue.DECNUM DECNUM,DECNUMleft as DECNUM1left,DECNUMright
++ as DECNUM1right))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (IntConst DECNUM,DECNUMleft,DECNUMright)))
++ in (LrTable.NT 6,(result,DECNUM1left,DECNUM1right),rest671) end
++| (85,(_,(MlyValue.REALNUM REALNUM,REALNUMleft as REALNUM1left,
++REALNUMright as REALNUM1right))::rest671) => let val result=
++MlyValue.expr((
++markExpression srcMap (RealConst REALNUM, REALNUMleft,REALNUMright)))
++ in (LrTable.NT 6,(result,REALNUM1left,REALNUM1right),rest671) end
++| (86,(_,(MlyValue.CCONST CCONST,CCONSTleft as CCONST1left,CCONSTright
++ as CCONST1right))::rest671) => let val result=MlyValue.expr((
++markExpression srcMap (IntConst CCONST, CCONSTleft,CCONSTright)))
++ in (LrTable.NT 6,(result,CCONST1left,CCONST1right),rest671) end
++| (87,(_,(MlyValue.ID ID,IDleft as ID1left,IDright as ID1right))::
++rest671) => let val result=MlyValue.expr((
++markExpression srcMap (Id(ID), IDleft, IDright)))
++ in (LrTable.NT 6,(result,ID1left,ID1right),rest671) end
++| (88,(_,(MlyValue.strings strings,stringsleft as strings1left,
++stringsright as strings1right))::rest671) => let val result=
++MlyValue.expr((
++markExpression srcMap (String(strings),stringsleft,stringsright)))
++ in (LrTable.NT 6,(result,strings1left,strings1right),rest671) end
++| (89,(_,(MlyValue.STRING STRING,STRING1left,STRING1right))::rest671)
++ => let val result=MlyValue.strings((STRING))
++ in (LrTable.NT 63,(result,STRING1left,STRING1right),rest671) end
++| (90,(_,(MlyValue.strings strings,_,strings1right))::(_,(
++MlyValue.STRING STRING,STRING1left,_))::rest671) => let val result=
++MlyValue.strings((STRING ^ strings))
++ in (LrTable.NT 63,(result,STRING1left,strings1right),rest671) end
++| (91,(_,(MlyValue.expr expr,expr1left,expr1right))::rest671) => let 
++val result=MlyValue.exprWComma((expr))
++ in (LrTable.NT 8,(result,expr1left,expr1right),rest671) end
++| (92,(_,(MlyValue.expr expr,_,exprright as expr1right))::_::(_,(
++MlyValue.exprWComma exprWComma,exprWCommaleft as exprWComma1left,_))::
++rest671) => let val result=MlyValue.exprWComma((
++markExpression srcMap (Binop(Comma,exprWComma,expr),exprWCommaleft,exprright)
++))
++ in (LrTable.NT 8,(result,exprWComma1left,expr1right),rest671) end
++| (93,rest671) => let val result=MlyValue.opExpr((EmptyExpr))
++ in (LrTable.NT 7,(result,defaultPos,defaultPos),rest671) end
++| (94,(_,(MlyValue.exprWComma exprWComma,exprWComma1left,
++exprWComma1right))::rest671) => let val result=MlyValue.opExpr((
++exprWComma))
++ in (LrTable.NT 7,(result,exprWComma1left,exprWComma1right),rest671)
++ end
++| (95,(_,(MlyValue.expr expr,expr1left,expr1right))::rest671) => let 
++val result=MlyValue.argumentExprList((singletonSeq expr))
++ in (LrTable.NT 10,(result,expr1left,expr1right),rest671) end
++| (96,(_,(MlyValue.expr expr,_,expr1right))::_::(_,(
++MlyValue.argumentExprList argumentExprList,argumentExprList1left,_))::
++rest671) => let val result=MlyValue.argumentExprList((
++addToSeq(expr, argumentExprList)))
++ in (LrTable.NT 10,(result,argumentExprList1left,expr1right),rest671)
++ end
++| (97,(_,(MlyValue.specifierQualifierList specifierQualifierList,
++specifierQualifierList1left,specifierQualifierList1right))::rest671)
++ => let val result=MlyValue.typeName((specifierQualifierList))
++ in (LrTable.NT 36,(result,specifierQualifierList1left,
++specifierQualifierList1right),rest671) end
++| (98,(_,(MlyValue.abstractDeclarator abstractDeclarator,_,
++abstractDeclarator1right))::(_,(MlyValue.specifierQualifierList 
++specifierQualifierList,specifierQualifierList1left,_))::rest671) => 
++let val result=MlyValue.typeName((
++#1 (ctypeDecrToTypeName (specifierQualifierList, abstractDeclarator)))
++)
++ in (LrTable.NT 36,(result,specifierQualifierList1left,
++abstractDeclarator1right),rest671) end
++| (99,(_,(MlyValue.reservedDeclarationSpecifier 
++reservedDeclarationSpecifier,_,reservedDeclarationSpecifier1right))::(
++_,(MlyValue.typeSpecifier typeSpecifier,typeSpecifier1left,_))::
++rest671) => let val result=MlyValue.declarationSpecifiers((
++addSpecifier (typeSpecifier,
++						        reservedDeclarationSpecifier)
++))
++ in (LrTable.NT 28,(result,typeSpecifier1left,
++reservedDeclarationSpecifier1right),rest671) end
++| (100,(_,(MlyValue.reservedDeclarationSpecifier 
++reservedDeclarationSpecifier,_,reservedDeclarationSpecifier1right))::(
++_,(MlyValue.typeSpecifier typeSpecifier,_,_))::(_,(
++MlyValue.declarationModifiers declarationModifiers,
++declarationModifiers1left,_))::rest671) => let val result=
++MlyValue.declarationSpecifiers((
++addAll (declarationModifiers,
++                                                  addSpecifier (typeSpecifier,
++							         reservedDeclarationSpecifier))
++))
++ in (LrTable.NT 28,(result,declarationModifiers1left,
++reservedDeclarationSpecifier1right),rest671) end
++| (101,rest671) => let val result=
++MlyValue.reservedDeclarationSpecifier((unknown))
++ in (LrTable.NT 30,(result,defaultPos,defaultPos),rest671) end
++| (102,(_,(MlyValue.specifierQualifierReserved 
++specifierQualifierReserved,_,specifierQualifierReserved1right))::(_,(
++MlyValue.reservedDeclarationSpecifier reservedDeclarationSpecifier,
++reservedDeclarationSpecifier1left,_))::rest671) => let val result=
++MlyValue.reservedDeclarationSpecifier((
++let val {qualifiers,specifiers} = specifierQualifierReserved
++					     val decltype = {qualifiers=qualifiers,specifiers=specifiers,storage=[]}
++	   				 in addAll (decltype, reservedDeclarationSpecifier) end 
++))
++ in (LrTable.NT 30,(result,reservedDeclarationSpecifier1left,
++specifierQualifierReserved1right),rest671) end
++| (103,(_,(MlyValue.storageClassSpecifier storageClassSpecifier,_,
++storageClassSpecifier1right))::(_,(
++MlyValue.reservedDeclarationSpecifier reservedDeclarationSpecifier,
++reservedDeclarationSpecifier1left,_))::rest671) => let val result=
++MlyValue.reservedDeclarationSpecifier((
++addStorage (storageClassSpecifier,
++                                                      reservedDeclarationSpecifier)
++))
++ in (LrTable.NT 30,(result,reservedDeclarationSpecifier1left,
++storageClassSpecifier1right),rest671) end
++| (104,(_,(MlyValue.typeSpecifierReserved typeSpecifierReserved,
++typeSpecifierReserved1left,typeSpecifierReserved1right))::rest671) => 
++let val result=MlyValue.specifierQualifierReserved((
++{qualifiers=[],specifiers=[typeSpecifierReserved]}))
++ in (LrTable.NT 31,(result,typeSpecifierReserved1left,
++typeSpecifierReserved1right),rest671) end
++| (105,(_,(MlyValue.typeQualifier typeQualifier,typeQualifier1left,
++typeQualifier1right))::rest671) => let val result=
++MlyValue.specifierQualifierReserved((
++{qualifiers=[typeQualifier],specifiers=[]}))
++ in (LrTable.NT 31,(result,typeQualifier1left,typeQualifier1right),
++rest671) end
++| (106,(_,(MlyValue.structOrUnionSpecifier structOrUnionSpecifier,
++structOrUnionSpecifier1left,structOrUnionSpecifier1right))::rest671)
++ => let val result=MlyValue.specifierQualifierReserved((
++{qualifiers=[],specifiers=[structOrUnionSpecifier]}))
++ in (LrTable.NT 31,(result,structOrUnionSpecifier1left,
++structOrUnionSpecifier1right),rest671) end
++| (107,(_,(MlyValue.enumSpecifier enumSpecifier,enumSpecifier1left,
++enumSpecifier1right))::rest671) => let val result=
++MlyValue.specifierQualifierReserved((
++{qualifiers=[],specifiers=[enumSpecifier]}))
++ in (LrTable.NT 31,(result,enumSpecifier1left,enumSpecifier1right),
++rest671) end
++| (108,(_,(MlyValue.storageClassSpecifier storageClassSpecifier,
++storageClassSpecifier1left,storageClassSpecifier1right))::rest671) => 
++let val result=MlyValue.declarationModifiers((
++{storage = [storageClassSpecifier],
++					  qualifiers = [],
++					  specifiers = []}
++))
++ in (LrTable.NT 29,(result,storageClassSpecifier1left,
++storageClassSpecifier1right),rest671) end
++| (109,(_,(MlyValue.storageClassSpecifier storageClassSpecifier,_,
++storageClassSpecifier1right))::(_,(MlyValue.declarationModifiers 
++declarationModifiers,declarationModifiers1left,_))::rest671) => let 
++val result=MlyValue.declarationModifiers((
++addStorage(storageClassSpecifier,declarationModifiers)))
++ in (LrTable.NT 29,(result,declarationModifiers1left,
++storageClassSpecifier1right),rest671) end
++| (110,(_,(MlyValue.typeQualifier typeQualifier,typeQualifier1left,
++typeQualifier1right))::rest671) => let val result=
++MlyValue.declarationModifiers((
++{specifiers = [],
++	 				  storage = [], 
++					  qualifiers = [typeQualifier]}
++))
++ in (LrTable.NT 29,(result,typeQualifier1left,typeQualifier1right),
++rest671) end
++| (111,(_,(MlyValue.typeQualifier typeQualifier,_,typeQualifier1right)
++)::(_,(MlyValue.declarationModifiers declarationModifiers,
++declarationModifiers1left,_))::rest671) => let val result=
++MlyValue.declarationModifiers((
++addQualifier(typeQualifier, declarationModifiers)))
++ in (LrTable.NT 29,(result,declarationModifiers1left,
++typeQualifier1right),rest671) end
++| (112,(_,(MlyValue.reservedSpecifierQualifiers 
++reservedSpecifierQualifiers,_,reservedSpecifierQualifiers1right))::(_,
++(MlyValue.typeSpecifier typeSpecifier,typeSpecifier1left,_))::rest671)
++ => let val result=MlyValue.specifierQualifierList((
++let val {specifiers, qualifiers} = reservedSpecifierQualifiers
++	                                 in {specifiers=typeSpecifier::specifiers,qualifiers=qualifiers} end
++))
++ in (LrTable.NT 41,(result,typeSpecifier1left,
++reservedSpecifierQualifiers1right),rest671) end
++| (113,(_,(MlyValue.reservedSpecifierQualifiers 
++reservedSpecifierQualifiers,_,reservedSpecifierQualifiers1right))::(_,
++(MlyValue.typeSpecifier typeSpecifier,_,_))::(_,(
++MlyValue.typeQualifierList typeQualifierList,typeQualifierList1left,_)
++)::rest671) => let val result=MlyValue.specifierQualifierList((
++let val {specifiers, qualifiers} = reservedSpecifierQualifiers
++	                                 in {specifiers=typeSpecifier::specifiers
++					    ,qualifiers=typeQualifierList@qualifiers
++                                            }
++                                         end
++))
++ in (LrTable.NT 41,(result,typeQualifierList1left,
++reservedSpecifierQualifiers1right),rest671) end
++| (114,rest671) => let val result=MlyValue.reservedSpecifierQualifiers
++(({qualifiers=[],specifiers=[]}))
++ in (LrTable.NT 32,(result,defaultPos,defaultPos),rest671) end
++| (115,(_,(MlyValue.specifierQualifierReserved 
++specifierQualifierReserved,_,specifierQualifierReserved1right))::(_,(
++MlyValue.reservedSpecifierQualifiers reservedSpecifierQualifiers,
++reservedSpecifierQualifiers1left,_))::rest671) => let val result=
++MlyValue.reservedSpecifierQualifiers((
++let val {specifiers=s1, qualifiers=q1} = reservedSpecifierQualifiers
++					     val {specifiers=s2, qualifiers=q2} = specifierQualifierReserved
++	                                 in {specifiers=s1@s2, qualifiers=q1@q2} end
++))
++ in (LrTable.NT 32,(result,reservedSpecifierQualifiers1left,
++specifierQualifierReserved1right),rest671) end
++| (116,(_,(MlyValue.typeQualifier typeQualifier,typeQualifier1left,
++typeQualifier1right))::rest671) => let val result=
++MlyValue.typeQualifierList(([typeQualifier]))
++ in (LrTable.NT 40,(result,typeQualifier1left,typeQualifier1right),
++rest671) end
++| (117,(_,(MlyValue.typeQualifierList typeQualifierList,_,
++typeQualifierList1right))::(_,(MlyValue.typeQualifier typeQualifier,
++typeQualifier1left,_))::rest671) => let val result=
++MlyValue.typeQualifierList((typeQualifier::typeQualifierList))
++ in (LrTable.NT 40,(result,typeQualifier1left,typeQualifierList1right)
++,rest671) end
++| (118,(_,(MlyValue.typeSpecifierReserved typeSpecifierReserved,
++typeSpecifierReserved1left,typeSpecifierReserved1right))::rest671) => 
++let val result=MlyValue.typeSpecifier((typeSpecifierReserved))
++ in (LrTable.NT 37,(result,typeSpecifierReserved1left,
++typeSpecifierReserved1right),rest671) end
++| (119,(_,(MlyValue.structOrUnionSpecifier structOrUnionSpecifier,
++structOrUnionSpecifier1left,structOrUnionSpecifier1right))::rest671)
++ => let val result=MlyValue.typeSpecifier((structOrUnionSpecifier))
++ in (LrTable.NT 37,(result,structOrUnionSpecifier1left,
++structOrUnionSpecifier1right),rest671) end
++| (120,(_,(MlyValue.enumSpecifier enumSpecifier,enumSpecifier1left,
++enumSpecifier1right))::rest671) => let val result=
++MlyValue.typeSpecifier((enumSpecifier))
++ in (LrTable.NT 37,(result,enumSpecifier1left,enumSpecifier1right),
++rest671) end
++| (121,(_,(MlyValue.TYPE_NAME TYPE_NAME,TYPE_NAME1left,TYPE_NAME1right
++))::rest671) => let val result=MlyValue.typeSpecifier((
++TypedefName TYPE_NAME))
++ in (LrTable.NT 37,(result,TYPE_NAME1left,TYPE_NAME1right),rest671)
++ end
++| (122,(_,(_,VOID1left,VOID1right))::rest671) => let val result=
++MlyValue.typeSpecifierReserved((Void))
++ in (LrTable.NT 38,(result,VOID1left,VOID1right),rest671) end
++| (123,(_,(_,CHAR1left,CHAR1right))::rest671) => let val result=
++MlyValue.typeSpecifierReserved((Char))
++ in (LrTable.NT 38,(result,CHAR1left,CHAR1right),rest671) end
++| (124,(_,(_,SHORT1left,SHORT1right))::rest671) => let val result=
++MlyValue.typeSpecifierReserved((Short))
++ in (LrTable.NT 38,(result,SHORT1left,SHORT1right),rest671) end
++| (125,(_,(_,INT1left,INT1right))::rest671) => let val result=
++MlyValue.typeSpecifierReserved((Int))
++ in (LrTable.NT 38,(result,INT1left,INT1right),rest671) end
++| (126,(_,(_,LONG1left,LONG1right))::rest671) => let val result=
++MlyValue.typeSpecifierReserved((Long))
++ in (LrTable.NT 38,(result,LONG1left,LONG1right),rest671) end
++| (127,(_,(_,FLOAT1left,FLOAT1right))::rest671) => let val result=
++MlyValue.typeSpecifierReserved((Float))
++ in (LrTable.NT 38,(result,FLOAT1left,FLOAT1right),rest671) end
++| (128,(_,(_,DOUBLE1left,DOUBLE1right))::rest671) => let val result=
++MlyValue.typeSpecifierReserved((Double))
++ in (LrTable.NT 38,(result,DOUBLE1left,DOUBLE1right),rest671) end
++| (129,(_,(_,SIGNED1left,SIGNED1right))::rest671) => let val result=
++MlyValue.typeSpecifierReserved((Signed))
++ in (LrTable.NT 38,(result,SIGNED1left,SIGNED1right),rest671) end
++| (130,(_,(_,UNSIGNED1left,UNSIGNED1right))::rest671) => let val 
++result=MlyValue.typeSpecifierReserved((Unsigned))
++ in (LrTable.NT 38,(result,UNSIGNED1left,UNSIGNED1right),rest671) end
++| (131,(_,(_,_,RCURLY1right))::(_,(MlyValue.structDeclarationList 
++structDeclarationList,_,_))::_::(_,(MlyValue.structOrUnion 
++structOrUnion,structOrUnion1left,_))::rest671) => let val result=
++MlyValue.structOrUnionSpecifier((
++Struct{isStruct=structOrUnion, tagOpt=NONE, members=seqToList structDeclarationList}
++))
++ in (LrTable.NT 43,(result,structOrUnion1left,RCURLY1right),rest671)
++ end
++| (132,(_,(_,_,RCURLY1right))::(_,(MlyValue.structDeclarationList 
++structDeclarationList,_,_))::_::(_,(MlyValue.ID ID,_,_))::(_,(
++MlyValue.structOrUnion structOrUnion,structOrUnion1left,_))::rest671)
++ => let val result=MlyValue.structOrUnionSpecifier((
++Struct{isStruct=structOrUnion, tagOpt=SOME ID, members=seqToList structDeclarationList}
++))
++ in (LrTable.NT 43,(result,structOrUnion1left,RCURLY1right),rest671)
++ end
++| (133,(_,(_,_,RCURLY1right))::(_,(MlyValue.structDeclarationList 
++structDeclarationList,_,_))::_::(_,(MlyValue.TYPE_NAME TYPE_NAME,_,_))
++::(_,(MlyValue.structOrUnion structOrUnion,structOrUnion1left,_))::
++rest671) => let val result=MlyValue.structOrUnionSpecifier((
++Struct{isStruct=structOrUnion, tagOpt=SOME TYPE_NAME, members=seqToList structDeclarationList}
++))
++ in (LrTable.NT 43,(result,structOrUnion1left,RCURLY1right),rest671)
++ end
++| (134,(_,(MlyValue.ID ID,_,ID1right))::(_,(MlyValue.structOrUnion 
++structOrUnion,structOrUnion1left,_))::rest671) => let val result=
++MlyValue.structOrUnionSpecifier((
++StructTag {isStruct=structOrUnion, name=ID}))
++ in (LrTable.NT 43,(result,structOrUnion1left,ID1right),rest671) end
++| (135,(_,(MlyValue.TYPE_NAME TYPE_NAME,_,TYPE_NAME1right))::(_,(
++MlyValue.structOrUnion structOrUnion,structOrUnion1left,_))::rest671)
++ => let val result=MlyValue.structOrUnionSpecifier((
++StructTag {isStruct=structOrUnion, name=TYPE_NAME}))
++ in (LrTable.NT 43,(result,structOrUnion1left,TYPE_NAME1right),rest671
++) end
++| (136,(_,(_,STRUCT1left,STRUCT1right))::rest671) => let val result=
++MlyValue.structOrUnion((true))
++ in (LrTable.NT 54,(result,STRUCT1left,STRUCT1right),rest671) end
++| (137,(_,(_,UNION1left,UNION1right))::rest671) => let val result=
++MlyValue.structOrUnion((false))
++ in (LrTable.NT 54,(result,UNION1left,UNION1right),rest671) end
++| (138,(_,(MlyValue.structDeclaration structDeclaration,
++structDeclaration1left,structDeclaration1right))::rest671) => let val 
++result=MlyValue.structDeclarationList((singletonSeq structDeclaration)
++)
++ in (LrTable.NT 59,(result,structDeclaration1left,
++structDeclaration1right),rest671) end
++| (139,(_,(MlyValue.structDeclaration structDeclaration,_,
++structDeclaration1right))::(_,(MlyValue.structDeclarationList 
++structDeclarationList,structDeclarationList1left,_))::rest671) => let 
++val result=MlyValue.structDeclarationList((
++addToSeq(structDeclaration, structDeclarationList)))
++ in (LrTable.NT 59,(result,structDeclarationList1left,
++structDeclaration1right),rest671) end
++| (140,(_,(_,_,SEMICOLON1right))::(_,(MlyValue.structDeclaratorList 
++structDeclaratorList,_,_))::(_,(MlyValue.specifierQualifierList 
++specifierQualifierList,specifierQualifierList1left,_))::rest671) => 
++let val result=MlyValue.structDeclaration((
++(specifierQualifierList, seqToList structDeclaratorList)))
++ in (LrTable.NT 60,(result,specifierQualifierList1left,SEMICOLON1right
++),rest671) end
++| (141,(_,(_,_,SEMICOLON1right))::(_,(
++MlyValue.notypeStructDeclaratorList notypeStructDeclaratorList,_,_))::
++(_,(MlyValue.typeQualifierList typeQualifierList,
++typeQualifierList1left,_))::rest671) => let val result=
++MlyValue.structDeclaration((
++let
++					    val ct = {qualifiers=typeQualifierList, specifiers=[]}
++					 in
++					   (ct, seqToList notypeStructDeclaratorList)
++					 end
++))
++ in (LrTable.NT 60,(result,typeQualifierList1left,SEMICOLON1right),
++rest671) end
++| (142,(_,(MlyValue.structDeclarator structDeclarator,
++structDeclarator1left,structDeclarator1right))::rest671) => let val 
++result=MlyValue.structDeclaratorList((singletonSeq structDeclarator))
++ in (LrTable.NT 57,(result,structDeclarator1left,
++structDeclarator1right),rest671) end
++| (143,(_,(MlyValue.structDeclarator structDeclarator,_,
++structDeclarator1right))::_::(_,(MlyValue.structDeclaratorList 
++structDeclaratorList,structDeclaratorList1left,_))::rest671) => let 
++val result=MlyValue.structDeclaratorList((
++addToSeq(structDeclarator, structDeclaratorList)))
++ in (LrTable.NT 57,(result,structDeclaratorList1left,
++structDeclarator1right),rest671) end
++| (144,(_,(MlyValue.notypeStructDeclarator notypeStructDeclarator,
++notypeStructDeclarator1left,notypeStructDeclarator1right))::rest671)
++ => let val result=MlyValue.notypeStructDeclaratorList((
++singletonSeq notypeStructDeclarator))
++ in (LrTable.NT 58,(result,notypeStructDeclarator1left,
++notypeStructDeclarator1right),rest671) end
++| (145,(_,(MlyValue.structDeclarator structDeclarator,_,
++structDeclarator1right))::_::(_,(MlyValue.notypeStructDeclaratorList 
++notypeStructDeclaratorList,notypeStructDeclaratorList1left,_))::
++rest671) => let val result=MlyValue.notypeStructDeclaratorList((
++addToSeq(structDeclarator, notypeStructDeclaratorList)))
++ in (LrTable.NT 58,(result,notypeStructDeclaratorList1left,
++structDeclarator1right),rest671) end
++| (146,(_,(MlyValue.declarator declarator,declarator1left,
++declarator1right))::rest671) => let val result=
++MlyValue.structDeclarator((declarator, EmptyExpr))
++ in (LrTable.NT 55,(result,declarator1left,declarator1right),rest671)
++ end
++| (147,(_,(MlyValue.expr expr,_,expr1right))::(_,(_,COLON1left,_))::
++rest671) => let val result=MlyValue.structDeclarator((EmptyDecr, expr)
++)
++ in (LrTable.NT 55,(result,COLON1left,expr1right),rest671) end
++| (148,(_,(MlyValue.expr expr,_,expr1right))::_::(_,(
++MlyValue.declarator declarator,declarator1left,_))::rest671) => let 
++val result=MlyValue.structDeclarator((declarator, expr))
++ in (LrTable.NT 55,(result,declarator1left,expr1right),rest671) end
++| (149,(_,(MlyValue.notypeDeclarator notypeDeclarator,
++notypeDeclarator1left,notypeDeclarator1right))::rest671) => let val 
++result=MlyValue.notypeStructDeclarator((notypeDeclarator, EmptyExpr))
++ in (LrTable.NT 56,(result,notypeDeclarator1left,
++notypeDeclarator1right),rest671) end
++| (150,(_,(MlyValue.expr expr,_,expr1right))::(_,(_,COLON1left,_))::
++rest671) => let val result=MlyValue.notypeStructDeclarator((
++EmptyDecr, expr))
++ in (LrTable.NT 56,(result,COLON1left,expr1right),rest671) end
++| (151,(_,(MlyValue.expr expr,_,expr1right))::_::(_,(
++MlyValue.notypeDeclarator notypeDeclarator,notypeDeclarator1left,_))::
++rest671) => let val result=MlyValue.notypeStructDeclarator((
++notypeDeclarator, expr))
++ in (LrTable.NT 56,(result,notypeDeclarator1left,expr1right),rest671)
++ end
++| (152,(_,(_,CONST1left,CONST1right))::rest671) => let val result=
++MlyValue.typeQualifier((CONST))
++ in (LrTable.NT 39,(result,CONST1left,CONST1right),rest671) end
++| (153,(_,(_,VOLATILE1left,VOLATILE1right))::rest671) => let val 
++result=MlyValue.typeQualifier((VOLATILE))
++ in (LrTable.NT 39,(result,VOLATILE1left,VOLATILE1right),rest671) end
++| (154,(_,(_,_,RCURLY1right))::(_,(MlyValue.trailingComma 
++trailingComma,_,_))::(_,(MlyValue.enumeratorList enumeratorList,_,_))
++::_::(_,(_,ENUM1left,_))::rest671) => let val result=
++MlyValue.enumSpecifier((
++Enum{tagOpt=NONE, enumerators=seqToList enumeratorList, trailingComma=trailingComma}
++))
++ in (LrTable.NT 42,(result,ENUM1left,RCURLY1right),rest671) end
++| (155,(_,(_,_,RCURLY1right))::(_,(MlyValue.trailingComma 
++trailingComma,_,_))::(_,(MlyValue.enumeratorList enumeratorList,_,_))
++::_::(_,(MlyValue.ID ID,_,_))::(_,(_,ENUM1left,_))::rest671) => let 
++val result=MlyValue.enumSpecifier((
++Enum{tagOpt=SOME(ID), enumerators=seqToList enumeratorList, trailingComma=trailingComma}
++))
++ in (LrTable.NT 42,(result,ENUM1left,RCURLY1right),rest671) end
++| (156,(_,(_,_,RCURLY1right))::(_,(MlyValue.trailingComma 
++trailingComma,_,_))::(_,(MlyValue.enumeratorList enumeratorList,_,_))
++::_::(_,(MlyValue.TYPE_NAME TYPE_NAME,_,_))::(_,(_,ENUM1left,_))::
++rest671) => let val result=MlyValue.enumSpecifier((
++Enum{tagOpt=SOME(TYPE_NAME), enumerators=seqToList enumeratorList, trailingComma=trailingComma}
++))
++ in (LrTable.NT 42,(result,ENUM1left,RCURLY1right),rest671) end
++| (157,(_,(MlyValue.ID ID,_,ID1right))::(_,(_,ENUM1left,_))::rest671)
++ => let val result=MlyValue.enumSpecifier((EnumTag(ID)))
++ in (LrTable.NT 42,(result,ENUM1left,ID1right),rest671) end
++| (158,(_,(MlyValue.TYPE_NAME TYPE_NAME,_,TYPE_NAME1right))::(_,(_,
++ENUM1left,_))::rest671) => let val result=MlyValue.enumSpecifier((
++EnumTag(TYPE_NAME)))
++ in (LrTable.NT 42,(result,ENUM1left,TYPE_NAME1right),rest671) end
++| (159,(_,(MlyValue.enumerator enumerator,_,enumerator1right))::_::(_,
++(MlyValue.enumeratorList enumeratorList,enumeratorList1left,_))::
++rest671) => let val result=MlyValue.enumeratorList((
++addToSeq(enumerator, enumeratorList)))
++ in (LrTable.NT 12,(result,enumeratorList1left,enumerator1right),
++rest671) end
++| (160,(_,(MlyValue.enumerator enumerator,enumerator1left,
++enumerator1right))::rest671) => let val result=MlyValue.enumeratorList
++(((TypeDefs.addNoTdef(#1(enumerator)));
++					 singletonSeq enumerator)
++)
++ in (LrTable.NT 12,(result,enumerator1left,enumerator1right),rest671)
++ end
++| (161,(_,(MlyValue.ID ID,ID1left,ID1right))::rest671) => let val 
++result=MlyValue.enumerator(((ID,ParseTree.EmptyExpr)))
++ in (LrTable.NT 13,(result,ID1left,ID1right),rest671) end
++| (162,(_,(MlyValue.expr expr,_,expr1right))::_::(_,(MlyValue.ID ID,
++ID1left,_))::rest671) => let val result=MlyValue.enumerator((ID,expr))
++ in (LrTable.NT 13,(result,ID1left,expr1right),rest671) end
++| (163,(_,(_,EXTERN1left,EXTERN1right))::rest671) => let val result=
++MlyValue.storageClassSpecifier((EXTERN))
++ in (LrTable.NT 35,(result,EXTERN1left,EXTERN1right),rest671) end
++| (164,(_,(_,STATIC1left,STATIC1right))::rest671) => let val result=
++MlyValue.storageClassSpecifier((STATIC))
++ in (LrTable.NT 35,(result,STATIC1left,STATIC1right),rest671) end
++| (165,(_,(_,AUTO1left,AUTO1right))::rest671) => let val result=
++MlyValue.storageClassSpecifier((AUTO))
++ in (LrTable.NT 35,(result,AUTO1left,AUTO1right),rest671) end
++| (166,(_,(_,REGISTER1left,REGISTER1right))::rest671) => let val 
++result=MlyValue.storageClassSpecifier((REGISTER))
++ in (LrTable.NT 35,(result,REGISTER1left,REGISTER1right),rest671) end
++| (167,(_,(_,TYPEDEF1left,TYPEDEF1right))::rest671) => let val result=
++MlyValue.storageClassSpecifier((TYPEDEF))
++ in (LrTable.NT 35,(result,TYPEDEF1left,TYPEDEF1right),rest671) end
++| (168,rest671) => let val result=MlyValue.trailingComma((false))
++ in (LrTable.NT 11,(result,defaultPos,defaultPos),rest671) end
++| (169,(_,(_,COMMA1left,COMMA1right))::rest671) => let val result=
++MlyValue.trailingComma((true))
++ in (LrTable.NT 11,(result,COMMA1left,COMMA1right),rest671) end
++| (170,(_,(MlyValue.initDeclarator initDeclarator,initDeclarator1left,
++initDeclarator1right))::rest671) => let val result=
++MlyValue.initDeclaratorList((singletonSeq initDeclarator))
++ in (LrTable.NT 18,(result,initDeclarator1left,initDeclarator1right),
++rest671) end
++| (171,(_,(MlyValue.initDeclarator initDeclarator,_,
++initDeclarator1right))::_::(_,(MlyValue.initDeclaratorList 
++initDeclaratorList,initDeclaratorList1left,_))::rest671) => let val 
++result=MlyValue.initDeclaratorList((
++addToSeq(initDeclarator, initDeclaratorList)))
++ in (LrTable.NT 18,(result,initDeclaratorList1left,
++initDeclarator1right),rest671) end
++| (172,(_,(MlyValue.declarator declarator,declarator1left,
++declarator1right))::rest671) => let val result=MlyValue.initDeclarator
++(((declarator,EmptyExpr)))
++ in (LrTable.NT 16,(result,declarator1left,declarator1right),rest671)
++ end
++| (173,(_,(MlyValue.initializer initializer,_,initializer1right))::_::
++(_,(MlyValue.declarator declarator,declarator1left,_))::rest671) => 
++let val result=MlyValue.initDeclarator((declarator,initializer))
++ in (LrTable.NT 16,(result,declarator1left,initializer1right),rest671)
++ end
++| (174,(_,(MlyValue.notypeInitDeclarator notypeInitDeclarator,
++notypeInitDeclarator1left,notypeInitDeclarator1right))::rest671) => 
++let val result=MlyValue.notypeInitDeclaratorList((
++singletonSeq notypeInitDeclarator))
++ in (LrTable.NT 19,(result,notypeInitDeclarator1left,
++notypeInitDeclarator1right),rest671) end
++| (175,(_,(MlyValue.initDeclarator initDeclarator,_,
++initDeclarator1right))::_::(_,(MlyValue.notypeInitDeclaratorList 
++notypeInitDeclaratorList,notypeInitDeclaratorList1left,_))::rest671)
++ => let val result=MlyValue.notypeInitDeclaratorList((
++addToSeq(initDeclarator, notypeInitDeclaratorList)))
++ in (LrTable.NT 19,(result,notypeInitDeclaratorList1left,
++initDeclarator1right),rest671) end
++| (176,(_,(MlyValue.notypeDeclarator notypeDeclarator,
++notypeDeclarator1left,notypeDeclarator1right))::rest671) => let val 
++result=MlyValue.notypeInitDeclarator(((notypeDeclarator,EmptyExpr)))
++ in (LrTable.NT 17,(result,notypeDeclarator1left,
++notypeDeclarator1right),rest671) end
++| (177,(_,(MlyValue.initializer initializer,_,initializer1right))::_::
++(_,(MlyValue.notypeDeclarator notypeDeclarator,notypeDeclarator1left,_
++))::rest671) => let val result=MlyValue.notypeInitDeclarator((
++notypeDeclarator,initializer))
++ in (LrTable.NT 17,(result,notypeDeclarator1left,initializer1right),
++rest671) end
++| (178,(_,(MlyValue.aftertypeDeclarator aftertypeDeclarator,
++aftertypeDeclarator1left,aftertypeDeclarator1right))::rest671) => let 
++val result=MlyValue.declarator((aftertypeDeclarator))
++ in (LrTable.NT 21,(result,aftertypeDeclarator1left,
++aftertypeDeclarator1right),rest671) end
++| (179,(_,(MlyValue.notypeDeclarator notypeDeclarator,
++notypeDeclarator1left,notypeDeclarator1right))::rest671) => let val 
++result=MlyValue.declarator((notypeDeclarator))
++ in (LrTable.NT 21,(result,notypeDeclarator1left,
++notypeDeclarator1right),rest671) end
++| (180,(_,(MlyValue.aftertypeDirectDeclarator 
++aftertypeDirectDeclarator,aftertypeDirectDeclarator1left,
++aftertypeDirectDeclarator1right))::rest671) => let val result=
++MlyValue.aftertypeDeclarator((aftertypeDirectDeclarator))
++ in (LrTable.NT 22,(result,aftertypeDirectDeclarator1left,
++aftertypeDirectDeclarator1right),rest671) end
++| (181,(_,(MlyValue.aftertypeDirectDeclarator 
++aftertypeDirectDeclarator,_,aftertypeDirectDeclarator1right))::(_,(
++MlyValue.pointer pointer,pointer1left,_))::rest671) => let val result=
++MlyValue.aftertypeDeclarator((
++applyPointer(pointer,aftertypeDirectDeclarator)))
++ in (LrTable.NT 22,(result,pointer1left,
++aftertypeDirectDeclarator1right),rest671) end
++| (182,(_,(MlyValue.notypeDirectDeclarator notypeDirectDeclarator,
++notypeDirectDeclarator1left,notypeDirectDeclarator1right))::rest671)
++ => let val result=MlyValue.notypeDeclarator((notypeDirectDeclarator))
++ in (LrTable.NT 23,(result,notypeDirectDeclarator1left,
++notypeDirectDeclarator1right),rest671) end
++| (183,(_,(MlyValue.notypeDirectDeclarator notypeDirectDeclarator,_,
++notypeDirectDeclarator1right))::(_,(MlyValue.pointer pointer,
++pointer1left,_))::rest671) => let val result=MlyValue.notypeDeclarator
++((applyPointer(pointer, notypeDirectDeclarator)))
++ in (LrTable.NT 23,(result,pointer1left,notypeDirectDeclarator1right),
++rest671) end
++| (184,(_,(MlyValue.parmDirectDeclarator parmDirectDeclarator,
++parmDirectDeclarator1left,parmDirectDeclarator1right))::rest671) => 
++let val result=MlyValue.parmDeclarator((parmDirectDeclarator))
++ in (LrTable.NT 24,(result,parmDirectDeclarator1left,
++parmDirectDeclarator1right),rest671) end
++| (185,(_,(MlyValue.parmDirectDeclarator parmDirectDeclarator,_,
++parmDirectDeclarator1right))::(_,(MlyValue.pointer pointer,
++pointer1left,_))::rest671) => let val result=MlyValue.parmDeclarator((
++applyPointer(pointer, parmDirectDeclarator)))
++ in (LrTable.NT 24,(result,pointer1left,parmDirectDeclarator1right),
++rest671) end
++| (186,(_,(_,TIMES1left,TIMES1right))::rest671) => let val result=
++MlyValue.pointer((PointerDecr(EmptyDecr)))
++ in (LrTable.NT 20,(result,TIMES1left,TIMES1right),rest671) end
++| (187,(_,(MlyValue.typeQualifierList typeQualifierList,_,
++typeQualifierList1right))::(_,(_,TIMES1left,_))::rest671) => let val 
++result=MlyValue.pointer((
++PointerDecr(loopQd(typeQualifierList,EmptyDecr))))
++ in (LrTable.NT 20,(result,TIMES1left,typeQualifierList1right),rest671
++) end
++| (188,(_,(MlyValue.pointer pointer,_,pointer1right))::(_,(_,
++TIMES1left,_))::rest671) => let val result=MlyValue.pointer((
++PointerDecr(pointer)))
++ in (LrTable.NT 20,(result,TIMES1left,pointer1right),rest671) end
++| (189,(_,(MlyValue.pointer pointer,_,pointer1right))::(_,(
++MlyValue.typeQualifierList typeQualifierList,_,_))::(_,(_,TIMES1left,_
++))::rest671) => let val result=MlyValue.pointer((
++PointerDecr(loopQd(typeQualifierList,pointer))))
++ in (LrTable.NT 20,(result,TIMES1left,pointer1right),rest671) end
++| (190,(_,(MlyValue.TYPE_NAME TYPE_NAME,TYPE_NAMEleft as 
++TYPE_NAME1left,TYPE_NAMEright as TYPE_NAME1right))::rest671) => let 
++val result=MlyValue.aftertypeDirectDeclarator((
++markDeclarator srcMap (VarDecr TYPE_NAME,TYPE_NAMEleft,TYPE_NAMEright)
++))
++ in (LrTable.NT 25,(result,TYPE_NAME1left,TYPE_NAME1right),rest671)
++ end
++| (191,(_,(_,_,RPAREN1right))::(_,(MlyValue.aftertypeDeclarator 
++aftertypeDeclarator,_,_))::(_,(_,LPAREN1left,_))::rest671) => let val 
++result=MlyValue.aftertypeDirectDeclarator((aftertypeDeclarator))
++ in (LrTable.NT 25,(result,LPAREN1left,RPAREN1right),rest671) end
++| (192,(_,(_,_,RBRACE1right))::_::(_,(
++MlyValue.aftertypeDirectDeclarator aftertypeDirectDeclarator,
++aftertypeDirectDeclarator1left,_))::rest671) => let val result=
++MlyValue.aftertypeDirectDeclarator((
++ArrayDecr (aftertypeDirectDeclarator,EmptyExpr)))
++ in (LrTable.NT 25,(result,aftertypeDirectDeclarator1left,RBRACE1right
++),rest671) end
++| (193,(_,(_,_,RBRACE1right))::(_,(MlyValue.expr expr,_,_))::_::(_,(
++MlyValue.aftertypeDirectDeclarator aftertypeDirectDeclarator,
++aftertypeDirectDeclarator1left,_))::rest671) => let val result=
++MlyValue.aftertypeDirectDeclarator((
++ArrayDecr (aftertypeDirectDeclarator,expr)))
++ in (LrTable.NT 25,(result,aftertypeDirectDeclarator1left,RBRACE1right
++),rest671) end
++| (194,(_,(_,_,RPAREN1right))::_::(_,(
++MlyValue.aftertypeDirectDeclarator aftertypeDirectDeclarator,
++aftertypeDirectDeclarator1left,_))::rest671) => let val result=
++MlyValue.aftertypeDirectDeclarator((
++FuncDecr (aftertypeDirectDeclarator,nil)))
++ in (LrTable.NT 25,(result,aftertypeDirectDeclarator1left,RPAREN1right
++),rest671) end
++| (195,(_,(_,_,RPAREN1right))::(_,(MlyValue.parameterTypeList 
++parameterTypeList,_,_))::_::(_,(MlyValue.aftertypeDirectDeclarator 
++aftertypeDirectDeclarator,aftertypeDirectDeclarator1left,_))::rest671)
++ => let val result=MlyValue.aftertypeDirectDeclarator((
++FuncDecr (aftertypeDirectDeclarator,parameterTypeList)))
++ in (LrTable.NT 25,(result,aftertypeDirectDeclarator1left,RPAREN1right
++),rest671) end
++| (196,(_,(_,_,RPAREN1right))::(_,(MlyValue.identlist identlist,_,_))
++::_::(_,(MlyValue.aftertypeDirectDeclarator aftertypeDirectDeclarator,
++aftertypeDirectDeclarator1left,_))::rest671) => let val result=
++MlyValue.aftertypeDirectDeclarator((
++FuncDecr (aftertypeDirectDeclarator,
++					    map (fn (x,y,z) => (unknown,markDeclarator srcMap (VarDecr x,y,z))) (seqToList identlist))
++))
++ in (LrTable.NT 25,(result,aftertypeDirectDeclarator1left,RPAREN1right
++),rest671) end
++| (197,(_,(MlyValue.ID ID,IDleft as ID1left,IDright as ID1right))::
++rest671) => let val result=MlyValue.notypeDirectDeclarator((
++markDeclarator srcMap (VarDecr ID,IDleft,IDright)))
++ in (LrTable.NT 26,(result,ID1left,ID1right),rest671) end
++| (198,(_,(_,_,RPAREN1right))::(_,(MlyValue.notypeDeclarator 
++notypeDeclarator,_,_))::(_,(_,LPAREN1left,_))::rest671) => let val 
++result=MlyValue.notypeDirectDeclarator((notypeDeclarator))
++ in (LrTable.NT 26,(result,LPAREN1left,RPAREN1right),rest671) end
++| (199,(_,(_,_,RBRACE1right))::_::(_,(MlyValue.notypeDirectDeclarator 
++notypeDirectDeclarator,notypeDirectDeclarator1left,_))::rest671) => 
++let val result=MlyValue.notypeDirectDeclarator((
++ArrayDecr (notypeDirectDeclarator,EmptyExpr)))
++ in (LrTable.NT 26,(result,notypeDirectDeclarator1left,RBRACE1right),
++rest671) end
++| (200,(_,(_,_,RBRACE1right))::(_,(MlyValue.expr expr,_,_))::_::(_,(
++MlyValue.notypeDirectDeclarator notypeDirectDeclarator,
++notypeDirectDeclarator1left,_))::rest671) => let val result=
++MlyValue.notypeDirectDeclarator((
++ArrayDecr (notypeDirectDeclarator,expr)))
++ in (LrTable.NT 26,(result,notypeDirectDeclarator1left,RBRACE1right),
++rest671) end
++| (201,(_,(_,_,RPAREN1right))::_::(_,(MlyValue.notypeDirectDeclarator 
++notypeDirectDeclarator,notypeDirectDeclarator1left,_))::rest671) => 
++let val result=MlyValue.notypeDirectDeclarator((
++FuncDecr (notypeDirectDeclarator,nil)))
++ in (LrTable.NT 26,(result,notypeDirectDeclarator1left,RPAREN1right),
++rest671) end
++| (202,(_,(_,_,RPAREN1right))::(_,(MlyValue.parameterTypeList 
++parameterTypeList,_,_))::_::(_,(MlyValue.notypeDirectDeclarator 
++notypeDirectDeclarator,notypeDirectDeclarator1left,_))::rest671) => 
++let val result=MlyValue.notypeDirectDeclarator((
++FuncDecr (notypeDirectDeclarator,parameterTypeList)))
++ in (LrTable.NT 26,(result,notypeDirectDeclarator1left,RPAREN1right),
++rest671) end
++| (203,(_,(_,_,RPAREN1right))::(_,(MlyValue.identlist identlist,_,_))
++::_::(_,(MlyValue.notypeDirectDeclarator notypeDirectDeclarator,
++notypeDirectDeclarator1left,_))::rest671) => let val result=
++MlyValue.notypeDirectDeclarator((
++FuncDecr (notypeDirectDeclarator,
++ 						   map (fn (x,y,z) => (unknown,markDeclarator srcMap (VarDecr x,y,z))) (seqToList identlist))
++))
++ in (LrTable.NT 26,(result,notypeDirectDeclarator1left,RPAREN1right),
++rest671) end
++| (204,(_,(MlyValue.TYPE_NAME TYPE_NAME,TYPE_NAMEleft as 
++TYPE_NAME1left,TYPE_NAMEright as TYPE_NAME1right))::rest671) => let 
++val result=MlyValue.parmDirectDeclarator((
++markDeclarator srcMap (VarDecr TYPE_NAME,TYPE_NAMEleft,TYPE_NAMEright)
++))
++ in (LrTable.NT 27,(result,TYPE_NAME1left,TYPE_NAME1right),rest671)
++ end
++| (205,(_,(_,_,RBRACE1right))::_::(_,(MlyValue.parmDirectDeclarator 
++parmDirectDeclarator,parmDirectDeclarator1left,_))::rest671) => let 
++val result=MlyValue.parmDirectDeclarator((
++ArrayDecr (parmDirectDeclarator,EmptyExpr)))
++ in (LrTable.NT 27,(result,parmDirectDeclarator1left,RBRACE1right),
++rest671) end
++| (206,(_,(_,_,RBRACE1right))::(_,(MlyValue.expr expr,_,_))::_::(_,(
++MlyValue.parmDirectDeclarator parmDirectDeclarator,
++parmDirectDeclarator1left,_))::rest671) => let val result=
++MlyValue.parmDirectDeclarator((ArrayDecr (parmDirectDeclarator,expr)))
++ in (LrTable.NT 27,(result,parmDirectDeclarator1left,RBRACE1right),
++rest671) end
++| (207,(_,(_,_,RPAREN1right))::_::(_,(MlyValue.parmDirectDeclarator 
++parmDirectDeclarator,parmDirectDeclarator1left,_))::rest671) => let 
++val result=MlyValue.parmDirectDeclarator((
++FuncDecr (parmDirectDeclarator,nil)))
++ in (LrTable.NT 27,(result,parmDirectDeclarator1left,RPAREN1right),
++rest671) end
++| (208,(_,(_,_,RPAREN1right))::(_,(MlyValue.parameterTypeList 
++parameterTypeList,_,_))::_::(_,(MlyValue.parmDirectDeclarator 
++parmDirectDeclarator,parmDirectDeclarator1left,_))::rest671) => let 
++val result=MlyValue.parmDirectDeclarator((
++FuncDecr (parmDirectDeclarator,parameterTypeList)))
++ in (LrTable.NT 27,(result,parmDirectDeclarator1left,RPAREN1right),
++rest671) end
++| (209,(_,(_,_,RPAREN1right))::(_,(MlyValue.identlist identlist,_,_))
++::_::(_,(MlyValue.parmDirectDeclarator parmDirectDeclarator,
++parmDirectDeclarator1left,_))::rest671) => let val result=
++MlyValue.parmDirectDeclarator((
++FuncDecr (parmDirectDeclarator,
++						    map (fn (x,y,z) => (unknown,markDeclarator srcMap (VarDecr x,y,z))) (seqToList identlist))
++))
++ in (LrTable.NT 27,(result,parmDirectDeclarator1left,RPAREN1right),
++rest671) end
++| (210,(_,(MlyValue.expr expr,expr1left,expr1right))::rest671) => let 
++val result=MlyValue.initializer((expr))
++ in (LrTable.NT 33,(result,expr1left,expr1right),rest671) end
++| (211,(_,(_,_,RCURLYright as RCURLY1right))::_::(_,(
++MlyValue.initializerList initializerList,_,_))::(_,(_,LCURLYleft as 
++LCURLY1left,_))::rest671) => let val result=MlyValue.initializer((
++markExpression srcMap (InitList(seqToList initializerList),LCURLYleft,RCURLYright)
++))
++ in (LrTable.NT 33,(result,LCURLY1left,RCURLY1right),rest671) end
++| (212,(_,(MlyValue.initializer initializer,initializer1left,
++initializer1right))::rest671) => let val result=
++MlyValue.initializerList((singletonSeq initializer))
++ in (LrTable.NT 34,(result,initializer1left,initializer1right),rest671
++) end
++| (213,(_,(MlyValue.initializer initializer,_,initializer1right))::_::
++(_,(MlyValue.initializerList initializerList,initializerList1left,_))
++::rest671) => let val result=MlyValue.initializerList((
++addToSeq(initializer, initializerList)))
++ in (LrTable.NT 34,(result,initializerList1left,initializer1right),
++rest671) end
++| (214,(_,(MlyValue.declaration declaration,declarationleft as 
++declaration1left,declarationright as declaration1right))::rest671) => 
++let val result=MlyValue.declarationList((
++singletonSeq(markDeclaration srcMap (declaration,
++									      declarationleft,
++								              declarationright))
++))
++ in (LrTable.NT 45,(result,declaration1left,declaration1right),rest671
++) end
++| (215,(_,(MlyValue.declaration declaration,declarationleft,
++declarationright as declaration1right))::(_,(MlyValue.declarationList 
++declarationList,declarationList1left,_))::rest671) => let val result=
++MlyValue.declarationList((
++addToSeq(markDeclaration srcMap (declaration,
++							            	  declarationleft,
++									  declarationright),
++						  declarationList)
++))
++ in (LrTable.NT 45,(result,declarationList1left,declaration1right),
++rest671) end
++| (216,(_,(MlyValue.ID ID,IDleft as ID1left,IDright as ID1right))::
++rest671) => let val result=MlyValue.identlist((
++singletonSeq (ID,IDleft,IDright)))
++ in (LrTable.NT 46,(result,ID1left,ID1right),rest671) end
++| (217,(_,(MlyValue.ID ID,IDleft,IDright as ID1right))::_::(_,(
++MlyValue.identlist identlist,identlist1left,_))::rest671) => let val 
++result=MlyValue.identlist((addToSeq((ID,IDleft,IDright),identlist)))
++ in (LrTable.NT 46,(result,identlist1left,ID1right),rest671) end
++| (218,(_,(MlyValue.notypeDeclarator notypeDeclarator,
++notypeDeclarator1left,notypeDeclarator1right))::rest671) => let val 
++result=MlyValue.fDefDeclaration((
++insertFuncName(notypeDeclarator);
++					 TypeDefs.pushScope();
++					 insertFuncParams(notypeDeclarator);
++					 (unknown, notypeDeclarator)
++))
++ in (LrTable.NT 44,(result,notypeDeclarator1left,
++notypeDeclarator1right),rest671) end
++| (219,(_,(MlyValue.declarator declarator,_,declarator1right))::(_,(
++MlyValue.declarationSpecifiers declarationSpecifiers,
++declarationSpecifiers1left,_))::rest671) => let val result=
++MlyValue.fDefDeclaration((
++insertFuncName(declarator);
++					 TypeDefs.pushScope();
++					 insertFuncParams(declarator);
++					 (declarationSpecifiers, declarator)
++))
++ in (LrTable.NT 44,(result,declarationSpecifiers1left,declarator1right
++),rest671) end
++| (220,(_,(MlyValue.notypeDeclarator notypeDeclarator,_,
++notypeDeclarator1right))::(_,(MlyValue.declarationModifiers 
++declarationModifiers,declarationModifiers1left,_))::rest671) => let 
++val result=MlyValue.fDefDeclaration((
++insertFuncName(notypeDeclarator);
++					 TypeDefs.pushScope();
++					 insertFuncParams(notypeDeclarator);
++					 (declarationModifiers, notypeDeclarator)
++))
++ in (LrTable.NT 44,(result,declarationModifiers1left,
++notypeDeclarator1right),rest671) end
++| (221,(_,(MlyValue.compoundStatement compoundStatement,_,
++compoundStatement1right))::(_,(MlyValue.fDefDeclaration 
++fDefDeclaration,fDefDeclaration1left,_))::rest671) => let val result=
++MlyValue.functionDefinition((
++TypeDefs.popScope();
++					 FunctionDef
++					    {retType = #1 fDefDeclaration,
++					     funDecr = #2 fDefDeclaration,
++                                             krParams = [],
++                                             body = compoundStatement}
++))
++ in (LrTable.NT 47,(result,fDefDeclaration1left,
++compoundStatement1right),rest671) end
++| (222,(_,(MlyValue.compoundStatement compoundStatement,_,
++compoundStatement1right))::(_,(MlyValue.declarationList 
++declarationList,_,_))::(_,(MlyValue.fDefDeclaration fDefDeclaration,
++fDefDeclaration1left,_))::rest671) => let val result=
++MlyValue.functionDefinition((
++TypeDefs.popScope();
++					 FunctionDef 
++					    {retType = #1 fDefDeclaration,
++					     funDecr = #2 fDefDeclaration,
++                                             krParams = seqToList declarationList,
++                                             body = compoundStatement}
++))
++ in (LrTable.NT 47,(result,fDefDeclaration1left,
++compoundStatement1right),rest671) end
++| (223,(_,(MlyValue.pointer pointer,pointer1left,pointer1right))::
++rest671) => let val result=MlyValue.abstractDeclarator((
++applyPointer (pointer, EmptyDecr)))
++ in (LrTable.NT 14,(result,pointer1left,pointer1right),rest671) end
++| (224,(_,(MlyValue.directAbstractDeclarator directAbstractDeclarator,
++directAbstractDeclarator1left,directAbstractDeclarator1right))::
++rest671) => let val result=MlyValue.abstractDeclarator((
++directAbstractDeclarator))
++ in (LrTable.NT 14,(result,directAbstractDeclarator1left,
++directAbstractDeclarator1right),rest671) end
++| (225,(_,(MlyValue.directAbstractDeclarator directAbstractDeclarator,
++_,directAbstractDeclarator1right))::(_,(MlyValue.pointer pointer,
++pointer1left,_))::rest671) => let val result=
++MlyValue.abstractDeclarator((
++applyPointer(pointer, directAbstractDeclarator)))
++ in (LrTable.NT 14,(result,pointer1left,directAbstractDeclarator1right
++),rest671) end
++| (226,(_,(_,_,RPAREN1right))::(_,(MlyValue.abstractDeclarator 
++abstractDeclarator,_,_))::(_,(_,LPAREN1left,_))::rest671) => let val 
++result=MlyValue.directAbstractDeclarator((abstractDeclarator))
++ in (LrTable.NT 15,(result,LPAREN1left,RPAREN1right),rest671) end
++| (227,(_,(_,_,RBRACE1right))::(_,(_,LBRACE1left,_))::rest671) => let 
++val result=MlyValue.directAbstractDeclarator((
++ArrayDecr(EmptyDecr, EmptyExpr)))
++ in (LrTable.NT 15,(result,LBRACE1left,RBRACE1right),rest671) end
++| (228,(_,(_,_,RBRACE1right))::(_,(MlyValue.expr expr,_,_))::(_,(_,
++LBRACE1left,_))::rest671) => let val result=
++MlyValue.directAbstractDeclarator((ArrayDecr(EmptyDecr, expr)))
++ in (LrTable.NT 15,(result,LBRACE1left,RBRACE1right),rest671) end
++| (229,(_,(_,_,RBRACE1right))::_::(_,(
++MlyValue.directAbstractDeclarator directAbstractDeclarator,
++directAbstractDeclarator1left,_))::rest671) => let val result=
++MlyValue.directAbstractDeclarator((
++ArrayDecr (directAbstractDeclarator,EmptyExpr)))
++ in (LrTable.NT 15,(result,directAbstractDeclarator1left,RBRACE1right)
++,rest671) end
++| (230,(_,(_,_,RBRACE1right))::(_,(MlyValue.expr expr,_,_))::_::(_,(
++MlyValue.directAbstractDeclarator directAbstractDeclarator,
++directAbstractDeclarator1left,_))::rest671) => let val result=
++MlyValue.directAbstractDeclarator((
++ArrayDecr (directAbstractDeclarator,expr)))
++ in (LrTable.NT 15,(result,directAbstractDeclarator1left,RBRACE1right)
++,rest671) end
++| (231,(_,(_,_,RPAREN1right))::(_,(_,LPAREN1left,_))::rest671) => let 
++val result=MlyValue.directAbstractDeclarator((
++FuncDecr (EmptyDecr ,nil)))
++ in (LrTable.NT 15,(result,LPAREN1left,RPAREN1right),rest671) end
++| (232,(_,(_,_,RPAREN1right))::(_,(MlyValue.parameterTypeList 
++parameterTypeList,_,_))::(_,(_,LPAREN1left,_))::rest671) => let val 
++result=MlyValue.directAbstractDeclarator((
++FuncDecr (EmptyDecr, parameterTypeList)))
++ in (LrTable.NT 15,(result,LPAREN1left,RPAREN1right),rest671) end
++| (233,(_,(_,_,RPAREN1right))::_::(_,(
++MlyValue.directAbstractDeclarator directAbstractDeclarator,
++directAbstractDeclarator1left,_))::rest671) => let val result=
++MlyValue.directAbstractDeclarator((
++FuncDecr (directAbstractDeclarator,nil)))
++ in (LrTable.NT 15,(result,directAbstractDeclarator1left,RPAREN1right)
++,rest671) end
++| (234,(_,(_,_,RPAREN1right))::(_,(MlyValue.parameterTypeList 
++parameterTypeList,_,_))::_::(_,(MlyValue.directAbstractDeclarator 
++directAbstractDeclarator,directAbstractDeclarator1left,_))::rest671)
++ => let val result=MlyValue.directAbstractDeclarator((
++FuncDecr (directAbstractDeclarator, parameterTypeList)))
++ in (LrTable.NT 15,(result,directAbstractDeclarator1left,RPAREN1right)
++,rest671) end
++| (235,(_,(MlyValue.parameterList parameterList,parameterList1left,
++parameterList1right))::rest671) => let val result=
++MlyValue.parameterTypeList((seqToList parameterList))
++ in (LrTable.NT 52,(result,parameterList1left,parameterList1right),
++rest671) end
++| (236,(_,(_,_,ELIPSIS1right))::_::(_,(MlyValue.parameterList 
++parameterList,parameterList1left,_))::rest671) => let val result=
++MlyValue.parameterTypeList((
++let val decltype = {specifiers=[Ellipses],qualifiers=[],storage=[]}
++	        		 in (seqToList parameterList) @ [(decltype, EllipsesDecr)] end
++))
++ in (LrTable.NT 52,(result,parameterList1left,ELIPSIS1right),rest671)
++ end
++| (237,(_,(MlyValue.parameterDeclaration parameterDeclaration,
++parameterDeclarationleft as parameterDeclaration1left,
++parameterDeclarationright as parameterDeclaration1right))::rest671)
++ => let val result=MlyValue.parameterList((
++singletonSeq(#1 parameterDeclaration,
++                                              markDeclarator srcMap (#2 parameterDeclaration,
++							             parameterDeclarationleft,
++								     parameterDeclarationright))
++))
++ in (LrTable.NT 51,(result,parameterDeclaration1left,
++parameterDeclaration1right),rest671) end
++| (238,(_,(MlyValue.parameterDeclaration parameterDeclaration,
++parameterDeclarationleft,parameterDeclarationright as 
++parameterDeclaration1right))::_::(_,(MlyValue.parameterList 
++parameterList,parameterList1left,_))::rest671) => let val result=
++MlyValue.parameterList((
++addToSeq((#1 parameterDeclaration,
++	                                           markDeclarator
++	                                            srcMap 
++                                                     (#2 parameterDeclaration,
++						      parameterDeclarationleft,
++						      parameterDeclarationright)),
++					  parameterList)
++))
++ in (LrTable.NT 51,(result,parameterList1left,
++parameterDeclaration1right),rest671) end
++| (239,(_,(MlyValue.notypeDeclarator notypeDeclarator,_,
++notypeDeclarator1right))::(_,(MlyValue.declarationSpecifiers 
++declarationSpecifiers,declarationSpecifiers1left,_))::rest671) => let 
++val result=MlyValue.parameterDeclaration((
++(declarationSpecifiers, notypeDeclarator)))
++ in (LrTable.NT 53,(result,declarationSpecifiers1left,
++notypeDeclarator1right),rest671) end
++| (240,(_,(MlyValue.parmDeclarator parmDeclarator,_,
++parmDeclarator1right))::(_,(MlyValue.declarationSpecifiers 
++declarationSpecifiers,declarationSpecifiers1left,_))::rest671) => let 
++val result=MlyValue.parameterDeclaration((
++(declarationSpecifiers, parmDeclarator)))
++ in (LrTable.NT 53,(result,declarationSpecifiers1left,
++parmDeclarator1right),rest671) end
++| (241,(_,(MlyValue.declarationSpecifiers declarationSpecifiers,
++declarationSpecifiers1left,declarationSpecifiers1right))::rest671) => 
++let val result=MlyValue.parameterDeclaration((
++(declarationSpecifiers, EmptyDecr)))
++ in (LrTable.NT 53,(result,declarationSpecifiers1left,
++declarationSpecifiers1right),rest671) end
++| (242,(_,(MlyValue.abstractDeclarator abstractDeclarator,_,
++abstractDeclarator1right))::(_,(MlyValue.declarationSpecifiers 
++declarationSpecifiers,declarationSpecifiers1left,_))::rest671) => let 
++val result=MlyValue.parameterDeclaration((
++(declarationSpecifiers, abstractDeclarator)))
++ in (LrTable.NT 53,(result,declarationSpecifiers1left,
++abstractDeclarator1right),rest671) end
++| (243,(_,(MlyValue.notypeDeclarator notypeDeclarator,_,
++notypeDeclarator1right))::(_,(MlyValue.declarationModifiers 
++declarationModifiers,declarationModifiers1left,_))::rest671) => let 
++val result=MlyValue.parameterDeclaration((
++(declarationModifiers, notypeDeclarator)))
++ in (LrTable.NT 53,(result,declarationModifiers1left,
++notypeDeclarator1right),rest671) end
++| (244,(_,(MlyValue.abstractDeclarator abstractDeclarator,_,
++abstractDeclarator1right))::(_,(MlyValue.declarationModifiers 
++declarationModifiers,declarationModifiers1left,_))::rest671) => let 
++val result=MlyValue.parameterDeclaration((
++(declarationModifiers, abstractDeclarator)))
++ in (LrTable.NT 53,(result,declarationModifiers1left,
++abstractDeclarator1right),rest671) end
++| (245,rest671) => let val result=MlyValue.pushScope((
++TypeDefs.pushScope()))
++ in (LrTable.NT 61,(result,defaultPos,defaultPos),rest671) end
++| (246,rest671) => let val result=MlyValue.popScope((
++TypeDefs.popScope()))
++ in (LrTable.NT 62,(result,defaultPos,defaultPos),rest671) end
++| _ => raise (mlyAction i392)
++end
++val void = MlyValue.VOID'
++val extract = fn a => (fn MlyValue.translationUnit x => x
++| _ => let exception ParseInternal
++	in raise ParseInternal end) a 
++end
++end
++structure Tokens : C_TOKENS =
++struct
++type svalue = ParserData.svalue
++type ('a,'b) token = ('a,'b) Token.token
++fun EOF (p1,p2) = Token.TOKEN (ParserData.LrTable.T 0,(
++ParserData.MlyValue.VOID',p1,p2))
++fun COLON (p1,p2) = Token.TOKEN (ParserData.LrTable.T 1,(
++ParserData.MlyValue.VOID',p1,p2))
++fun SEMICOLON (p1,p2) = Token.TOKEN (ParserData.LrTable.T 2,(
++ParserData.MlyValue.VOID',p1,p2))
++fun LPAREN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 3,(
++ParserData.MlyValue.VOID',p1,p2))
++fun RPAREN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 4,(
++ParserData.MlyValue.VOID',p1,p2))
++fun LCURLY (p1,p2) = Token.TOKEN (ParserData.LrTable.T 5,(
++ParserData.MlyValue.VOID',p1,p2))
++fun RCURLY (p1,p2) = Token.TOKEN (ParserData.LrTable.T 6,(
++ParserData.MlyValue.VOID',p1,p2))
++fun LBRACE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 7,(
++ParserData.MlyValue.VOID',p1,p2))
++fun RBRACE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 8,(
++ParserData.MlyValue.VOID',p1,p2))
++fun DOT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 9,(
++ParserData.MlyValue.VOID',p1,p2))
++fun COMMA (p1,p2) = Token.TOKEN (ParserData.LrTable.T 10,(
++ParserData.MlyValue.VOID',p1,p2))
++fun QUESTION (p1,p2) = Token.TOKEN (ParserData.LrTable.T 11,(
++ParserData.MlyValue.VOID',p1,p2))
++fun PERCENT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 12,(
++ParserData.MlyValue.VOID',p1,p2))
++fun AMP (p1,p2) = Token.TOKEN (ParserData.LrTable.T 13,(
++ParserData.MlyValue.VOID',p1,p2))
++fun BAR (p1,p2) = Token.TOKEN (ParserData.LrTable.T 14,(
++ParserData.MlyValue.VOID',p1,p2))
++fun TILDE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 15,(
++ParserData.MlyValue.VOID',p1,p2))
++fun DIVIDE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 16,(
++ParserData.MlyValue.VOID',p1,p2))
++fun PLUS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 17,(
++ParserData.MlyValue.VOID',p1,p2))
++fun MINUS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 18,(
++ParserData.MlyValue.VOID',p1,p2))
++fun HAT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 19,(
++ParserData.MlyValue.VOID',p1,p2))
++fun BANG (p1,p2) = Token.TOKEN (ParserData.LrTable.T 20,(
++ParserData.MlyValue.VOID',p1,p2))
++fun TIMES (p1,p2) = Token.TOKEN (ParserData.LrTable.T 21,(
++ParserData.MlyValue.VOID',p1,p2))
++fun INC (p1,p2) = Token.TOKEN (ParserData.LrTable.T 22,(
++ParserData.MlyValue.VOID',p1,p2))
++fun DEC (p1,p2) = Token.TOKEN (ParserData.LrTable.T 23,(
++ParserData.MlyValue.VOID',p1,p2))
++fun ARROW (p1,p2) = Token.TOKEN (ParserData.LrTable.T 24,(
++ParserData.MlyValue.VOID',p1,p2))
++fun ID (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 25,(
++ParserData.MlyValue.ID i,p1,p2))
++fun EQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 26,(
++ParserData.MlyValue.VOID',p1,p2))
++fun PLUSEQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 27,(
++ParserData.MlyValue.VOID',p1,p2))
++fun MINUSEQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 28,(
++ParserData.MlyValue.VOID',p1,p2))
++fun XOREQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 29,(
++ParserData.MlyValue.VOID',p1,p2))
++fun MODEQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 30,(
++ParserData.MlyValue.VOID',p1,p2))
++fun TIMESEQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 31,(
++ParserData.MlyValue.VOID',p1,p2))
++fun DIVEQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 32,(
++ParserData.MlyValue.VOID',p1,p2))
++fun OREQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 33,(
++ParserData.MlyValue.VOID',p1,p2))
++fun ANDEQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 34,(
++ParserData.MlyValue.VOID',p1,p2))
++fun LSHIFTEQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 35,(
++ParserData.MlyValue.VOID',p1,p2))
++fun RSHIFTEQUALS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 36,(
++ParserData.MlyValue.VOID',p1,p2))
++fun LTE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 37,(
++ParserData.MlyValue.VOID',p1,p2))
++fun GTE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 38,(
++ParserData.MlyValue.VOID',p1,p2))
++fun LT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 39,(
++ParserData.MlyValue.VOID',p1,p2))
++fun GT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 40,(
++ParserData.MlyValue.VOID',p1,p2))
++fun EQ (p1,p2) = Token.TOKEN (ParserData.LrTable.T 41,(
++ParserData.MlyValue.VOID',p1,p2))
++fun NEQ (p1,p2) = Token.TOKEN (ParserData.LrTable.T 42,(
++ParserData.MlyValue.VOID',p1,p2))
++fun OR (p1,p2) = Token.TOKEN (ParserData.LrTable.T 43,(
++ParserData.MlyValue.VOID',p1,p2))
++fun AND (p1,p2) = Token.TOKEN (ParserData.LrTable.T 44,(
++ParserData.MlyValue.VOID',p1,p2))
++fun LSHIFT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 45,(
++ParserData.MlyValue.VOID',p1,p2))
++fun RSHIFT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 46,(
++ParserData.MlyValue.VOID',p1,p2))
++fun DECNUM (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 47,(
++ParserData.MlyValue.DECNUM i,p1,p2))
++fun REALNUM (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 48,(
++ParserData.MlyValue.REALNUM i,p1,p2))
++fun STRING (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 49,(
++ParserData.MlyValue.STRING i,p1,p2))
++fun CCONST (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 50,(
++ParserData.MlyValue.CCONST i,p1,p2))
++fun EXTERN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 51,(
++ParserData.MlyValue.VOID',p1,p2))
++fun AUTO (p1,p2) = Token.TOKEN (ParserData.LrTable.T 52,(
++ParserData.MlyValue.VOID',p1,p2))
++fun STATIC (p1,p2) = Token.TOKEN (ParserData.LrTable.T 53,(
++ParserData.MlyValue.VOID',p1,p2))
++fun REGISTER (p1,p2) = Token.TOKEN (ParserData.LrTable.T 54,(
++ParserData.MlyValue.VOID',p1,p2))
++fun CONST (p1,p2) = Token.TOKEN (ParserData.LrTable.T 55,(
++ParserData.MlyValue.VOID',p1,p2))
++fun VOLATILE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 56,(
++ParserData.MlyValue.VOID',p1,p2))
++fun IF (p1,p2) = Token.TOKEN (ParserData.LrTable.T 57,(
++ParserData.MlyValue.VOID',p1,p2))
++fun THEN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 58,(
++ParserData.MlyValue.VOID',p1,p2))
++fun ELSE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 59,(
++ParserData.MlyValue.VOID',p1,p2))
++fun FOR (p1,p2) = Token.TOKEN (ParserData.LrTable.T 60,(
++ParserData.MlyValue.VOID',p1,p2))
++fun DO (p1,p2) = Token.TOKEN (ParserData.LrTable.T 61,(
++ParserData.MlyValue.VOID',p1,p2))
++fun SWITCH (p1,p2) = Token.TOKEN (ParserData.LrTable.T 62,(
++ParserData.MlyValue.VOID',p1,p2))
++fun CASE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 63,(
++ParserData.MlyValue.VOID',p1,p2))
++fun DEFAULT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 64,(
++ParserData.MlyValue.VOID',p1,p2))
++fun WHILE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 65,(
++ParserData.MlyValue.VOID',p1,p2))
++fun RETURN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 66,(
++ParserData.MlyValue.VOID',p1,p2))
++fun BREAK (p1,p2) = Token.TOKEN (ParserData.LrTable.T 67,(
++ParserData.MlyValue.VOID',p1,p2))
++fun CONTINUE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 68,(
++ParserData.MlyValue.VOID',p1,p2))
++fun GOTO (p1,p2) = Token.TOKEN (ParserData.LrTable.T 69,(
++ParserData.MlyValue.VOID',p1,p2))
++fun CHAR (p1,p2) = Token.TOKEN (ParserData.LrTable.T 70,(
++ParserData.MlyValue.VOID',p1,p2))
++fun DOUBLE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 71,(
++ParserData.MlyValue.VOID',p1,p2))
++fun ENUM (p1,p2) = Token.TOKEN (ParserData.LrTable.T 72,(
++ParserData.MlyValue.VOID',p1,p2))
++fun FLOAT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 73,(
++ParserData.MlyValue.VOID',p1,p2))
++fun INT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 74,(
++ParserData.MlyValue.VOID',p1,p2))
++fun LONG (p1,p2) = Token.TOKEN (ParserData.LrTable.T 75,(
++ParserData.MlyValue.VOID',p1,p2))
++fun SHORT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 76,(
++ParserData.MlyValue.VOID',p1,p2))
++fun FRACTIONAL (p1,p2) = Token.TOKEN (ParserData.LrTable.T 77,(
++ParserData.MlyValue.VOID',p1,p2))
++fun SATURATE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 78,(
++ParserData.MlyValue.VOID',p1,p2))
++fun STRUCT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 79,(
++ParserData.MlyValue.VOID',p1,p2))
++fun UNION (p1,p2) = Token.TOKEN (ParserData.LrTable.T 80,(
++ParserData.MlyValue.VOID',p1,p2))
++fun UNSIGNED (p1,p2) = Token.TOKEN (ParserData.LrTable.T 81,(
++ParserData.MlyValue.VOID',p1,p2))
++fun SIGNED (p1,p2) = Token.TOKEN (ParserData.LrTable.T 82,(
++ParserData.MlyValue.VOID',p1,p2))
++fun VOID (p1,p2) = Token.TOKEN (ParserData.LrTable.T 83,(
++ParserData.MlyValue.VOID',p1,p2))
++fun SIZEOF (p1,p2) = Token.TOKEN (ParserData.LrTable.T 84,(
++ParserData.MlyValue.VOID',p1,p2))
++fun TYPEDEF (p1,p2) = Token.TOKEN (ParserData.LrTable.T 85,(
++ParserData.MlyValue.VOID',p1,p2))
++fun UNARY (p1,p2) = Token.TOKEN (ParserData.LrTable.T 86,(
++ParserData.MlyValue.VOID',p1,p2))
++fun ELIPSIS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 87,(
++ParserData.MlyValue.VOID',p1,p2))
++fun TYPE_NAME (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 88,(
++ParserData.MlyValue.TYPE_NAME i,p1,p2))
++end
++end
 diff -Naur ckit/src/parser/grammar/c.lex.sml ckit-mlton/src/parser/grammar/c.lex.sml
---- ckit/src/parser/grammar/c.lex.sml	2005-11-21 11:29:21.000000000 -0500
-+++ ckit-mlton/src/parser/grammar/c.lex.sml	2005-11-21 11:29:21.000000000 -0500
-@@ -1,3 +1,4 @@
+--- ckit/src/parser/grammar/c.lex.sml	1969-12-31 19:00:00.000000000 -0500
++++ ckit-mlton/src/parser/grammar/c.lex.sml	2006-05-02 23:00:53.000000000 -0400
+@@ -0,0 +1,1053 @@
 +type int = Int.int
- functor CLexFun(structure Tokens : C_TOKENS 
- 			 structure TokTable : TOKENTABLE 
- 			 sharing TokTable.Tokens = Tokens)=
-@@ -758,7 +759,7 @@
- fun f x = x 
- val s = map f (rev (tl (rev s))) 
- exception LexHackingError 
--fun look ((j,x)::r, i: int) = if i = j then x else look(r, i) 
++functor CLexFun(structure Tokens : C_TOKENS 
++			 structure TokTable : TOKENTABLE 
++			 sharing TokTable.Tokens = Tokens)=
++   struct
++    structure UserDeclarations =
++      struct
++(* Copyright (c) 1998 by Lucent Technologies *)
++
++(*
++ * The following replacement for c.lex should give correct (ANSI)
++ * In particular, we don't allow
++ * 
++ * char *t = "abd
++ * lkj";
++ * 
++ * GCC accepts this, but SGI cc does not. This program is not ANSI
++ * compliant.
++ *)
++
++type svalue = Tokens.svalue
++type pos = int
++type lexresult = (svalue,pos) Tokens.token
++type errWarn = {err: pos*pos*string->unit, warn: pos*pos*string->unit}
++type lexarg =  {comLevel : int ref, 
++                sourceMap : SourceMap.sourcemap,
++		charlist : string list ref,
++		stringstart : int ref,  (* start of current string or comment*)
++	        errWarn: errWarn}
++
++type arg = lexarg
++type ('a,'b) token = ('a,'b) Tokens.token
++
++fun ordof (s, i) = Char.ord (String.sub (s, i))
++fun dec (iRef : int ref) = iRef := (!iRef) - 1
++fun inc (iRef : int ref) = iRef := (!iRef) + 1
++fun chr i = String.str(Char.chr i)
++fun ord s = Char.ord(String.sub(s, 0))
++fun explode s = CharVector.foldr (fn (c, l) => str c :: l) [] s
++fun implode strList = String.concat strList
++fun hd [] = (print "c.lex: hd of empty\n";
++	     raise Empty)
++  | hd (h :: l)	= h
++
++val eof = fn ({comLevel,errWarn,sourceMap,stringstart,charlist}:lexarg) => 
++	   let val pos = Int.max(!stringstart+2, SourceMap.currPos sourceMap)
++	    in if !comLevel>0 then (#err errWarn) (!stringstart,pos, "unclosed comment" )
++		  	      else ();
++	       Tokens.EOF(pos,pos)
++	   end	
++fun addString (charlist,s:string) = charlist := s :: (!charlist)
++fun makeString charlist = (implode(rev(!charlist)) before charlist := nil)
++
++fun mkHexInt (s,a,b,errWarn:errWarn)=((case (StringCvt.scanString (LargeInt.scan StringCvt.HEX) s) of
++		  SOME i => i
++		| _ => ((#err errWarn)(a,b,"trouble in parsing int");Int.toLarge(0)))
++			handle OverFlow => ((#err errWarn)(a,b,"large int const");Int.toLarge(0)))
++
++fun mkHexChar (args as (s, a, b, errWarn:errWarn)) : int (* returns a character sized integer *) = 
++	let val i = mkHexInt args
++	in
++	  if (i>255) then 
++	    ((#warn errWarn) (a,b,"overflow in hexadecimal escape sequence");
++	    IntInf.toInt(i mod 256))
++	  else
++       	    IntInf.toInt i
++        end	
++
++fun mkOctInt (s,a,b,errWarn:errWarn)
++	= ((case (StringCvt.scanString (LargeInt.scan StringCvt.OCT) s) of
++		  SOME i => i
++		| _ => ((#err errWarn)(a,b,"trouble in parsing int");Int.toLarge(0)))
++			handle OverFlow => ((#err errWarn)(a,b,"large int const");Int.toLarge(0)))
++
++
++fun mkOctChar (args as (s, a, b, errWarn:errWarn)) (* returns a character sized integer *) = 
++	let val i = mkOctInt args
++	in
++	  if (i>255) then 
++	    ((#warn errWarn) (a,b,"overflow in octal escape sequence");
++	    IntInf.toInt(i mod 256))
++	  else
++       	    IntInf.toInt i
++        end	
++
++fun mkInt (s,a,b,errWarn:errWarn) = ((case (StringCvt.scanString (LargeInt.scan StringCvt.DEC) s) of
++		  SOME i => i
++		| _ => ((#err errWarn)(a,b,"trouble in parsing int");Int.toLarge(0)))
++			handle OverFlow => ((#err errWarn)(a,b,"large int const");Int.toLarge(0)))
++
++fun mkRealNum (s,a,b,errWarn:errWarn) = ((case (StringCvt.scanString Real.scan s) of
++		   SOME r => r
++		 | _ => ((#err errWarn)(a,b,"trouble in parsing real");0.0))
++			handle OverFlow => ((#err errWarn)(a,b,"large real const"); 0.0))
++
++val backslasha = 7
++
++fun special_char(c,fst,last,errWarn:errWarn) =
++		(case c of
++			"\\a" => 7
++		      | "\\b" => 8
++		      | "\\f" => 12
++		      | "\\n" => 10
++		      | "\\r" => 13
++		      | "\\t" => 9
++		      | "\\v" => 11
++	              | _ => ordof(c,1)
++	                      (* strictly speaking, should only handle
++                                \?, \\, \", \', but it is common
++                                to simply ignore slash, and just use next char *)
++		)
++
++
++(* Notes on lexer states:
++   INITIAL -- predefined start state and the default token state
++   S -- inside a string (entered from INTITAL with ")
++   C -- inside a comment (entered from INITIAL with /* )
++ *)
++
++
++end (* end of user routines *)
++exception LexError (* raised if illegal leaf action tried *)
++structure Internal =
++	struct
++
++datatype yyfinstate = N of int
++type statedata = {fin : yyfinstate list, trans: string}
++(* transition & final state table *)
++val tab = let
++val s = [ 
++ (0, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (1, 
++"\007\007\007\007\007\007\007\007\007\095\097\007\095\007\007\007\
++\\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\
++\\095\093\092\007\007\090\087\073\072\071\069\066\065\061\057\054\
++\\044\033\033\033\033\033\033\033\033\033\032\031\027\025\021\020\
++\\007\014\014\014\014\014\014\014\014\014\014\014\014\014\014\014\
++\\014\014\014\014\014\014\014\014\014\014\014\019\007\018\016\014\
++\\007\014\014\014\014\014\014\014\014\014\014\014\014\014\014\014\
++\\014\014\014\014\014\014\014\014\014\014\014\013\010\009\008\007\
++\\007"
++),
++ (2, 
++"\007\007\007\007\007\007\007\007\007\101\097\007\101\007\007\007\
++\\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\007\
++\\101\093\092\098\007\090\087\073\072\071\069\066\065\061\057\054\
++\\044\033\033\033\033\033\033\033\033\033\032\031\027\025\021\020\
++\\007\014\014\014\014\014\014\014\014\014\014\014\014\014\014\014\
++\\014\014\014\014\014\014\014\014\014\014\014\019\007\018\016\014\
++\\007\014\014\014\014\014\014\014\014\014\014\014\014\014\014\014\
++\\014\014\014\014\014\014\014\014\014\014\014\013\010\009\008\007\
++\\007"
++),
++ (3, 
++"\103\103\103\103\103\103\103\103\103\106\097\103\106\103\103\103\
++\\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\
++\\106\103\103\103\103\103\103\103\103\103\104\103\103\103\103\103\
++\\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\
++\\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\
++\\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\
++\\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\
++\\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\
++\\103"
++),
++ (4, 
++"\103\103\103\103\103\103\103\103\103\108\097\103\108\103\103\103\
++\\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\
++\\108\103\103\107\103\103\103\103\103\103\104\103\103\103\103\103\
++\\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\
++\\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\
++\\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\
++\\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\
++\\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\
++\\103"
++),
++ (5, 
++"\109\109\109\109\109\109\109\109\109\109\122\109\109\109\109\109\
++\\109\109\109\109\109\109\109\109\109\109\109\109\109\109\109\109\
++\\109\109\121\109\109\109\109\109\109\109\109\109\109\109\109\109\
++\\109\109\109\109\109\109\109\109\109\109\109\109\109\109\109\109\
++\\109\109\109\109\109\109\109\109\109\109\109\109\109\109\109\109\
++\\109\109\109\109\109\109\109\109\109\109\109\109\110\109\109\109\
++\\109\109\109\109\109\109\109\109\109\109\109\109\109\109\109\109\
++\\109\109\109\109\109\109\109\109\109\109\109\109\109\109\109\109\
++\\109"
++),
++ (10, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\012\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\011\000\000\000\
++\\000"
++),
++ (14, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\000\
++\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
++\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\015\
++\\000\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
++\\015\015\015\015\015\015\015\015\015\015\015\000\000\000\000\000\
++\\000"
++),
++ (16, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\017\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (21, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\024\022\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (22, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\023\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (25, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\026\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (27, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\029\028\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (29, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\030\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (33, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\042\000\
++\\041\041\041\041\041\041\041\041\041\041\000\000\000\000\000\000\
++\\000\000\000\000\000\037\000\000\000\000\000\000\036\000\000\000\
++\\000\000\000\000\000\034\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\037\000\000\000\000\000\000\036\000\000\000\
++\\000\000\000\000\000\034\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (34, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\035\000\000\000\
++\\000\000\000\000\000\035\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\035\000\000\000\
++\\000\000\000\000\000\035\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (37, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\040\000\040\000\000\
++\\038\038\038\038\038\038\038\038\038\038\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (38, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\038\038\038\038\038\038\038\038\038\038\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\039\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\039\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (40, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\038\038\038\038\038\038\038\038\038\038\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (42, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\043\043\043\043\043\043\043\043\043\043\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (43, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\043\043\043\043\043\043\043\043\043\043\000\000\000\000\000\000\
++\\000\000\000\000\000\037\000\000\000\000\000\000\039\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\037\000\000\000\000\000\000\039\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (44, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\042\000\
++\\050\050\050\050\050\050\050\050\049\049\000\000\000\000\000\000\
++\\000\000\000\000\000\037\000\000\000\000\000\000\036\000\000\000\
++\\000\000\000\000\000\034\000\000\045\000\000\000\000\000\000\000\
++\\000\000\000\000\000\037\000\000\000\000\000\000\036\000\000\000\
++\\000\000\000\000\000\034\000\000\045\000\000\000\000\000\000\000\
++\\000"
++),
++ (45, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\046\046\046\046\046\046\046\046\046\046\000\000\000\000\000\000\
++\\000\046\046\046\046\046\046\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\046\046\046\046\046\046\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (46, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\046\046\046\046\046\046\046\046\046\046\000\000\000\000\000\000\
++\\000\046\046\046\046\046\046\000\000\000\000\000\047\000\000\000\
++\\000\000\000\000\000\047\000\000\000\000\000\000\000\000\000\000\
++\\000\046\046\046\046\046\046\000\000\000\000\000\047\000\000\000\
++\\000\000\000\000\000\047\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (47, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\048\000\000\000\
++\\000\000\000\000\000\048\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\048\000\000\000\
++\\000\000\000\000\000\048\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (49, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\042\000\
++\\049\049\049\049\049\049\049\049\049\049\000\000\000\000\000\000\
++\\000\000\000\000\000\037\000\000\000\000\000\000\039\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\037\000\000\000\000\000\000\039\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (50, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\042\000\
++\\050\050\050\050\050\050\050\050\049\049\000\000\000\000\000\000\
++\\000\000\000\000\000\037\000\000\000\000\000\000\053\000\000\000\
++\\000\000\000\000\000\051\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\037\000\000\000\000\000\000\053\000\000\000\
++\\000\000\000\000\000\051\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (51, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\052\000\000\000\
++\\000\000\000\000\000\052\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\052\000\000\000\
++\\000\000\000\000\000\052\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (54, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\056\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\055\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (57, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\059\000\
++\\058\058\058\058\058\058\058\058\058\058\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (58, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\058\058\058\058\058\058\058\058\058\058\000\000\000\000\000\000\
++\\000\000\000\000\000\037\000\000\000\000\000\000\039\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\037\000\000\000\000\000\000\039\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (59, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\060\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (61, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\064\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\063\062\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (66, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\068\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\067\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (69, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\070\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (73, 
++"\074\074\074\074\074\074\074\074\074\074\000\074\074\074\074\074\
++\\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
++\\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
++\\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
++\\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
++\\074\074\074\074\074\074\074\074\074\074\074\074\076\074\074\074\
++\\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
++\\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\074\
++\\074"
++),
++ (74, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\075\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (76, 
++"\077\077\077\077\077\077\077\077\077\077\000\077\077\077\077\077\
++\\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\
++\\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\
++\\082\082\082\082\082\082\082\082\077\077\077\077\077\077\077\077\
++\\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\
++\\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\
++\\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\077\
++\\077\077\077\077\077\077\077\077\079\077\077\077\077\077\077\077\
++\\077"
++),
++ (77, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\078\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (79, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\078\000\000\000\000\000\000\000\000\
++\\080\080\080\080\080\080\080\080\080\080\000\000\000\000\000\000\
++\\000\080\080\080\080\080\080\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\080\080\080\080\080\080\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (80, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\081\000\000\000\000\000\000\000\000\
++\\080\080\080\080\080\080\080\080\080\080\000\000\000\000\000\000\
++\\000\080\080\080\080\080\080\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\080\080\080\080\080\080\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (82, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\086\000\000\000\000\000\000\000\000\
++\\083\083\083\083\083\083\083\083\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (83, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\085\000\000\000\000\000\000\000\000\
++\\084\084\084\084\084\084\084\084\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (84, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\085\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (87, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\089\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\088\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (90, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\091\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (93, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\094\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (95, 
++"\000\000\000\000\000\000\000\000\000\096\000\000\096\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\096\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (98, 
++"\099\099\099\099\099\099\099\099\099\099\100\099\099\099\099\099\
++\\099\099\099\099\099\099\099\099\099\099\099\099\099\099\099\099\
++\\099\099\099\099\099\099\099\099\099\099\099\099\099\099\099\099\
++\\099\099\099\099\099\099\099\099\099\099\099\099\099\099\099\099\
++\\099\099\099\099\099\099\099\099\099\099\099\099\099\099\099\099\
++\\099\099\099\099\099\099\099\099\099\099\099\099\099\099\099\099\
++\\099\099\099\099\099\099\099\099\099\099\099\099\099\099\099\099\
++\\099\099\099\099\099\099\099\099\099\099\099\099\099\099\099\099\
++\\099"
++),
++ (101, 
++"\000\000\000\000\000\000\000\000\000\102\000\000\102\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\102\000\000\099\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (104, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\105\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (109, 
++"\109\109\109\109\109\109\109\109\109\109\000\109\109\109\109\109\
++\\109\109\109\109\109\109\109\109\109\109\109\109\109\109\109\109\
++\\109\109\000\109\109\109\109\109\109\109\109\109\109\109\109\109\
++\\109\109\109\109\109\109\109\109\109\109\109\109\109\109\109\109\
++\\109\109\109\109\109\109\109\109\109\109\109\109\109\109\109\109\
++\\109\109\109\109\109\109\109\109\109\109\109\109\000\109\109\109\
++\\109\109\109\109\109\109\109\109\109\109\109\109\109\109\109\109\
++\\109\109\109\109\109\109\109\109\109\109\109\109\109\109\109\109\
++\\109"
++),
++ (110, 
++"\111\111\111\111\111\111\111\111\111\111\120\111\111\111\111\111\
++\\111\111\111\111\111\111\111\111\111\111\111\111\111\111\111\111\
++\\111\111\111\111\111\111\111\111\111\111\111\111\111\111\111\111\
++\\119\116\116\116\116\116\116\116\111\111\111\111\111\111\111\111\
++\\111\111\111\111\111\111\111\111\111\111\111\111\111\111\111\111\
++\\111\111\111\111\111\111\111\111\111\111\111\111\111\111\114\111\
++\\111\111\111\111\111\111\111\111\111\111\111\111\111\111\111\111\
++\\111\111\111\111\111\111\111\111\112\111\111\111\111\111\111\111\
++\\111"
++),
++ (112, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\113\113\113\113\113\113\113\113\113\113\000\000\000\000\000\000\
++\\000\113\113\113\113\113\113\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\113\113\113\113\113\113\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (114, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\115\115\115\115\115\115\115\115\115\115\115\115\115\115\115\115\
++\\115\115\115\115\115\115\115\115\115\115\115\115\115\115\115\115\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (116, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\117\117\117\117\117\117\117\117\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++ (117, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\118\118\118\118\118\118\118\118\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000"
++),
++(0, "")]
++fun f x = x 
++val s = map f (rev (tl (rev s))) 
++exception LexHackingError 
 +fun look ((j,x)::r, i) = if i = j then x else look(r, i) 
-   | look ([], i) = raise LexHackingError
- fun g {fin=x, trans=i} = {fin=x, trans=look(s,i)} 
- in Vector.fromList(map g 
-@@ -901,28 +902,29 @@
- 	exception LexerError (* raised if illegal leaf action tried *)
- end
- 
--fun makeLexer yyinput =
--let	val yygone0=1
++  | look ([], i) = raise LexHackingError
++fun g {fin=x, trans=i} = {fin=x, trans=look(s,i)} 
++in Vector.fromList(map g 
++[{fin = [], trans = 0},
++{fin = [(N 10)], trans = 1},
++{fin = [(N 10)], trans = 2},
++{fin = [(N 10)], trans = 3},
++{fin = [(N 10)], trans = 4},
++{fin = [(N 26)], trans = 5},
++{fin = [(N 26)], trans = 5},
++{fin = [(N 227)], trans = 0},
++{fin = [(N 96),(N 227)], trans = 0},
++{fin = [(N 65),(N 227)], trans = 0},
++{fin = [(N 100),(N 227)], trans = 10},
++{fin = [(N 157)], trans = 0},
++{fin = [(N 136)], trans = 0},
++{fin = [(N 63),(N 227)], trans = 0},
++{fin = [(N 225),(N 227)], trans = 14},
++{fin = [(N 225)], trans = 14},
++{fin = [(N 79),(N 227)], trans = 16},
++{fin = [(N 124)], trans = 0},
++{fin = [(N 61),(N 227)], trans = 0},
++{fin = [(N 59),(N 227)], trans = 0},
++{fin = [(N 98),(N 227)], trans = 0},
++{fin = [(N 151),(N 227)], trans = 21},
++{fin = [(N 166)], trans = 22},
++{fin = [(N 147)], trans = 0},
++{fin = [(N 110)], trans = 0},
++{fin = [(N 115),(N 227)], trans = 25},
++{fin = [(N 113)], trans = 0},
++{fin = [(N 149),(N 227)], trans = 27},
++{fin = [(N 107)], trans = 0},
++{fin = [(N 163)], trans = 29},
++{fin = [(N 143)], trans = 0},
++{fin = [(N 53),(N 227)], trans = 0},
++{fin = [(N 51),(N 227)], trans = 0},
++{fin = [(N 185),(N 199),(N 227)], trans = 33},
++{fin = [(N 185)], trans = 34},
++{fin = [(N 185)], trans = 0},
++{fin = [(N 185),(N 199)], trans = 34},
++{fin = [], trans = 37},
++{fin = [(N 199)], trans = 38},
++{fin = [(N 199)], trans = 0},
++{fin = [], trans = 40},
++{fin = [(N 185),(N 199)], trans = 33},
++{fin = [], trans = 42},
++{fin = [(N 199)], trans = 43},
++{fin = [(N 185),(N 199),(N 227)], trans = 44},
++{fin = [], trans = 45},
++{fin = [(N 179)], trans = 46},
++{fin = [(N 179)], trans = 47},
++{fin = [(N 179)], trans = 0},
++{fin = [(N 199)], trans = 49},
++{fin = [(N 172),(N 199)], trans = 50},
++{fin = [(N 172)], trans = 51},
++{fin = [(N 172)], trans = 0},
++{fin = [(N 172),(N 199)], trans = 51},
++{fin = [(N 94),(N 227)], trans = 54},
++{fin = [(N 133)], trans = 0},
++{fin = [(N 13)], trans = 0},
++{fin = [(N 67),(N 227)], trans = 57},
++{fin = [(N 199)], trans = 58},
++{fin = [], trans = 59},
++{fin = [(N 71)], trans = 0},
++{fin = [(N 83),(N 227)], trans = 61},
++{fin = [(N 92)], trans = 0},
++{fin = [(N 121)], trans = 0},
++{fin = [(N 89)], trans = 0},
++{fin = [(N 73),(N 227)], trans = 0},
++{fin = [(N 81),(N 227)], trans = 66},
++{fin = [(N 118)], trans = 0},
++{fin = [(N 86)], trans = 0},
++{fin = [(N 75),(N 227)], trans = 69},
++{fin = [(N 130)], trans = 0},
++{fin = [(N 57),(N 227)], trans = 0},
++{fin = [(N 55),(N 227)], trans = 0},
++{fin = [(N 227)], trans = 73},
++{fin = [], trans = 74},
++{fin = [(N 217)], trans = 0},
++{fin = [], trans = 76},
++{fin = [], trans = 77},
++{fin = [(N 222)], trans = 0},
++{fin = [], trans = 79},
++{fin = [], trans = 80},
++{fin = [(N 213)], trans = 0},
++{fin = [], trans = 82},
++{fin = [], trans = 83},
++{fin = [], trans = 84},
++{fin = [(N 206)], trans = 0},
++{fin = [(N 206),(N 222)], trans = 0},
++{fin = [(N 102),(N 227)], trans = 87},
++{fin = [(N 139)], trans = 0},
++{fin = [(N 160)], trans = 0},
++{fin = [(N 104),(N 227)], trans = 90},
++{fin = [(N 127)], trans = 0},
++{fin = [(N 20),(N 227)], trans = 0},
++{fin = [(N 77),(N 227)], trans = 93},
++{fin = [(N 154)], trans = 0},
++{fin = [(N 10),(N 227)], trans = 95},
++{fin = [(N 10)], trans = 95},
++{fin = [(N 7)], trans = 0},
++{fin = [(N 227)], trans = 98},
++{fin = [], trans = 98},
++{fin = [(N 5)], trans = 0},
++{fin = [(N 10),(N 227)], trans = 101},
++{fin = [(N 10)], trans = 101},
++{fin = [(N 18)], trans = 0},
++{fin = [(N 18)], trans = 104},
++{fin = [(N 16)], trans = 0},
++{fin = [(N 10),(N 18)], trans = 95},
++{fin = [(N 18)], trans = 98},
++{fin = [(N 10),(N 18)], trans = 101},
++{fin = [(N 26)], trans = 109},
++{fin = [], trans = 110},
++{fin = [(N 49)], trans = 0},
++{fin = [(N 49)], trans = 112},
++{fin = [(N 42)], trans = 112},
++{fin = [(N 49)], trans = 114},
++{fin = [(N 46)], trans = 0},
++{fin = [(N 49)], trans = 116},
++{fin = [], trans = 117},
++{fin = [(N 37)], trans = 0},
++{fin = [(N 32),(N 49)], trans = 116},
++{fin = [(N 29)], trans = 0},
++{fin = [(N 22)], trans = 0},
++{fin = [(N 24)], trans = 0}])
++end
++structure StartStates =
++	struct
++	datatype yystartstate = STARTSTATE of int
++
++(* start state definitions *)
++
++val C = STARTSTATE 3;
++val INITIAL = STARTSTATE 1;
++val S = STARTSTATE 5;
++
++end
++type result = UserDeclarations.lexresult
++	exception LexerError (* raised if illegal leaf action tried *)
++end
++
 +type int = Int.int
 +fun makeLexer (yyinput: int -> string) =
 +let	val yygone0:int= ~1
- 	val yyb = ref "\n" 		(* buffer *)
--	val yybl = ref 1		(*buffer length *)
--	val yybufpos = ref 1		(* location of next character to use *)
--	val yygone = ref yygone0	(* position in file of beginning of buffer *)
++	val yyb = ref "\n" 		(* buffer *)
 +	val yybl: int ref = ref 1		(*buffer length *)
 +	val yybufpos: int ref = ref 1		(* location of next character to use *)
 +	val yygone: int ref = ref yygone0	(* position in file of beginning of buffer *)
- 	val yydone = ref false		(* eof found yet? *)
--	val yybegin = ref 1		(*Current 'start state' for lexer *)
++	val yydone = ref false		(* eof found yet? *)
 +	val yybegin: int ref = ref 1		(*Current 'start state' for lexer *)
- 
- 	val YYBEGIN = fn (Internal.StartStates.STARTSTATE x) =>
- 		 yybegin := x
- 
- fun lex (yyarg as ({comLevel,errWarn,sourceMap,charlist,stringstart})) =
- let fun continue() : Internal.result = 
--  let fun scan (s,AcceptingLeaves : Internal.yyfinstate list list,l,i0) =
--	let fun action (i,nil) = raise LexError
++
++	val YYBEGIN = fn (Internal.StartStates.STARTSTATE x) =>
++		 yybegin := x
++
++fun lex (yyarg as ({comLevel,errWarn,sourceMap,charlist,stringstart})) =
++let fun continue() : Internal.result = 
 +  let fun scan (s,AcceptingLeaves : Internal.yyfinstate list list,l,i0: int) =
 +	let fun action (i: int,nil) = raise LexError
- 	| action (i,nil::l) = action (i-1,l)
- 	| action (i,(node::acts)::l) =
- 		case node of
- 		    Internal.N yyk => 
--			(let fun yymktext() = substring(!yyb,i0,i-i0)
--			     val yypos = i0+ !yygone
++	| action (i,nil::l) = action (i-1,l)
++	| action (i,(node::acts)::l) =
++		case node of
++		    Internal.N yyk => 
 +			(let fun yymktext() = String.substring(!yyb,i0,i-i0)
 +			     val yypos: int = i0+ !yygone
- 			open UserDeclarations Internal.StartStates
-  in (yybufpos := i; case yyk of 
- 
-@@ -1018,30 +1020,30 @@
- 
- 		) end )
- 
--	val {fin,trans} = Unsafe.Vector.sub(Internal.tab, s)
++			open UserDeclarations Internal.StartStates
++ in (yybufpos := i; case yyk of 
++
++			(* Application actions *)
++
++  10 => (continue())
++| 100 => (Tokens.BAR(yypos,yypos+1))
++| 102 => (Tokens.AMP(yypos,yypos+1))
++| 104 => (Tokens.PERCENT(yypos,yypos+1))
++| 107 => (Tokens.LTE(yypos,yypos+2))
++| 110 => (Tokens.GTE(yypos,yypos+2))
++| 113 => (Tokens.EQ(yypos,yypos+2))
++| 115 => (Tokens.EQUALS(yypos,yypos+1))
++| 118 => (Tokens.PLUSEQUALS(yypos,yypos+2))
++| 121 => (Tokens.MINUSEQUALS(yypos,yypos+2))
++| 124 => (Tokens.XOREQUALS(yypos,yypos+2))
++| 127 => (Tokens.MODEQUALS(yypos,yypos+2))
++| 13 => (YYBEGIN C; continue())
++| 130 => (Tokens.TIMESEQUALS(yypos,yypos+2))
++| 133 => (Tokens.DIVEQUALS(yypos,yypos+2))
++| 136 => (Tokens.OREQUALS(yypos,yypos+2))
++| 139 => (Tokens.ANDEQUALS(yypos,yypos+2))
++| 143 => (Tokens.LSHIFTEQUALS(yypos,yypos+3))
++| 147 => (Tokens.RSHIFTEQUALS(yypos,yypos+3))
++| 149 => (Tokens.LT(yypos,yypos+1))
++| 151 => (Tokens.GT(yypos,yypos+1))
++| 154 => (Tokens.NEQ(yypos,yypos+2))
++| 157 => (Tokens.OR(yypos,yypos+2))
++| 16 => (YYBEGIN INITIAL; continue())
++| 160 => (Tokens.AND(yypos,yypos+2))
++| 163 => (Tokens.LSHIFT(yypos,yypos+2))
++| 166 => (Tokens.RSHIFT(yypos,yypos+2))
++| 172 => let val yytext=yymktext() in Tokens.DECNUM(mkOctInt(yytext,yypos,yypos+size(yytext),errWarn),yypos, yypos+size(yytext)) end
++| 179 => let val yytext=yymktext() in Tokens.DECNUM(mkHexInt(yytext,yypos,yypos+size(yytext),errWarn),yypos, yypos+size(yytext)) end
++| 18 => (continue())
++| 185 => let val yytext=yymktext() in Tokens.DECNUM(mkInt (yytext,yypos,yypos+size(yytext),errWarn), yypos,yypos+size(yytext)) end
++| 199 => let val yytext=yymktext() in Tokens.REALNUM(mkRealNum(yytext,yypos,yypos+size(yytext),errWarn), yypos, yypos
+++ size(yytext)) end
++| 20 => (charlist := [""]; stringstart := yypos; YYBEGIN S; continue())
++| 206 => let val yytext=yymktext() in let val s = substring(yytext, 2, size(yytext)-3)
++				     in Tokens.CCONST(IntInf.fromInt (mkOctChar(s,yypos,yypos+size(yytext),errWarn)),
++						      yypos,
++					      yypos+size(yytext))
++	                             end end
++| 213 => let val yytext=yymktext() in let val s = substring(yytext, 3, size(yytext)-4)
++				     in Tokens.CCONST(IntInf.fromInt (mkHexChar(s,yypos,yypos+size(yytext),errWarn)),
++						      yypos,
++						      yypos+size(yytext))
++	                             end end
++| 217 => let val yytext=yymktext() in let val cval = ordof(yytext,1)
++	                            in Tokens.CCONST(Int.toLarge cval,yypos,yypos+size(yytext))
++                                    end end
++| 22 => (YYBEGIN INITIAL;Tokens.STRING(makeString charlist,!stringstart,yypos+1))
++| 222 => let val yytext=yymktext() in Tokens.CCONST(IntInf.fromInt(special_char(substring(yytext,1,size(yytext)-2),yypos,yypos+size(yytext),errWarn)), yypos, yypos+size(yytext)) end
++| 225 => let val yytext=yymktext() in TokTable.checkToken(yytext,yypos) end
++| 227 => (continue())
++| 24 => ((#err errWarn) (!stringstart,yypos,"unclosed string");
++		    SourceMap.newline sourceMap yypos;
++		    YYBEGIN INITIAL; Tokens.STRING(makeString charlist,!stringstart,yypos))
++| 26 => let val yytext=yymktext() in addString(charlist,yytext); continue() end
++| 29 => (SourceMap.newline sourceMap yypos; continue())
++| 32 => (addString(charlist,chr 0);continue())
++| 37 => let val yytext=yymktext() in addString(charlist, chr(mkOctChar(substring(yytext, 1, size(yytext)-1), yypos, yypos+size(yytext), errWarn))); continue() end
++| 42 => let val yytext=yymktext() in addString(charlist, chr(mkHexChar(substring(yytext, 2, size(yytext)-2), yypos, yypos+size(yytext), errWarn))); continue() end
++| 46 => let val yytext=yymktext() in addString(charlist,chr(ordof(yytext,2)-ord("@"))); continue() end
++| 49 => let val yytext=yymktext() in addString(charlist, chr(special_char(yytext, yypos, yypos+size(yytext), errWarn))); continue() end
++| 5 => let val yytext=yymktext() in SourceMap.parseDirective sourceMap 
++                         (yypos,yytext); continue() end
++| 51 => (Tokens.COLON(yypos,yypos+1))
++| 53 => (Tokens.SEMICOLON(yypos,yypos+1))
++| 55 => (Tokens.LPAREN(yypos,yypos+1))
++| 57 => (Tokens.RPAREN(yypos,yypos+1))
++| 59 => (Tokens.LBRACE(yypos,yypos+1))
++| 61 => (Tokens.RBRACE(yypos,yypos+1))
++| 63 => (Tokens.LCURLY(yypos,yypos+1))
++| 65 => (Tokens.RCURLY(yypos,yypos+1))
++| 67 => (Tokens.DOT(yypos,yypos+1))
++| 7 => (SourceMap.newline sourceMap yypos; continue())
++| 71 => (Tokens.ELIPSIS(yypos,yypos+3))
++| 73 => (Tokens.COMMA(yypos,yypos+1))
++| 75 => (Tokens.TIMES(yypos,yypos+1))
++| 77 => (Tokens.BANG(yypos,yypos+1))
++| 79 => (Tokens.HAT(yypos,yypos+1))
++| 81 => (Tokens.PLUS(yypos,yypos+1))
++| 83 => (Tokens.MINUS(yypos,yypos+1))
++| 86 => (Tokens.INC(yypos,yypos+2))
++| 89 => (Tokens.DEC(yypos,yypos+2))
++| 92 => (Tokens.ARROW(yypos,yypos+1))
++| 94 => (Tokens.DIVIDE(yypos,yypos+1))
++| 96 => (Tokens.TILDE(yypos,yypos+1))
++| 98 => (Tokens.QUESTION(yypos,yypos+1))
++| _ => raise Internal.LexerError
++
++		) end )
++
 +	val {fin,trans} = Vector.sub (Internal.tab, s)
- 	val NewAcceptingLeaves = fin::AcceptingLeaves
- 	in if l = !yybl then
- 	     if trans = #trans(Vector.sub(Internal.tab,0))
- 	       then action(l,NewAcceptingLeaves
- ) else	    let val newchars= if !yydone then "" else yyinput 1024
--	    in if (size newchars)=0
++	val NewAcceptingLeaves = fin::AcceptingLeaves
++	in if l = !yybl then
++	     if trans = #trans(Vector.sub(Internal.tab,0))
++	       then action(l,NewAcceptingLeaves
++) else	    let val newchars= if !yydone then "" else yyinput 1024
 +	    in if (String.size newchars)=0
- 		  then (yydone := true;
- 		        if (l=i0) then UserDeclarations.eof yyarg
- 		                  else action(l,NewAcceptingLeaves))
- 		  else (if i0=l then yyb := newchars
--		     else yyb := substring(!yyb,i0,l-i0)^newchars;
++		  then (yydone := true;
++		        if (l=i0) then UserDeclarations.eof yyarg
++		                  else action(l,NewAcceptingLeaves))
++		  else (if i0=l then yyb := newchars
 +		     else yyb := String.substring(!yyb,i0,l-i0)^newchars;
- 		     yygone := !yygone+i0;
--		     yybl := size (!yyb);
++		     yygone := !yygone+i0;
 +		     yybl := String.size (!yyb);
- 		     scan (s,AcceptingLeaves,l-i0,0))
- 	    end
--	  else let val NewChar = Char.ord(Unsafe.CharVector.sub(!yyb,l))
++		     scan (s,AcceptingLeaves,l-i0,0))
++	    end
 +	  else let val NewChar = Char.ord (CharVector.sub (!yyb,l))
- 		val NewChar = if NewChar<128 then NewChar else 128
--		val NewState = Char.ord(Unsafe.CharVector.sub(trans,NewChar))
++		val NewChar = if NewChar<128 then NewChar else 128
 +		val NewState = Char.ord (CharVector.sub (trans,NewChar))
- 		in if NewState=0 then action(l,NewAcceptingLeaves)
- 		else scan(NewState,NewAcceptingLeaves,l+1,i0)
- 	end
- 	end
--	val start= if substring(!yyb,!yybufpos-1,1)="\n"
++		in if NewState=0 then action(l,NewAcceptingLeaves)
++		else scan(NewState,NewAcceptingLeaves,l+1,i0)
++	end
++	end
 +	val start= if String.substring(!yyb,!yybufpos-1,1)="\n"
- then !yybegin+1 else !yybegin
- 	in scan(start,nil,!yybufpos,!yybufpos)
-     end
++then !yybegin+1 else !yybegin
++	in scan(start,nil,!yybufpos,!yybufpos)
++    end
++in continue end
++  in lex
++  end
++end
 diff -Naur ckit/src/parser/parse-tree-sig.sml ckit-mlton/src/parser/parse-tree-sig.sml
 --- ckit/src/parser/parse-tree-sig.sml	2000-04-05 14:35:01.000000000 -0400
-+++ ckit-mlton/src/parser/parse-tree-sig.sml	2005-08-17 19:41:36.000000000 -0400
++++ ckit-mlton/src/parser/parse-tree-sig.sml	2006-05-02 22:38:21.000000000 -0400
 @@ -27,8 +27,10 @@
      | ModAssign | XorAssign | OrAssign | AndAssign
      | LshiftAssign | RshiftAssign 
@@ -1543,7 +19964,7 @@
    and declarationExt = 
 diff -Naur ckit/src/parser/parse-tree.sml ckit-mlton/src/parser/parse-tree.sml
 --- ckit/src/parser/parse-tree.sml	2000-04-05 14:35:01.000000000 -0400
-+++ ckit-mlton/src/parser/parse-tree.sml	2005-08-17 19:41:36.000000000 -0400
++++ ckit-mlton/src/parser/parse-tree.sml	2006-05-02 22:38:21.000000000 -0400
 @@ -23,8 +23,10 @@
      | ModAssign | XorAssign | OrAssign | AndAssign
      | LshiftAssign | RshiftAssign 

Modified: mlton/branches/on-20050420-cmm-branch/lib/ckit-lib/ckit.tgz
===================================================================
(Binary files differ)

Modified: mlton/branches/on-20050420-cmm-branch/lib/cml/core-cml/event.sml
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/cml/core-cml/event.sml	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/cml/core-cml/event.sml	2006-07-03 21:18:36 UTC (rev 4671)
@@ -421,7 +421,7 @@
 
       (* walk the event group tree, collecting the base events (with associated
        * ack flags), and a list of flag sets.  A flag set is a (cvar * ack flag list)
-       * pairs, where the flags are those associated with the events covered by the
+       * pair, where the flags are those associated with the events covered by the
        * nack cvar.
        *)
       type ack_flg = bool ref
@@ -590,10 +590,7 @@
                                   extRdy (backs, {prio = prio, doitFn = (doitFn, ackFlg)}::doitFns)
                              | _ => extRdy (backs, doitFns))
                end
-            val x =
-               case backs of
-                  [(bevt, _)] => syncOnBEvt bevt
-                | _ => (S.atomicBegin (); ext (backs, []))
+            val x = (S.atomicBegin (); ext (backs, []))
             val () = debug' "syncOnGrp(4)" (* NonAtomic *)
             val () = Assert.assertNonAtomic' "Event.syncOnGrp(4)"
          in

Copied: mlton/branches/on-20050420-cmm-branch/lib/mlrisc-lib (from rev 4670, mlton/trunk/lib/mlrisc-lib)


Property changes on: mlton/branches/on-20050420-cmm-branch/lib/mlrisc-lib
___________________________________________________________________
Name: svn:ignore
   + MLRISC


Copied: mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/inet-sock.sml (from rev 4670, mlton/trunk/lib/mlton/basic/inet-sock.sml)

Copied: mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/socket.sml (from rev 4670, mlton/trunk/lib/mlton/basic/socket.sml)

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/sources.cm
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/sources.cm	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/sources.cm	2006-07-03 21:18:36 UTC (rev 4671)
@@ -27,6 +27,7 @@
 signature SUM
 signature T
 signature UNIQUE_ID
+signature VECTOR
 
 structure AppendList
 structure Array
@@ -36,6 +37,7 @@
 structure BinarySearch
 structure Bool
 structure Buffer
+structure Byte
 structure Char
 structure CharArray
 structure CharBuffer
@@ -70,6 +72,7 @@
 structure Int32
 structure IntInf
 structure InsertionSort
+structure INetSock
 structure Iterate
 structure Itimer
 structure Justify
@@ -117,6 +120,7 @@
 structure SMLofNJ
 structure Sexp
 structure Signal
+structure Socket
 structure Stream
 structure String
 structure StringCvt
@@ -124,18 +128,22 @@
 structure SysWord
 structure Thread
 structure Time
+structure Timer
 structure Trace
 structure Tree
 structure TwoListQueue
 structure Unimplemented
 structure Unit
 structure Unsafe
+structure Url
 structure Vector
 structure Word
 structure Word32
 structure Word8
 structure Word8Array
+structure Word8ArraySlice
 structure Word8Vector
+structure Word16
 
 functor AlphaBeta
 functor Control
@@ -326,6 +334,10 @@
 escape.sml
 buffer.sig
 buffer.sml
+socket.sml
+word16.sml
+inet-sock.sml
+word8-array-slice.sml
 
 # if ( defined(SMLNJ_VERSION) )
 

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/sources.mlb
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/sources.mlb	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/sources.mlb	2006-07-03 21:18:36 UTC (rev 4671)
@@ -198,6 +198,7 @@
       signature STRING
       signature T
       signature UNIQUE_ID
+      signature VECTOR
 
       structure AppendList
       structure Array

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/string.sig
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/string.sig	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/string.sig	2006-07-03 21:18:36 UTC (rev 4671)
@@ -26,6 +26,7 @@
       val baseName: t * t -> t
       val compare: t * t -> Relation.t
       val concat: t list -> t
+      val concatV: t vector -> t
       val concatWith: t list * t -> t
       val contains: t * char -> bool
       val deleteSurroundingWhitespace: t -> t
@@ -41,6 +42,7 @@
       val escapeC: t -> t
       val escapeSML: t -> t
       val existsi: t * (int * char -> bool) -> bool
+      val exists: t * (char -> bool) -> bool
       val explode: t -> char list
       (* extract (s, i, SOME j)
        * returns the substring of s of length j starting at i.
@@ -103,6 +105,7 @@
       val toUpper: t -> t
       val tokens: t * (char -> bool) -> t list 
       val translate: t * (char -> t) -> t
+      val unfold: int * 'a * ('a -> char * 'a) -> t
    end
 
 

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/string.sml
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/string.sml	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/string.sml	2006-07-03 21:18:36 UTC (rev 4671)
@@ -11,8 +11,42 @@
    struct
       open String1
 
+      fun unfold (n, a, f) =
+         let
+            val r = ref a
+         in
+            tabulate (n, fn _ =>
+                      let
+                         val (b, a) = f (!r)
+                         val () = r := a
+                      in
+                         b
+                      end)
+         end
+
+      fun concatV ss = 
+         case Vector.length ss of
+            0 => ""
+          | 1 => Vector.sub (ss, 0)
+          | _ =>
+               let
+                  val n =
+                     Vector.fold (ss, 0, fn (s, n) => n + size s)
+                  val a = Array.new (n, #"a")
+                  val _ =
+                     Vector.fold
+                     (ss, 0, fn (s, i) =>
+                      fold (s, i, fn (c, i) =>
+                            (Array.update (a, i, c);
+                             i + 1)))
+               in
+                  tabulate (n, fn i => Array.sub (a, i))
+               end
+
       fun existsi (s, f) = Int.exists (0, size s, fn i => f (i, sub (s, i)))
 
+      fun exists (s, f) = existsi (s, f o #2)
+
       fun keepAll (s: t, f: char -> bool): t =
          implode (List.rev
                   (fold (s, [], fn (c, ac) => if f c then c :: ac else ac)))

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/vector.fun
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/vector.fun	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/vector.fun	2006-07-03 21:18:36 UTC (rev 4671)
@@ -13,9 +13,11 @@
 
 open S
 
+val size = length
+
 fun unfold (n, a, f) = unfoldi (n, a, f o #2)
    
-fun tabulate (n, f) = unfoldi (n, (), fn (i, ()) => (f i, ()))
+fun tabulate (n, f) = #1 (unfoldi (n, (), fn (i, ()) => (f i, ())))
 
 fun fromArray a =
    tabulate (Pervasive.Array.length a, fn i => Pervasive.Array.sub (a, i))
@@ -455,36 +457,37 @@
          let
             val n = List.fold (vs, 0, fn (v, s) => s + length v)
          in
-            unfold (n, (0, v, vs'),
-                    let
-                       fun loop (i, v, vs) =
-                          if i < length v
-                             then (sub (v, i), (i + 1, v, vs))
-                          else
-                             case vs of
-                                [] => Error.bug "Vector.concat"
-                              | v :: vs => loop (0, v, vs)
-                    in loop
-                    end)
+            #1 (unfold (n, (0, v, vs'),
+                        let
+                           fun loop (i, v, vs) =
+                              if i < length v
+                                 then (sub (v, i), (i + 1, v, vs))
+                              else
+                                 case vs of
+                                    [] => Error.bug "Vector.concat"
+                                  | v :: vs => loop (0, v, vs)
+                        in loop
+                        end))
          end
 
 fun concatV vs =
-   if 0 = length vs
-      then new0 ()
+   if 0 = length vs then
+      new0 ()
    else
       let
          val n = fold (vs, 0, fn (v, s) => s + length v)
          fun state i = (i, sub (vs, i), 0)
       in
-         unfold (n, state 0,
-                 let
-                    fun loop (i, v, j) =
-                       if j < length v
-                          then (sub (v, j), (i, v, j + 1))
-                       else loop (state (i + 1))
-                 in loop
-                 end)
-   end
+         #1 (unfold (n, state 0,
+                     let
+                        fun loop (i, v, j) =
+                           if j < length v then
+                              (sub (v, j), (i, v, j + 1))
+                           else
+                              loop (state (i + 1))
+                     in loop
+                     end))
+      end
 
 fun splitLast v =
    let

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/vector.sig
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/vector.sig	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/vector.sig	2006-07-03 21:18:36 UTC (rev 4671)
@@ -14,7 +14,7 @@
 
       val length: 'a t -> int
       val sub: 'a t * int -> 'a
-      val unfoldi: int * 'a * (int * 'a -> 'b * 'a) -> 'b t
+      val unfoldi: int * 'b * (int * 'b -> 'a * 'b) -> 'a t * 'b
    end
 
 signature VECTOR =
@@ -111,6 +111,7 @@
       val removeDuplicates: 'a t * ('a * 'a -> bool) -> 'a t
       val removeFirst: 'a t * ('a -> bool) -> 'a t
       val rev: 'a t -> 'a t
+      val size: 'a t -> int
       val splitLast: 'a t -> 'a t * 'a
       val tabulate: int * (int -> 'a) -> 'a t
       val tabulator: int * (('a -> unit) -> unit) -> 'a t

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/word.sml
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/word.sml	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/word.sml	2006-07-03 21:18:36 UTC (rev 4671)
@@ -23,15 +23,7 @@
                  orb (w (2, 0w16), w (3, 0w24)))
          end
 
-      local
-         val wordSize = fromInt wordSize
-      in
-         fun rotateLeft (w: t, n: t) =
-            let val l = n mod wordSize
-               val r = wordSize - l
-            in orb (<< (w, l), >> (w, r))
-            end
-      end
+      val rotateLeft = MLton.Word.rol
 
       val fromWord = fn x => x
       val toWord = fn x => x

Copied: mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/word16.sml (from rev 4670, mlton/trunk/lib/mlton/basic/word16.sml)

Copied: mlton/branches/on-20050420-cmm-branch/lib/mlton/basic/word8-array-slice.sml (from rev 4670, mlton/trunk/lib/mlton/basic/word8-array-slice.sml)

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton/pervasive/pervasive.sml
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton/pervasive/pervasive.sml	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton/pervasive/pervasive.sml	2006-07-03 21:18:36 UTC (rev 4671)
@@ -36,6 +36,7 @@
       structure Real = Real
       structure Real32 = Real32
       structure Real64 = Real64
+      structure Socket = Socket
       structure String = String
       structure StringCvt = StringCvt
       structure Substring = Substring
@@ -47,6 +48,7 @@
       structure Word = Word
       structure Word32 = Word32
       structure Word8 = Word8
+      structure Word16 = Word16
       structure Word8Array = Word8Array
 
       type unit = General.unit

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton/sources.cm
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton/sources.cm	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton/sources.cm	2006-07-03 21:18:36 UTC (rev 4671)
@@ -46,6 +46,7 @@
 signature SUM
 signature T
 signature UNIQUE_ID
+signature VECTOR
 
 structure AppendList
 structure Array
@@ -55,6 +56,7 @@
 structure BinarySearch
 structure Bool
 structure Buffer
+structure Byte
 structure Char
 structure CharArray
 structure CharBuffer
@@ -90,6 +92,7 @@
 structure Int32
 structure IntInf
 structure InsertionSort
+structure INetSock
 structure Iterate
 structure Itimer
 structure Justify
@@ -138,6 +141,7 @@
 structure Sexp
 structure Signal
 structure SMLofNJ
+structure Socket
 structure Stream
 structure String
 structure StringCvt
@@ -145,17 +149,21 @@
 structure SysWord
 structure Thread
 structure Time
+structure Timer
 structure Trace
 structure Tree
 structure TwoListQueue
 structure Unimplemented
 structure Unit
 structure Unsafe
+structure Url
 structure Vector
 structure Word
 structure Word8
 structure Word8Array
+structure Word8ArraySlice
 structure Word8Vector
+structure Word16
 structure Word32
    
 functor AlphaBeta

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton/sources.mlb
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton/sources.mlb	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton/sources.mlb	2006-07-03 21:18:36 UTC (rev 4671)
@@ -32,6 +32,7 @@
       signature STRING
       signature T
       signature UNIQUE_ID
+      signature VECTOR
 
       structure AppendList
       structure Array

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/array.sig
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/array.sig	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/array.sig	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,5 +1,6 @@
-(* Copyright (C) 2002-2005 Henry Cejtin, Matthew Fluet, Suresh
+(* Copyright (C) 1999-2005 Henry Cejtin, Matthew Fluet, Suresh
  *    Jagannathan, and Stephen Weeks.
+ * Copyright (C) 1997-2000 NEC Research Institute.
  *
  * MLton is released under a BSD-style license.
  * See the file MLton-LICENSE for details.
@@ -9,5 +10,5 @@
    
 signature MLTON_ARRAY =
    sig
-      val unfoldi: int * 'b * (int * 'b -> 'a * 'b) -> 'a array
+      val unfoldi: int * 'b * (int * 'b -> 'a * 'b) -> 'a array * 'b
    end

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/bin-io.sig
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/bin-io.sig	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/bin-io.sig	2006-07-03 21:18:36 UTC (rev 4671)
@@ -5,7 +5,5 @@
  * See the file MLton-LICENSE for details.
  *)
 
-signature MLTON_BIN_IO =
-   MLTON_IO
-   where type instream = BinIO.instream
-   where type outstream = BinIO.outstream
+signature MLTON_BIN_IO = MLTON_IO
+

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/mlton.sml
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/mlton.sml	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/mlton.sml	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,4 +1,4 @@
-(* Copyright (C) 1999-2005 Henry Cejtin, Matthew Fluet, Suresh
+(* Copyright (C) 1999-2006 Henry Cejtin, Matthew Fluet, Suresh
  *    Jagannathan, and Stephen Weeks.
  * Copyright (C) 1997-2000 NEC Research Institute.
  *
@@ -59,14 +59,16 @@
             fun unfoldi (n, a, f) =
                let
                   val r = ref a
+                  val a =
+                     tabulate (n, fn i =>
+                               let
+                                  val (b, a') = f (i, !r)
+                                  val _ = r := a'
+                               in
+                                  b
+                               end)
                in
-                  tabulate (n, fn i =>
-                            let
-                               val (b, a') = f (i, !r)
-                               val _ = r := a'
-                            in
-                               b
-                            end)
+                  (a, !r)
                end
          end
       
@@ -208,9 +210,11 @@
             structure OS =
                struct
                   datatype t =
-                     Cygwin
+                     AIX
+                   | Cygwin
                    | Darwin
                    | FreeBSD
+                   | HPUX
                    | Linux
                    | MinGW
                    | NetBSD
@@ -219,9 +223,11 @@
 
                   val host: t = Linux
 
-                  val all = [(Cygwin, "Cygwin"),
+                  val all = [(AIX, "AIX"),
+                             (Cygwin, "Cygwin"),
                              (Darwin, "Darwin"),
                              (FreeBSD, "FreeBSD"),
+                             (HPUX, "HPUX"),
                              (Linux, "Linux"),
                              (MinGW, "MinGW"),
                              (NetBSD, "NetBSD"),
@@ -277,6 +283,8 @@
 
       structure ProcEnv =
          struct
+            type gid = Posix.ProcEnv.gid
+               
             fun setenv _ = raise Fail "setenv"
             fun setgroups _ = raise Fail "setgroups"
          end
@@ -568,17 +576,55 @@
          struct
             open Vector
 
+            fun create (n, f) =
+               let
+                  val r = ref (Array.fromList [])
+                  val lim = ref 0
+                  fun check i =
+                     if 0 <= i andalso i < !lim then () else raise Subscript
+                  val sub = fn i => (check i; Array.sub (!r, i))
+                  val update = fn (i, x) => (check i; Array.update (!r, i, x))
+                  val (tab, finish) = f {sub = sub, update = update}
+               in
+                  if 0 = n then
+                     (finish (); Vector.fromList [])
+                  else
+                     let
+                        val init = tab 0
+                        val a = Array.array (n, init)
+                        val () = r := a
+                        val () =
+                           Array.modifyi (fn (i, _) =>
+                                          let
+                                             val res =
+                                                if i = 0 then
+                                                   init
+                                                else
+                                                   tab i
+                                             val () = lim := i + 1
+                                          in
+                                             res
+                                          end)
+                           a
+                        val () = finish ()
+                     in
+                        Array.vector a
+                     end
+               end
+               
             fun unfoldi (n, a, f) =
                let
                   val r = ref a
+                  val v =
+                     tabulate (n, fn i =>
+                               let
+                                  val (b, a') = f (i, !r)
+                                  val _ = r := a'
+                               in
+                                  b
+                               end)
                in
-                  tabulate (n, fn i =>
-                            let
-                               val (b, a') = f (i, !r)
-                               val _ = r := a'
-                            in
-                               b
-                            end)
+                  (v, !r)
                end
          end
 

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/platform.sig
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/platform.sig	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/platform.sig	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,4 +1,4 @@
-(* Copyright (C) 2003-2005 Henry Cejtin, Matthew Fluet, Suresh
+(* Copyright (C) 2003-2006 Henry Cejtin, Matthew Fluet, Suresh
  *    Jagannathan, and Stephen Weeks.
  *
  * MLton is released under a BSD-style license.
@@ -20,9 +20,11 @@
       structure OS:
          sig
             datatype t =
-               Cygwin
+               AIX
+             | Cygwin
              | Darwin
              | FreeBSD
+             | HPUX
              | Linux
              | MinGW
              | NetBSD

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/pointer.sig
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/pointer.sig	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/pointer.sig	2006-07-03 21:18:36 UTC (rev 4671)
@@ -5,6 +5,9 @@
  * See the file MLton-LICENSE for details.
  *)
 
+type int = Int.int
+type word = Word.word
+
 signature MLTON_POINTER =
    sig
       eqtype t
@@ -12,7 +15,7 @@
       val add: t * word -> t
       val compare: t * t -> order
       val diff: t * t -> word
-      val free: t -> unit
+(*      val free: t -> unit *)
       val getInt8: t * int -> Int8.int
       val getInt16: t * int -> Int16.int
       val getInt32: t * int -> Int32.int

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/proc-env.sig
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/proc-env.sig	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/proc-env.sig	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,5 +1,6 @@
-(* Copyright (C) 2002-2005 Henry Cejtin, Matthew Fluet, Suresh
+(* Copyright (C) 1999-2005 Henry Cejtin, Matthew Fluet, Suresh
  *    Jagannathan, and Stephen Weeks.
+ * Copyright (C) 1997-2000 NEC Research Institute.
  *
  * MLton is released under a BSD-style license.
  * See the file MLton-LICENSE for details.
@@ -7,5 +8,8 @@
 
 signature MLTON_PROC_ENV =
    sig
+      type gid
+
       val setenv: {name: string, value: string} -> unit
+      val setgroups: gid list -> unit
    end

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/sources.cm
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/sources.cm	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/sources.cm	2006-07-03 21:18:36 UTC (rev 4671)
@@ -29,6 +29,7 @@
 structure Int32
 structure Int64
 structure IntInf
+structure INetSock
 structure IO
 structure LargeInt
 structure LargeReal
@@ -49,19 +50,23 @@
 structure RealVector
 structure SML90
 structure SMLofNJ
+structure Socket
 structure String
 structure StringCvt
 structure Substring
 structure SysWord
 structure TextIO
 structure Time
+structure Timer
 structure Unix
 structure Unsafe
 structure Vector
 structure Word
 structure Word8
 structure Word8Array
+structure Word8ArraySlice
 structure Word8Vector
+structure Word16
 structure Word32
 structure Word64
 

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/text-io.sig
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/text-io.sig	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/text-io.sig	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,11 +1,9 @@
-(* Copyright (C) 2002-2005 Henry Cejtin, Matthew Fluet, Suresh
+(* Copyright (C) 1999-2005 Henry Cejtin, Matthew Fluet, Suresh
  *    Jagannathan, and Stephen Weeks.
+ * Copyright (C) 1997-2000 NEC Research Institute.
  *
  * MLton is released under a BSD-style license.
  * See the file MLton-LICENSE for details.
  *)
 
-signature MLTON_TEXT_IO =
-   MLTON_IO
-   where type instream = TextIO.instream
-   where type outstream = TextIO.outstream
+signature MLTON_TEXT_IO = MLTON_IO

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/vector.sig
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/vector.sig	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs/vector.sig	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,5 +1,6 @@
-(* Copyright (C) 2002-2005 Henry Cejtin, Matthew Fluet, Suresh
+(* Copyright (C) 1999-2005 Henry Cejtin, Matthew Fluet, Suresh
  *    Jagannathan, and Stephen Weeks.
+ * Copyright (C) 1997-2000 NEC Research Institute.
  *
  * MLton is released under a BSD-style license.
  * See the file MLton-LICENSE for details.
@@ -9,6 +10,10 @@
 
 signature MLTON_VECTOR =
    sig
-      val unfoldi: int * 'b * (int * 'b -> 'a * 'b) -> 'a vector
+      val create:
+         int * ({sub: int -> 'a, update: int * 'a -> unit}
+                -> (int -> 'a) * (unit -> unit))
+         -> 'a vector
+      val unfoldi: int * 'b * (int * 'b -> 'a * 'b) -> 'a vector * 'b
    end
    

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs-in-smlnj/array.sml
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs-in-smlnj/array.sml	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs-in-smlnj/array.sml	2006-07-03 21:18:36 UTC (rev 4671)
@@ -100,3 +100,77 @@
 structure RealArray = MonoArray (RealArray)
 structure Real64Array = RealArray
 structure Word8Array = MonoArray (Word8Array)
+
+functor MonoArraySlice (S: MONO_ARRAY_SLICE) =
+   let
+      open OpenInt32
+   in
+      struct
+         type array = S.array
+         type elem = S.elem
+         type slice = S.slice
+         type vector = S.vector
+         type vector_slice = S.vector_slice
+
+         val all = S.all
+
+         val app = S.app
+
+         fun appi f = S.appi (fn (i, e) => f (fromInt i, e))
+
+         fun base s =
+            let
+               val (a, i, j) = S.base s
+            in
+               (a, fromInt i, fromInt j)
+            end
+         
+         val collate = S.collate
+
+         fun copy {di, dst, src} = S.copy {di = toInt di, dst = dst, src = src}
+
+         fun copyVec {di, dst, src} =
+            S.copyVec {di = toInt di, dst = dst, src = src}
+
+         val exists = S.exists
+
+         val find = S.find
+
+         fun findi f s =
+            case S.findi (fn (i, e) => f (fromInt i, e)) s of
+               NONE => NONE
+             | SOME (i, e) => SOME (fromInt i, e)
+                  
+         val foldl = S.foldl
+            
+         fun foldli f = S.foldli (fn (i, e, b) => f (fromInt i, e, b))
+            
+         val foldr = S.foldr
+
+         fun foldri f = S.foldri (fn (i, e, b) => f (fromInt i, e, b))
+
+         val full = S.full
+
+         val getItem = S.getItem
+
+         val isEmpty = S.isEmpty
+
+         val length = fromInt o S.length
+
+         val modify = S.modify
+
+         fun modifyi f = S.modifyi (fn (i, e) => f (fromInt i, e))
+
+         fun slice (a, i, j) = S.slice (a, toInt i, toIntOpt j)
+            
+         fun sub (s, i) = S.sub (s, toInt i)
+            
+         fun subslice (s, i, j) = S.subslice (s, toInt i, toIntOpt j)
+
+         fun update (s, i, e) = S.update (s, toInt i, e)
+
+         val vector = S.vector
+      end
+   end
+
+structure Word8ArraySlice = MonoArraySlice (Word8ArraySlice)

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs-in-smlnj/open-int32.sml
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs-in-smlnj/open-int32.sml	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs-in-smlnj/open-int32.sml	2006-07-03 21:18:36 UTC (rev 4671)
@@ -10,6 +10,9 @@
    struct
       val toInt = Pervasive.Int32.toInt
       val fromInt = Pervasive.Int32.fromInt
+      val fromIntOpt =
+         fn NONE => NONE
+          | SOME i => SOME (fromInt i)
       val toIntOpt =
          fn NONE => NONE
           | SOME i => SOME (toInt i)

Copied: mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs-in-smlnj/socket.sml (from rev 4670, mlton/trunk/lib/mlton-stubs-in-smlnj/socket.sml)

Modified: mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs-in-smlnj/sources.cm
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs-in-smlnj/sources.cm	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/mlton-stubs-in-smlnj/sources.cm	2006-07-03 21:18:36 UTC (rev 4671)
@@ -31,6 +31,7 @@
 structure Int32
 structure Int64
 structure IntInf
+structure INetSock
 structure IO
 structure LargeInt
 structure LargeReal
@@ -58,6 +59,7 @@
 structure SysWord
 structure TextIO
 structure Time
+structure Timer
 structure Unix
 structure Unsafe
 structure Vector
@@ -67,6 +69,7 @@
 structure Word32
 structure Word64
 structure Word8Array
+structure Word8ArraySlice
 structure Word8Vector
 
 is
@@ -91,6 +94,7 @@
 other.sml
 posix.sml
 real.sml
+socket.sml
 string-cvt.sml
 string.sml
 substring.sml

Modified: mlton/branches/on-20050420-cmm-branch/lib/smlnj-lib/Makefile
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/smlnj-lib/Makefile	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/smlnj-lib/Makefile	2006-07-03 21:18:36 UTC (rev 4671)
@@ -9,6 +9,7 @@
 all: smlnj-lib/README.mlton
 
 smlnj-lib/README.mlton: smlnj-lib.tgz smlnj-lib.patch
+	rm -rf smlnj-lib
 	gzip -dc smlnj-lib.tgz | tar xf -
 	chmod -R a+r smlnj-lib
 	chmod -R g-s smlnj-lib

Modified: mlton/branches/on-20050420-cmm-branch/lib/smlnj-lib/smlnj-lib.patch
===================================================================
--- mlton/branches/on-20050420-cmm-branch/lib/smlnj-lib/smlnj-lib.patch	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/lib/smlnj-lib/smlnj-lib.patch	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,6 +1,6 @@
 diff -Naur smlnj-lib/Controls/controls-lib.mlb smlnj-lib-mlton/Controls/controls-lib.mlb
 --- smlnj-lib/Controls/controls-lib.mlb	1969-12-31 19:00:00.000000000 -0500
-+++ smlnj-lib-mlton/Controls/controls-lib.mlb	2005-11-21 11:37:31.000000000 -0500
++++ smlnj-lib-mlton/Controls/controls-lib.mlb	2006-05-02 23:00:43.000000000 -0400
 @@ -0,0 +1,170 @@
 +
 +ann
@@ -174,7 +174,7 @@
 +end
 diff -Naur smlnj-lib/HashCons/hash-cons-lib.mlb smlnj-lib-mlton/HashCons/hash-cons-lib.mlb
 --- smlnj-lib/HashCons/hash-cons-lib.mlb	1969-12-31 19:00:00.000000000 -0500
-+++ smlnj-lib-mlton/HashCons/hash-cons-lib.mlb	2005-11-21 11:37:34.000000000 -0500
++++ smlnj-lib-mlton/HashCons/hash-cons-lib.mlb	2006-05-02 23:00:43.000000000 -0400
 @@ -0,0 +1,144 @@
 +
 +ann
@@ -321,7 +321,7 @@
 +
 +end
 diff -Naur smlnj-lib/HTML/html-attrs-fn.sml smlnj-lib-mlton/HTML/html-attrs-fn.sml
---- smlnj-lib/HTML/html-attrs-fn.sml	2004-11-20 10:28:05.000000000 -0500
+--- smlnj-lib/HTML/html-attrs-fn.sml	2003-05-22 18:46:30.000000000 -0400
 +++ smlnj-lib-mlton/HTML/html-attrs-fn.sml	2005-08-17 20:13:04.000000000 -0400
 @@ -89,19 +89,24 @@
  		fun error () = (
@@ -434,8 +434,8 @@
 +
 +end
 diff -Naur smlnj-lib/HTML/html-elements-fn.sml smlnj-lib-mlton/HTML/html-elements-fn.sml
---- smlnj-lib/HTML/html-elements-fn.sml	2005-11-17 15:53:08.000000000 -0500
-+++ smlnj-lib-mlton/HTML/html-elements-fn.sml	2005-11-17 15:55:26.000000000 -0500
+--- smlnj-lib/HTML/html-elements-fn.sml	2005-11-06 14:36:15.000000000 -0500
++++ smlnj-lib-mlton/HTML/html-elements-fn.sml	2005-11-17 21:02:49.000000000 -0500
 @@ -144,7 +144,8 @@
     *   3) a string literal enclosed in ''
     *)
@@ -446,123 +446,9370 @@
  	    | isNameChar c = (Char.isAlphaNum c)
  	  in
  	    case SS.getc ss
+diff -Naur smlnj-lib/HTML/html-gram.desc smlnj-lib-mlton/HTML/html-gram.desc
+--- smlnj-lib/HTML/html-gram.desc	1969-12-31 19:00:00.000000000 -0500
++++ smlnj-lib-mlton/HTML/html-gram.desc	2006-05-02 23:00:43.000000000 -0400
+@@ -0,0 +1,6055 @@
++
++state 0:
++
++	Document : . StartHTML Head Body EndHTML 
++
++	START_HTML	shift 2
++
++	Document	goto 282
++	StartHTML	goto 1
++
++	.	reduce by rule 1
++
++
++state 1:
++
++	Document : StartHTML . Head Body EndHTML 
++
++	START_HEAD	shift 5
++
++	Head	goto 4
++	StartHEAD	goto 3
++
++	.	reduce by rule 6
++
++
++state 2:
++
++	StartHTML : START_HTML .  (reduce by rule 2)
++
++
++
++	.	reduce by rule 2
++
++
++state 3:
++
++	Head : StartHEAD . HeadContents EndHEAD 
++
++	TAG_BASE	shift 14
++	TAG_ISINDEX	shift 13
++	TAG_LINK	shift 12
++	TAG_META	shift 11
++	START_SCRIPT	shift 10
++	START_STYLE	shift 9
++
++	HeadContents	goto 8
++	HeadElements	goto 7
++	HeadElement	goto 6
++
++	.	reduce by rule 11
++
++
++state 4:
++
++	Document : StartHTML Head . Body EndHTML 
++
++	START_A	shift 79
++	START_ADDRESS	shift 78
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	START_BODY	shift 73
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	Body	goto 27
++	BodyContent0	goto 26
++	BodyElement	goto 25
++	BlockWOIndex	goto 24
++	Paragraph	goto 23
++	List	goto 22
++	Preformatted	goto 21
++	TextWOScript	goto 20
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	error
++
++
++state 5:
++
++	StartHEAD : START_HEAD .  (reduce by rule 7)
++
++
++
++	.	reduce by rule 7
++
++
++state 6:
++
++	HeadElements : HeadElement . HeadElements 
++
++	TAG_BASE	shift 14
++	TAG_ISINDEX	shift 13
++	TAG_LINK	shift 12
++	TAG_META	shift 11
++	START_SCRIPT	shift 10
++	START_STYLE	shift 9
++
++	HeadElements	goto 80
++	HeadElement	goto 6
++
++	.	reduce by rule 11
++
++
++state 7:
++
++	HeadContents : HeadElements . START_TITLE PCData END_TITLE HeadElements 
++
++	START_TITLE	shift 81
++
++
++	.	error
++
++
++state 8:
++
++	Head : StartHEAD HeadContents . EndHEAD 
++
++	END_HEAD	shift 83
++
++	EndHEAD	goto 82
++
++	.	reduce by rule 8
++
++
++state 9:
++
++	HeadElement : START_STYLE . PCData END_STYLE 
++
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	PCData	goto 86
++	PCDataList	goto 85
++	PCDataElem	goto 84
++
++	.	reduce by rule 150
++
++
++state 10:
++
++	HeadElement : START_SCRIPT . PCData END_SCRIPT 
++
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	PCData	goto 87
++	PCDataList	goto 85
++	PCDataElem	goto 84
++
++	.	reduce by rule 150
++
++
++state 11:
++
++	HeadElement : TAG_META .  (reduce by rule 13)
++
++
++
++	.	reduce by rule 13
++
++
++state 12:
++
++	HeadElement : TAG_LINK .  (reduce by rule 14)
++
++
++
++	.	reduce by rule 14
++
++
++state 13:
++
++	HeadElement : TAG_ISINDEX .  (reduce by rule 15)
++
++
++
++	.	reduce by rule 15
++
++
++state 14:
++
++	HeadElement : TAG_BASE .  (reduce by rule 16)
++
++
++
++	.	reduce by rule 16
++
++
++state 15:
++
++	TextWOScript : PCDataElem .  (reduce by rule 108)
++
++
++
++	.	reduce by rule 108
++
++
++state 16:
++
++	TextWOScript : Form .  (reduce by rule 112)
++
++
++
++	.	reduce by rule 112
++
++
++state 17:
++
++	TextWOScript : Special .  (reduce by rule 111)
++
++
++
++	.	reduce by rule 111
++
++
++state 18:
++
++	TextWOScript : Phrase .  (reduce by rule 110)
++
++
++
++	.	reduce by rule 110
++
++
++state 19:
++
++	TextWOScript : Font .  (reduce by rule 109)
++
++
++
++	.	reduce by rule 109
++
++
++state 20:
++
++	BodyContent0 : TextWOScript . BodyContent1 
++
++	START_A	shift 79
++	START_ADDRESS	shift 78
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BodyContent1	goto 94
++	BodyElement	goto 93
++	BlockWOIndex	goto 92
++	Block	goto 91
++	Paragraph	goto 90
++	List	goto 22
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 88
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 29
++
++
++state 21:
++
++	BlockWOIndex : Preformatted .  (reduce by rule 55)
++
++
++
++	.	reduce by rule 55
++
++
++state 22:
++
++	BlockWOIndex : List .  (reduce by rule 54)
++
++
++
++	.	reduce by rule 54
++
++
++state 23:
++
++	BodyContent0 : Paragraph . END_P BodyContent1 
++	BodyContent0 : Paragraph . BodyContent2 
++
++	START_ADDRESS	shift 78
++	START_BLOCKQUOTE	shift 74
++	START_CENTER	shift 71
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	TAG_ISINDEX	shift 96
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	END_P	shift 101
++	START_PRE	shift 44
++	START_TABLE	shift 36
++	START_UL	shift 32
++
++	BodyContent2	goto 100
++	BodyElement	goto 99
++	BlockWOIndex	goto 92
++	Block	goto 98
++	Paragraph	goto 97
++	List	goto 22
++	Preformatted	goto 21
++
++	.	reduce by rule 35
++
++
++state 24:
++
++	BodyContent0 : BlockWOIndex . BodyContent1 
++
++	START_A	shift 79
++	START_ADDRESS	shift 78
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BodyContent1	goto 102
++	BodyElement	goto 93
++	BlockWOIndex	goto 92
++	Block	goto 91
++	Paragraph	goto 90
++	List	goto 22
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 88
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 29
++
++
++state 25:
++
++	BodyContent0 : BodyElement . BodyContent1 
++
++	START_A	shift 79
++	START_ADDRESS	shift 78
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BodyContent1	goto 103
++	BodyElement	goto 93
++	BlockWOIndex	goto 92
++	Block	goto 91
++	Paragraph	goto 90
++	List	goto 22
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 88
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 29
++
++
++state 26:
++
++	Body : BodyContent0 . EndBODY 
++
++	END_BODY	shift 105
++
++	EndBODY	goto 104
++
++	.	reduce by rule 20
++
++
++state 27:
++
++	Document : StartHTML Head Body . EndHTML 
++
++	END_HTML	shift 107
++
++	EndHTML	goto 106
++
++	.	reduce by rule 3
++
++
++state 28:
++
++	PCDataElem : ENTITY_REF .  (reduce by rule 154)
++
++
++
++	.	reduce by rule 154
++
++
++state 29:
++
++	PCDataElem : CHAR_REF .  (reduce by rule 153)
++
++
++
++	.	reduce by rule 153
++
++
++state 30:
++
++	PCDataElem : PCDATA .  (reduce by rule 152)
++
++
++
++	.	reduce by rule 152
++
++
++state 31:
++
++	Phrase : START_VAR . TextList END_VAR 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 110
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 32:
++
++	List : START_UL . ListItemList END_UL 
++
++	START_LI	shift 113
++
++	ListItemList	goto 112
++	ListItem	goto 111
++
++	.	reduce by rule 70
++
++
++state 33:
++
++	Font : START_U . TextList END_U 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 114
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 34:
++
++	Font : START_TT . TextList END_TT 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 115
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 35:
++
++	Form : START_TEXTAREA . PCData END_TEXTAREA 
++
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	PCData	goto 116
++	PCDataList	goto 85
++	PCDataElem	goto 84
++
++	.	reduce by rule 150
++
++
++state 36:
++
++	BlockWOIndex : START_TABLE . optCaption TableRowList END_TABLE 
++
++	START_CAPTION	shift 118
++
++	optCaption	goto 117
++
++	.	reduce by rule 93
++
++
++state 37:
++
++	Font : START_SUP . TextList END_SUP 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 119
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 38:
++
++	Font : START_SUB . TextList END_SUB 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 120
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 39:
++
++	Phrase : START_STRONG . TextList END_STRONG 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 121
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 40:
++
++	Font : START_STRIKE . TextList END_STRIKE 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 122
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 41:
++
++	Font : START_SMALL . TextList END_SMALL 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 123
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 42:
++
++	Form : START_SELECT . OptionList END_SELECT 
++
++	START_OPTION	shift 125
++
++	OptionList	goto 124
++
++	.	reduce by rule 145
++
++
++state 43:
++
++	Phrase : START_SAMP . TextList END_SAMP 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 126
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 44:
++
++	Preformatted : START_PRE . TextList END_PRE 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 127
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 45:
++
++	Special : TAG_PARAM .  (reduce by rule 139)
++
++
++
++	.	reduce by rule 139
++
++
++state 46:
++
++	Paragraph : START_P . TextList 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 128
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 47:
++
++	List : START_OL . ListItemList END_OL 
++
++	START_LI	shift 113
++
++	ListItemList	goto 129
++	ListItem	goto 111
++
++	.	reduce by rule 70
++
++
++state 48:
++
++	List : START_MENU . ListItemList END_MENU 
++
++	START_LI	shift 113
++
++	ListItemList	goto 130
++	ListItem	goto 111
++
++	.	reduce by rule 70
++
++
++state 49:
++
++	Special : START_MAP . AreaList END_MAP 
++
++	TAG_AREA	shift 132
++
++	AreaList	goto 131
++
++	.	reduce by rule 140
++
++
++state 50:
++
++	Phrase : START_KBD . TextList END_KBD 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 133
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 51:
++
++	Form : TAG_INPUT .  (reduce by rule 142)
++
++
++
++	.	reduce by rule 142
++
++
++state 52:
++
++	Special : TAG_IMG .  (reduce by rule 133)
++
++
++
++	.	reduce by rule 133
++
++
++state 53:
++
++	Font : START_I . TextList END_I 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 134
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 54:
++
++	BlockWOIndex : TAG_HR .  (reduce by rule 60)
++
++
++
++	.	reduce by rule 60
++
++
++state 55:
++
++	BodyElement : START_H6 . TextList END_H6 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 135
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 56:
++
++	BodyElement : START_H5 . TextList END_H5 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 136
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 57:
++
++	BodyElement : START_H4 . TextList END_H4 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 137
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 58:
++
++	BodyElement : START_H3 . TextList END_H3 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 138
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 59:
++
++	BodyElement : START_H2 . TextList END_H2 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 139
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 60:
++
++	BodyElement : START_H1 . TextList END_H1 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 140
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 61:
++
++	BlockWOIndex : START_FORM . BodyContent END_FORM 
++
++	START_A	shift 79
++	START_ADDRESS	shift 78
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BodyContent	goto 142
++	BodyContent1	goto 141
++	BodyElement	goto 93
++	BlockWOIndex	goto 92
++	Block	goto 91
++	Paragraph	goto 90
++	List	goto 22
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 88
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 29
++
++
++state 62:
++
++	Special : START_BASEFONT . TextList END_BASEFONT 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 143
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 63:
++
++	Special : START_FONT . TextList END_FONT 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 144
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 64:
++
++	Phrase : START_EM . TextList END_EM 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 145
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 65:
++
++	List : START_DL . DLItemList END_DL 
++
++	START_DD	shift 149
++	START_DT	shift 148
++
++	DLItemList	goto 147
++	DLItem	goto 146
++
++	.	reduce by rule 73
++
++
++state 66:
++
++	BlockWOIndex : START_DIV . BodyContent END_DIV 
++
++	START_A	shift 79
++	START_ADDRESS	shift 78
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BodyContent	goto 150
++	BodyContent1	goto 141
++	BodyElement	goto 93
++	BlockWOIndex	goto 92
++	Block	goto 91
++	Paragraph	goto 90
++	List	goto 22
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 88
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 29
++
++
++state 67:
++
++	List : START_DIR . ListItemList END_DIR 
++
++	START_LI	shift 113
++
++	ListItemList	goto 151
++	ListItem	goto 111
++
++	.	reduce by rule 70
++
++
++state 68:
++
++	Phrase : START_DFN . TextList END_DFN 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 152
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 69:
++
++	Phrase : START_CODE . TextList END_CODE 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 153
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 70:
++
++	Phrase : START_CITE . TextList END_CITE 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 154
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 71:
++
++	BlockWOIndex : START_CENTER . BodyContent END_CENTER 
++
++	START_A	shift 79
++	START_ADDRESS	shift 78
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BodyContent	goto 155
++	BodyContent1	goto 141
++	BodyElement	goto 93
++	BlockWOIndex	goto 92
++	Block	goto 91
++	Paragraph	goto 90
++	List	goto 22
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 88
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 29
++
++
++state 72:
++
++	Special : TAG_BR .  (reduce by rule 137)
++
++
++
++	.	reduce by rule 137
++
++
++state 73:
++
++	BodyContent0 : START_BODY . BodyContent 
++
++	START_A	shift 79
++	START_ADDRESS	shift 78
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BodyContent	goto 156
++	BodyContent1	goto 141
++	BodyElement	goto 93
++	BlockWOIndex	goto 92
++	Block	goto 91
++	Paragraph	goto 90
++	List	goto 22
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 88
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 29
++
++
++state 74:
++
++	BlockWOIndex : START_BLOCKQUOTE . BodyContent END_BLOCKQUOTE 
++
++	START_A	shift 79
++	START_ADDRESS	shift 78
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BodyContent	goto 157
++	BodyContent1	goto 141
++	BodyElement	goto 93
++	BlockWOIndex	goto 92
++	Block	goto 91
++	Paragraph	goto 90
++	List	goto 22
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 88
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 29
++
++
++state 75:
++
++	Font : START_BIG . TextList END_BIG 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 158
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 76:
++
++	Font : START_B . TextList END_B 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 159
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 77:
++
++	Special : START_APPLET . TextList END_APPLET 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 160
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 78:
++
++	BodyElement : START_ADDRESS . AddressContent1 END_ADDRESS 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	AddressContent1	goto 163
++	Paragraph	goto 162
++	TextWOScript	goto 89
++	Text	goto 161
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 47
++
++
++state 79:
++
++	Special : START_A . TextList END_A 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 164
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 80:
++
++	HeadElements : HeadElement HeadElements .  (reduce by rule 12)
++
++
++
++	.	reduce by rule 12
++
++
++state 81:
++
++	HeadContents : HeadElements START_TITLE . PCData END_TITLE HeadElements 
++
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	PCData	goto 165
++	PCDataList	goto 85
++	PCDataElem	goto 84
++
++	.	reduce by rule 150
++
++
++state 82:
++
++	Head : StartHEAD HeadContents EndHEAD .  (reduce by rule 5)
++
++
++
++	.	reduce by rule 5
++
++
++state 83:
++
++	EndHEAD : END_HEAD .  (reduce by rule 9)
++
++
++
++	.	reduce by rule 9
++
++
++state 84:
++
++	PCDataList : PCDataElem . PCDataList 
++
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	PCDataList	goto 166
++	PCDataElem	goto 84
++
++	.	reduce by rule 150
++
++
++state 85:
++
++	PCData : PCDataList .  (reduce by rule 149)
++
++
++
++	.	reduce by rule 149
++
++
++state 86:
++
++	HeadElement : START_STYLE PCData . END_STYLE 
++
++	END_STYLE	shift 167
++
++
++	.	error
++
++
++state 87:
++
++	HeadElement : START_SCRIPT PCData . END_SCRIPT 
++
++	END_SCRIPT	shift 168
++
++
++	.	error
++
++
++state 88:
++
++	BodyContent1 : Text . BodyContent1 
++
++	START_A	shift 79
++	START_ADDRESS	shift 78
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BodyContent1	goto 169
++	BodyElement	goto 93
++	BlockWOIndex	goto 92
++	Block	goto 91
++	Paragraph	goto 90
++	List	goto 22
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 88
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 29
++
++
++state 89:
++
++	Text : TextWOScript .  (reduce by rule 113)
++
++
++
++	.	reduce by rule 113
++
++
++state 90:
++
++	BodyContent1 : Paragraph . END_P BodyContent1 
++	BodyContent1 : Paragraph . BodyContent2 
++
++	START_ADDRESS	shift 78
++	START_BLOCKQUOTE	shift 74
++	START_CENTER	shift 71
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	TAG_ISINDEX	shift 96
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	END_P	shift 171
++	START_PRE	shift 44
++	START_TABLE	shift 36
++	START_UL	shift 32
++
++	BodyContent2	goto 170
++	BodyElement	goto 99
++	BlockWOIndex	goto 92
++	Block	goto 98
++	Paragraph	goto 97
++	List	goto 22
++	Preformatted	goto 21
++
++	.	reduce by rule 35
++
++
++state 91:
++
++	BodyContent1 : Block . BodyContent1 
++
++	START_A	shift 79
++	START_ADDRESS	shift 78
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BodyContent1	goto 172
++	BodyElement	goto 93
++	BlockWOIndex	goto 92
++	Block	goto 91
++	Paragraph	goto 90
++	List	goto 22
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 88
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 29
++
++
++state 92:
++
++	Block : BlockWOIndex .  (reduce by rule 62)
++
++
++
++	.	reduce by rule 62
++
++
++state 93:
++
++	BodyContent1 : BodyElement . BodyContent1 
++
++	START_A	shift 79
++	START_ADDRESS	shift 78
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BodyContent1	goto 173
++	BodyElement	goto 93
++	BlockWOIndex	goto 92
++	Block	goto 91
++	Paragraph	goto 90
++	List	goto 22
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 88
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 29
++
++
++state 94:
++
++	BodyContent0 : TextWOScript BodyContent1 .  (reduce by rule 24)
++
++
++
++	.	reduce by rule 24
++
++
++state 95:
++
++	Text : START_SCRIPT . PCData END_SCRIPT 
++
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	PCData	goto 174
++	PCDataList	goto 85
++	PCDataElem	goto 84
++
++	.	reduce by rule 150
++
++
++state 96:
++
++	Block : TAG_ISINDEX .  (reduce by rule 63)
++
++
++
++	.	reduce by rule 63
++
++
++state 97:
++
++	BodyContent2 : Paragraph . END_P BodyContent1 
++	BodyContent2 : Paragraph . BodyContent2 
++
++	START_ADDRESS	shift 78
++	START_BLOCKQUOTE	shift 74
++	START_CENTER	shift 71
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	TAG_ISINDEX	shift 96
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	END_P	shift 176
++	START_PRE	shift 44
++	START_TABLE	shift 36
++	START_UL	shift 32
++
++	BodyContent2	goto 175
++	BodyElement	goto 99
++	BlockWOIndex	goto 92
++	Block	goto 98
++	Paragraph	goto 97
++	List	goto 22
++	Preformatted	goto 21
++
++	.	reduce by rule 35
++
++
++state 98:
++
++	BodyContent2 : Block . BodyContent1 
++
++	START_A	shift 79
++	START_ADDRESS	shift 78
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BodyContent1	goto 177
++	BodyElement	goto 93
++	BlockWOIndex	goto 92
++	Block	goto 91
++	Paragraph	goto 90
++	List	goto 22
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 88
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 29
++
++
++state 99:
++
++	BodyContent2 : BodyElement . BodyContent1 
++
++	START_A	shift 79
++	START_ADDRESS	shift 78
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BodyContent1	goto 178
++	BodyElement	goto 93
++	BlockWOIndex	goto 92
++	Block	goto 91
++	Paragraph	goto 90
++	List	goto 22
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 88
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 29
++
++
++state 100:
++
++	BodyContent0 : Paragraph BodyContent2 .  (reduce by rule 28)
++
++
++
++	.	reduce by rule 28
++
++
++state 101:
++
++	BodyContent0 : Paragraph END_P . BodyContent1 
++
++	START_A	shift 79
++	START_ADDRESS	shift 78
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BodyContent1	goto 179
++	BodyElement	goto 93
++	BlockWOIndex	goto 92
++	Block	goto 91
++	Paragraph	goto 90
++	List	goto 22
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 88
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 29
++
++
++state 102:
++
++	BodyContent0 : BlockWOIndex BodyContent1 .  (reduce by rule 26)
++
++
++
++	.	reduce by rule 26
++
++
++state 103:
++
++	BodyContent0 : BodyElement BodyContent1 .  (reduce by rule 25)
++
++
++
++	.	reduce by rule 25
++
++
++state 104:
++
++	Body : BodyContent0 EndBODY .  (reduce by rule 19)
++
++
++
++	.	reduce by rule 19
++
++
++state 105:
++
++	EndBODY : END_BODY .  (reduce by rule 21)
++
++
++
++	.	reduce by rule 21
++
++
++state 106:
++
++	Document : StartHTML Head Body EndHTML .  (reduce by rule 0)
++
++
++
++	.	reduce by rule 0
++
++
++state 107:
++
++	EndHTML : END_HTML .  (reduce by rule 4)
++
++
++
++	.	reduce by rule 4
++
++
++state 108:
++
++	TextList' : Text . TextList' 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList'	goto 180
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 109:
++
++	TextList : TextList' .  (reduce by rule 105)
++
++
++
++	.	reduce by rule 105
++
++
++state 110:
++
++	Phrase : START_VAR TextList . END_VAR 
++
++	END_VAR	shift 181
++
++
++	.	error
++
++
++state 111:
++
++	ListItemList : ListItem . ListItemList 
++
++	START_LI	shift 113
++
++	ListItemList	goto 182
++	ListItem	goto 111
++
++	.	reduce by rule 70
++
++
++state 112:
++
++	List : START_UL ListItemList . END_UL 
++
++	END_UL	shift 183
++
++
++	.	error
++
++
++state 113:
++
++	ListItem : START_LI . Flow1 EndLI 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BlockWOIndex	goto 92
++	Block	goto 187
++	Paragraph	goto 186
++	List	goto 22
++	Flow1	goto 185
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 184
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 77
++
++
++state 114:
++
++	Font : START_U TextList . END_U 
++
++	END_U	shift 188
++
++
++	.	error
++
++
++state 115:
++
++	Font : START_TT TextList . END_TT 
++
++	END_TT	shift 189
++
++
++	.	error
++
++
++state 116:
++
++	Form : START_TEXTAREA PCData . END_TEXTAREA 
++
++	END_TEXTAREA	shift 190
++
++
++	.	error
++
++
++state 117:
++
++	BlockWOIndex : START_TABLE optCaption . TableRowList END_TABLE 
++
++	START_TR	shift 193
++
++	TableRowList	goto 192
++	TableRow	goto 191
++
++	.	error
++
++
++state 118:
++
++	optCaption : START_CAPTION . TextList END_CAPTION 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 194
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 119:
++
++	Font : START_SUP TextList . END_SUP 
++
++	END_SUP	shift 195
++
++
++	.	error
++
++
++state 120:
++
++	Font : START_SUB TextList . END_SUB 
++
++	END_SUB	shift 196
++
++
++	.	error
++
++
++state 121:
++
++	Phrase : START_STRONG TextList . END_STRONG 
++
++	END_STRONG	shift 197
++
++
++	.	error
++
++
++state 122:
++
++	Font : START_STRIKE TextList . END_STRIKE 
++
++	END_STRIKE	shift 198
++
++
++	.	error
++
++
++state 123:
++
++	Font : START_SMALL TextList . END_SMALL 
++
++	END_SMALL	shift 199
++
++
++	.	error
++
++
++state 124:
++
++	Form : START_SELECT OptionList . END_SELECT 
++
++	END_SELECT	shift 200
++
++
++	.	error
++
++
++state 125:
++
++	OptionList : START_OPTION . PCData EndOPTION OptionList 
++
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	PCData	goto 201
++	PCDataList	goto 85
++	PCDataElem	goto 84
++
++	.	reduce by rule 150
++
++
++state 126:
++
++	Phrase : START_SAMP TextList . END_SAMP 
++
++	END_SAMP	shift 202
++
++
++	.	error
++
++
++state 127:
++
++	Preformatted : START_PRE TextList . END_PRE 
++
++	END_PRE	shift 203
++
++
++	.	error
++
++
++state 128:
++
++	Paragraph : START_P TextList .  (reduce by rule 64)
++
++
++
++	.	reduce by rule 64
++
++
++state 129:
++
++	List : START_OL ListItemList . END_OL 
++
++	END_OL	shift 204
++
++
++	.	error
++
++
++state 130:
++
++	List : START_MENU ListItemList . END_MENU 
++
++	END_MENU	shift 205
++
++
++	.	error
++
++
++state 131:
++
++	Special : START_MAP AreaList . END_MAP 
++
++	END_MAP	shift 206
++
++
++	.	error
++
++
++state 132:
++
++	AreaList : TAG_AREA . AreaList 
++
++	TAG_AREA	shift 132
++
++	AreaList	goto 207
++
++	.	reduce by rule 140
++
++
++state 133:
++
++	Phrase : START_KBD TextList . END_KBD 
++
++	END_KBD	shift 208
++
++
++	.	error
++
++
++state 134:
++
++	Font : START_I TextList . END_I 
++
++	END_I	shift 209
++
++
++	.	error
++
++
++state 135:
++
++	BodyElement : START_H6 TextList . END_H6 
++
++	END_H6	shift 210
++
++
++	.	error
++
++
++state 136:
++
++	BodyElement : START_H5 TextList . END_H5 
++
++	END_H5	shift 211
++
++
++	.	error
++
++
++state 137:
++
++	BodyElement : START_H4 TextList . END_H4 
++
++	END_H4	shift 212
++
++
++	.	error
++
++
++state 138:
++
++	BodyElement : START_H3 TextList . END_H3 
++
++	END_H3	shift 213
++
++
++	.	error
++
++
++state 139:
++
++	BodyElement : START_H2 TextList . END_H2 
++
++	END_H2	shift 214
++
++
++	.	error
++
++
++state 140:
++
++	BodyElement : START_H1 TextList . END_H1 
++
++	END_H1	shift 215
++
++
++	.	error
++
++
++state 141:
++
++	BodyContent : BodyContent1 .  (reduce by rule 22)
++
++
++
++	.	reduce by rule 22
++
++
++state 142:
++
++	BlockWOIndex : START_FORM BodyContent . END_FORM 
++
++	END_FORM	shift 216
++
++
++	.	error
++
++
++state 143:
++
++	Special : START_BASEFONT TextList . END_BASEFONT 
++
++	END_BASEFONT	shift 217
++
++
++	.	error
++
++
++state 144:
++
++	Special : START_FONT TextList . END_FONT 
++
++	END_FONT	shift 218
++
++
++	.	error
++
++
++state 145:
++
++	Phrase : START_EM TextList . END_EM 
++
++	END_EM	shift 219
++
++
++	.	error
++
++
++state 146:
++
++	DLItemList : DLItem . DLItemList 
++
++	START_DD	shift 149
++	START_DT	shift 148
++
++	DLItemList	goto 220
++	DLItem	goto 146
++
++	.	reduce by rule 73
++
++
++state 147:
++
++	List : START_DL DLItemList . END_DL 
++
++	END_DL	shift 221
++
++
++	.	error
++
++
++state 148:
++
++	DLItem : START_DT . TextList EndDT 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	TextList	goto 222
++	TextList'	goto 109
++	TextWOScript	goto 89
++	Text	goto 108
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 106
++
++
++state 149:
++
++	DLItem : START_DD . Flow1 EndDD 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BlockWOIndex	goto 92
++	Block	goto 187
++	Paragraph	goto 186
++	List	goto 22
++	Flow1	goto 223
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 184
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 77
++
++
++state 150:
++
++	BlockWOIndex : START_DIV BodyContent . END_DIV 
++
++	END_DIV	shift 224
++
++
++	.	error
++
++
++state 151:
++
++	List : START_DIR ListItemList . END_DIR 
++
++	END_DIR	shift 225
++
++
++	.	error
++
++
++state 152:
++
++	Phrase : START_DFN TextList . END_DFN 
++
++	END_DFN	shift 226
++
++
++	.	error
++
++
++state 153:
++
++	Phrase : START_CODE TextList . END_CODE 
++
++	END_CODE	shift 227
++
++
++	.	error
++
++
++state 154:
++
++	Phrase : START_CITE TextList . END_CITE 
++
++	END_CITE	shift 228
++
++
++	.	error
++
++
++state 155:
++
++	BlockWOIndex : START_CENTER BodyContent . END_CENTER 
++
++	END_CENTER	shift 229
++
++
++	.	error
++
++
++state 156:
++
++	BodyContent0 : START_BODY BodyContent .  (reduce by rule 23)
++
++
++
++	.	reduce by rule 23
++
++
++state 157:
++
++	BlockWOIndex : START_BLOCKQUOTE BodyContent . END_BLOCKQUOTE 
++
++	END_BLOCKQUOTE	shift 230
++
++
++	.	error
++
++
++state 158:
++
++	Font : START_BIG TextList . END_BIG 
++
++	END_BIG	shift 231
++
++
++	.	error
++
++
++state 159:
++
++	Font : START_B TextList . END_B 
++
++	END_B	shift 232
++
++
++	.	error
++
++
++state 160:
++
++	Special : START_APPLET TextList . END_APPLET 
++
++	END_APPLET	shift 233
++
++
++	.	error
++
++
++state 161:
++
++	AddressContent1 : Text . AddressContent1 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	AddressContent1	goto 234
++	Paragraph	goto 162
++	TextWOScript	goto 89
++	Text	goto 161
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 47
++
++
++state 162:
++
++	AddressContent1 : Paragraph . END_P AddressContent1 
++	AddressContent1 : Paragraph . AddressContent2 
++
++	START_P	shift 46
++	END_P	shift 237
++
++	AddressContent2	goto 236
++	Paragraph	goto 235
++
++	.	reduce by rule 51
++
++
++state 163:
++
++	BodyElement : START_ADDRESS AddressContent1 . END_ADDRESS 
++
++	END_ADDRESS	shift 238
++
++
++	.	error
++
++
++state 164:
++
++	Special : START_A TextList . END_A 
++
++	END_A	shift 239
++
++
++	.	error
++
++
++state 165:
++
++	HeadContents : HeadElements START_TITLE PCData . END_TITLE HeadElements 
++
++	END_TITLE	shift 240
++
++
++	.	error
++
++
++state 166:
++
++	PCDataList : PCDataElem PCDataList .  (reduce by rule 151)
++
++
++
++	.	reduce by rule 151
++
++
++state 167:
++
++	HeadElement : START_STYLE PCData END_STYLE .  (reduce by rule 17)
++
++
++
++	.	reduce by rule 17
++
++
++state 168:
++
++	HeadElement : START_SCRIPT PCData END_SCRIPT .  (reduce by rule 18)
++
++
++
++	.	reduce by rule 18
++
++
++state 169:
++
++	BodyContent1 : Text BodyContent1 .  (reduce by rule 30)
++
++
++
++	.	reduce by rule 30
++
++
++state 170:
++
++	BodyContent1 : Paragraph BodyContent2 .  (reduce by rule 34)
++
++
++
++	.	reduce by rule 34
++
++
++state 171:
++
++	BodyContent1 : Paragraph END_P . BodyContent1 
++
++	START_A	shift 79
++	START_ADDRESS	shift 78
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BodyContent1	goto 241
++	BodyElement	goto 93
++	BlockWOIndex	goto 92
++	Block	goto 91
++	Paragraph	goto 90
++	List	goto 22
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 88
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 29
++
++
++state 172:
++
++	BodyContent1 : Block BodyContent1 .  (reduce by rule 32)
++
++
++
++	.	reduce by rule 32
++
++
++state 173:
++
++	BodyContent1 : BodyElement BodyContent1 .  (reduce by rule 31)
++
++
++
++	.	reduce by rule 31
++
++
++state 174:
++
++	Text : START_SCRIPT PCData . END_SCRIPT 
++
++	END_SCRIPT	shift 242
++
++
++	.	error
++
++
++state 175:
++
++	BodyContent2 : Paragraph BodyContent2 .  (reduce by rule 39)
++
++
++
++	.	reduce by rule 39
++
++
++state 176:
++
++	BodyContent2 : Paragraph END_P . BodyContent1 
++
++	START_A	shift 79
++	START_ADDRESS	shift 78
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BodyContent1	goto 243
++	BodyElement	goto 93
++	BlockWOIndex	goto 92
++	Block	goto 91
++	Paragraph	goto 90
++	List	goto 22
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 88
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 29
++
++
++state 177:
++
++	BodyContent2 : Block BodyContent1 .  (reduce by rule 37)
++
++
++
++	.	reduce by rule 37
++
++
++state 178:
++
++	BodyContent2 : BodyElement BodyContent1 .  (reduce by rule 36)
++
++
++
++	.	reduce by rule 36
++
++
++state 179:
++
++	BodyContent0 : Paragraph END_P BodyContent1 .  (reduce by rule 27)
++
++
++
++	.	reduce by rule 27
++
++
++state 180:
++
++	TextList' : Text TextList' .  (reduce by rule 107)
++
++
++
++	.	reduce by rule 107
++
++
++state 181:
++
++	Phrase : START_VAR TextList END_VAR .  (reduce by rule 130)
++
++
++
++	.	reduce by rule 130
++
++
++state 182:
++
++	ListItemList : ListItem ListItemList .  (reduce by rule 71)
++
++
++
++	.	reduce by rule 71
++
++
++state 183:
++
++	List : START_UL ListItemList END_UL .  (reduce by rule 65)
++
++
++
++	.	reduce by rule 65
++
++
++state 184:
++
++	Flow1 : Text . Flow1 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BlockWOIndex	goto 92
++	Block	goto 187
++	Paragraph	goto 186
++	List	goto 22
++	Flow1	goto 244
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 184
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 77
++
++
++state 185:
++
++	ListItem : START_LI Flow1 . EndLI 
++
++	END_LI	shift 246
++
++	EndLI	goto 245
++
++	.	reduce by rule 86
++
++
++state 186:
++
++	Flow1 : Paragraph . END_P Flow1 
++	Flow1 : Paragraph . Flow2 
++
++	START_BLOCKQUOTE	shift 74
++	START_CENTER	shift 71
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_FORM	shift 61
++	TAG_HR	shift 54
++	TAG_ISINDEX	shift 96
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	END_P	shift 250
++	START_PRE	shift 44
++	START_TABLE	shift 36
++	START_UL	shift 32
++
++	BlockWOIndex	goto 92
++	Block	goto 249
++	Paragraph	goto 248
++	List	goto 22
++	Flow2	goto 247
++	Preformatted	goto 21
++
++	.	reduce by rule 82
++
++
++state 187:
++
++	Flow1 : Block . Flow1 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BlockWOIndex	goto 92
++	Block	goto 187
++	Paragraph	goto 186
++	List	goto 22
++	Flow1	goto 251
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 184
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 77
++
++
++state 188:
++
++	Font : START_U TextList END_U .  (reduce by rule 118)
++
++
++
++	.	reduce by rule 118
++
++
++state 189:
++
++	Font : START_TT TextList END_TT .  (reduce by rule 115)
++
++
++
++	.	reduce by rule 115
++
++
++state 190:
++
++	Form : START_TEXTAREA PCData END_TEXTAREA .  (reduce by rule 144)
++
++
++
++	.	reduce by rule 144
++
++
++state 191:
++
++	TableRowList : TableRow .  (reduce by rule 95)
++	TableRowList : TableRow . TableRowList 
++
++	START_TR	shift 193
++
++	TableRowList	goto 252
++	TableRow	goto 191
++
++	.	reduce by rule 95
++
++
++state 192:
++
++	BlockWOIndex : START_TABLE optCaption TableRowList . END_TABLE 
++
++	END_TABLE	shift 253
++
++
++	.	error
++
++
++state 193:
++
++	TableRow : START_TR . TableCellList 
++	TableRow : START_TR . TableCellList END_TR 
++
++	START_TD	shift 257
++	START_TH	shift 256
++
++	TableCellList	goto 255
++	TableCell	goto 254
++
++	.	error
++
++
++state 194:
++
++	optCaption : START_CAPTION TextList . END_CAPTION 
++
++	END_CAPTION	shift 258
++
++
++	.	error
++
++
++state 195:
++
++	Font : START_SUP TextList END_SUP .  (reduce by rule 123)
++
++
++
++	.	reduce by rule 123
++
++
++state 196:
++
++	Font : START_SUB TextList END_SUB .  (reduce by rule 122)
++
++
++
++	.	reduce by rule 122
++
++
++state 197:
++
++	Phrase : START_STRONG TextList END_STRONG .  (reduce by rule 125)
++
++
++
++	.	reduce by rule 125
++
++
++state 198:
++
++	Font : START_STRIKE TextList END_STRIKE .  (reduce by rule 119)
++
++
++
++	.	reduce by rule 119
++
++
++state 199:
++
++	Font : START_SMALL TextList END_SMALL .  (reduce by rule 121)
++
++
++
++	.	reduce by rule 121
++
++
++state 200:
++
++	Form : START_SELECT OptionList END_SELECT .  (reduce by rule 143)
++
++
++
++	.	reduce by rule 143
++
++
++state 201:
++
++	OptionList : START_OPTION PCData . EndOPTION OptionList 
++
++	END_OPTION	shift 260
++
++	EndOPTION	goto 259
++
++	.	reduce by rule 147
++
++
++state 202:
++
++	Phrase : START_SAMP TextList END_SAMP .  (reduce by rule 128)
++
++
++
++	.	reduce by rule 128
++
++
++state 203:
++
++	Preformatted : START_PRE TextList END_PRE .  (reduce by rule 92)
++
++
++
++	.	reduce by rule 92
++
++
++state 204:
++
++	List : START_OL ListItemList END_OL .  (reduce by rule 66)
++
++
++
++	.	reduce by rule 66
++
++
++state 205:
++
++	List : START_MENU ListItemList END_MENU .  (reduce by rule 68)
++
++
++
++	.	reduce by rule 68
++
++
++state 206:
++
++	Special : START_MAP AreaList END_MAP .  (reduce by rule 138)
++
++
++
++	.	reduce by rule 138
++
++
++state 207:
++
++	AreaList : TAG_AREA AreaList .  (reduce by rule 141)
++
++
++
++	.	reduce by rule 141
++
++
++state 208:
++
++	Phrase : START_KBD TextList END_KBD .  (reduce by rule 129)
++
++
++
++	.	reduce by rule 129
++
++
++state 209:
++
++	Font : START_I TextList END_I .  (reduce by rule 116)
++
++
++
++	.	reduce by rule 116
++
++
++state 210:
++
++	BodyElement : START_H6 TextList END_H6 .  (reduce by rule 45)
++
++
++
++	.	reduce by rule 45
++
++
++state 211:
++
++	BodyElement : START_H5 TextList END_H5 .  (reduce by rule 44)
++
++
++
++	.	reduce by rule 44
++
++
++state 212:
++
++	BodyElement : START_H4 TextList END_H4 .  (reduce by rule 43)
++
++
++
++	.	reduce by rule 43
++
++
++state 213:
++
++	BodyElement : START_H3 TextList END_H3 .  (reduce by rule 42)
++
++
++
++	.	reduce by rule 42
++
++
++state 214:
++
++	BodyElement : START_H2 TextList END_H2 .  (reduce by rule 41)
++
++
++
++	.	reduce by rule 41
++
++
++state 215:
++
++	BodyElement : START_H1 TextList END_H1 .  (reduce by rule 40)
++
++
++
++	.	reduce by rule 40
++
++
++state 216:
++
++	BlockWOIndex : START_FORM BodyContent END_FORM .  (reduce by rule 59)
++
++
++
++	.	reduce by rule 59
++
++
++state 217:
++
++	Special : START_BASEFONT TextList END_BASEFONT .  (reduce by rule 136)
++
++
++
++	.	reduce by rule 136
++
++
++state 218:
++
++	Special : START_FONT TextList END_FONT .  (reduce by rule 135)
++
++
++
++	.	reduce by rule 135
++
++
++state 219:
++
++	Phrase : START_EM TextList END_EM .  (reduce by rule 124)
++
++
++
++	.	reduce by rule 124
++
++
++state 220:
++
++	DLItemList : DLItem DLItemList .  (reduce by rule 74)
++
++
++
++	.	reduce by rule 74
++
++
++state 221:
++
++	List : START_DL DLItemList END_DL .  (reduce by rule 69)
++
++
++
++	.	reduce by rule 69
++
++
++state 222:
++
++	DLItem : START_DT TextList . EndDT 
++
++	END_DT	shift 262
++
++	EndDT	goto 261
++
++	.	reduce by rule 88
++
++
++state 223:
++
++	DLItem : START_DD Flow1 . EndDD 
++
++	END_DD	shift 264
++
++	EndDD	goto 263
++
++	.	reduce by rule 90
++
++
++state 224:
++
++	BlockWOIndex : START_DIV BodyContent END_DIV .  (reduce by rule 56)
++
++
++
++	.	reduce by rule 56
++
++
++state 225:
++
++	List : START_DIR ListItemList END_DIR .  (reduce by rule 67)
++
++
++
++	.	reduce by rule 67
++
++
++state 226:
++
++	Phrase : START_DFN TextList END_DFN .  (reduce by rule 127)
++
++
++
++	.	reduce by rule 127
++
++
++state 227:
++
++	Phrase : START_CODE TextList END_CODE .  (reduce by rule 126)
++
++
++
++	.	reduce by rule 126
++
++
++state 228:
++
++	Phrase : START_CITE TextList END_CITE .  (reduce by rule 131)
++
++
++
++	.	reduce by rule 131
++
++
++state 229:
++
++	BlockWOIndex : START_CENTER BodyContent END_CENTER .  (reduce by rule 57)
++
++
++
++	.	reduce by rule 57
++
++
++state 230:
++
++	BlockWOIndex : START_BLOCKQUOTE BodyContent END_BLOCKQUOTE .  (reduce by rule 58)
++
++
++
++	.	reduce by rule 58
++
++
++state 231:
++
++	Font : START_BIG TextList END_BIG .  (reduce by rule 120)
++
++
++
++	.	reduce by rule 120
++
++
++state 232:
++
++	Font : START_B TextList END_B .  (reduce by rule 117)
++
++
++
++	.	reduce by rule 117
++
++
++state 233:
++
++	Special : START_APPLET TextList END_APPLET .  (reduce by rule 134)
++
++
++
++	.	reduce by rule 134
++
++
++state 234:
++
++	AddressContent1 : Text AddressContent1 .  (reduce by rule 48)
++
++
++
++	.	reduce by rule 48
++
++
++state 235:
++
++	AddressContent2 : Paragraph . END_P AddressContent1 
++	AddressContent2 : Paragraph . AddressContent2 
++
++	START_P	shift 46
++	END_P	shift 266
++
++	AddressContent2	goto 265
++	Paragraph	goto 235
++
++	.	reduce by rule 51
++
++
++state 236:
++
++	AddressContent1 : Paragraph AddressContent2 .  (reduce by rule 50)
++
++
++
++	.	reduce by rule 50
++
++
++state 237:
++
++	AddressContent1 : Paragraph END_P . AddressContent1 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	AddressContent1	goto 267
++	Paragraph	goto 162
++	TextWOScript	goto 89
++	Text	goto 161
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 47
++
++
++state 238:
++
++	BodyElement : START_ADDRESS AddressContent1 END_ADDRESS .  (reduce by rule 46)
++
++
++
++	.	reduce by rule 46
++
++
++state 239:
++
++	Special : START_A TextList END_A .  (reduce by rule 132)
++
++
++
++	.	reduce by rule 132
++
++
++state 240:
++
++	HeadContents : HeadElements START_TITLE PCData END_TITLE . HeadElements 
++
++	TAG_BASE	shift 14
++	TAG_ISINDEX	shift 13
++	TAG_LINK	shift 12
++	TAG_META	shift 11
++	START_SCRIPT	shift 10
++	START_STYLE	shift 9
++
++	HeadElements	goto 268
++	HeadElement	goto 6
++
++	.	reduce by rule 11
++
++
++state 241:
++
++	BodyContent1 : Paragraph END_P BodyContent1 .  (reduce by rule 33)
++
++
++
++	.	reduce by rule 33
++
++
++state 242:
++
++	Text : START_SCRIPT PCData END_SCRIPT .  (reduce by rule 114)
++
++
++
++	.	reduce by rule 114
++
++
++state 243:
++
++	BodyContent2 : Paragraph END_P BodyContent1 .  (reduce by rule 38)
++
++
++
++	.	reduce by rule 38
++
++
++state 244:
++
++	Flow1 : Text Flow1 .  (reduce by rule 78)
++
++
++
++	.	reduce by rule 78
++
++
++state 245:
++
++	ListItem : START_LI Flow1 EndLI .  (reduce by rule 72)
++
++
++
++	.	reduce by rule 72
++
++
++state 246:
++
++	EndLI : END_LI .  (reduce by rule 87)
++
++
++
++	.	reduce by rule 87
++
++
++state 247:
++
++	Flow1 : Paragraph Flow2 .  (reduce by rule 81)
++
++
++
++	.	reduce by rule 81
++
++
++state 248:
++
++	Flow2 : Paragraph . END_P Flow1 
++	Flow2 : Paragraph . Flow2 
++
++	START_BLOCKQUOTE	shift 74
++	START_CENTER	shift 71
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_FORM	shift 61
++	TAG_HR	shift 54
++	TAG_ISINDEX	shift 96
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	END_P	shift 270
++	START_PRE	shift 44
++	START_TABLE	shift 36
++	START_UL	shift 32
++
++	BlockWOIndex	goto 92
++	Block	goto 249
++	Paragraph	goto 248
++	List	goto 22
++	Flow2	goto 269
++	Preformatted	goto 21
++
++	.	reduce by rule 82
++
++
++state 249:
++
++	Flow2 : Block . Flow1 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BlockWOIndex	goto 92
++	Block	goto 187
++	Paragraph	goto 186
++	List	goto 22
++	Flow1	goto 271
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 184
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 77
++
++
++state 250:
++
++	Flow1 : Paragraph END_P . Flow1 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BlockWOIndex	goto 92
++	Block	goto 187
++	Paragraph	goto 186
++	List	goto 22
++	Flow1	goto 272
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 184
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 77
++
++
++state 251:
++
++	Flow1 : Block Flow1 .  (reduce by rule 79)
++
++
++
++	.	reduce by rule 79
++
++
++state 252:
++
++	TableRowList : TableRow TableRowList .  (reduce by rule 96)
++
++
++
++	.	reduce by rule 96
++
++
++state 253:
++
++	BlockWOIndex : START_TABLE optCaption TableRowList END_TABLE .  (reduce by rule 61)
++
++
++
++	.	reduce by rule 61
++
++
++state 254:
++
++	TableCellList : TableCell .  (reduce by rule 99)
++	TableCellList : TableCell . TableCellList 
++
++	START_TD	shift 257
++	START_TH	shift 256
++
++	TableCellList	goto 273
++	TableCell	goto 254
++
++	.	reduce by rule 99
++
++
++state 255:
++
++	TableRow : START_TR TableCellList .  (reduce by rule 97)
++	TableRow : START_TR TableCellList . END_TR 
++
++	END_TR	shift 274
++
++
++	.	reduce by rule 97
++
++
++state 256:
++
++	TableCell : START_TH . BodyContent END_TH 
++	TableCell : START_TH . BodyContent 
++
++	START_A	shift 79
++	START_ADDRESS	shift 78
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BodyContent	goto 275
++	BodyContent1	goto 141
++	BodyElement	goto 93
++	BlockWOIndex	goto 92
++	Block	goto 91
++	Paragraph	goto 90
++	List	goto 22
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 88
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 29
++
++
++state 257:
++
++	TableCell : START_TD . BodyContent END_TD 
++	TableCell : START_TD . BodyContent 
++
++	START_A	shift 79
++	START_ADDRESS	shift 78
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	START_H1	shift 60
++	START_H2	shift 59
++	START_H3	shift 58
++	START_H4	shift 57
++	START_H5	shift 56
++	START_H6	shift 55
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BodyContent	goto 276
++	BodyContent1	goto 141
++	BodyElement	goto 93
++	BlockWOIndex	goto 92
++	Block	goto 91
++	Paragraph	goto 90
++	List	goto 22
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 88
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 29
++
++
++state 258:
++
++	optCaption : START_CAPTION TextList END_CAPTION .  (reduce by rule 94)
++
++
++
++	.	reduce by rule 94
++
++
++state 259:
++
++	OptionList : START_OPTION PCData EndOPTION . OptionList 
++
++	START_OPTION	shift 125
++
++	OptionList	goto 277
++
++	.	reduce by rule 145
++
++
++state 260:
++
++	EndOPTION : END_OPTION .  (reduce by rule 148)
++
++
++
++	.	reduce by rule 148
++
++
++state 261:
++
++	DLItem : START_DT TextList EndDT .  (reduce by rule 75)
++
++
++
++	.	reduce by rule 75
++
++
++state 262:
++
++	EndDT : END_DT .  (reduce by rule 89)
++
++
++
++	.	reduce by rule 89
++
++
++state 263:
++
++	DLItem : START_DD Flow1 EndDD .  (reduce by rule 76)
++
++
++
++	.	reduce by rule 76
++
++
++state 264:
++
++	EndDD : END_DD .  (reduce by rule 91)
++
++
++
++	.	reduce by rule 91
++
++
++state 265:
++
++	AddressContent2 : Paragraph AddressContent2 .  (reduce by rule 53)
++
++
++
++	.	reduce by rule 53
++
++
++state 266:
++
++	AddressContent2 : Paragraph END_P . AddressContent1 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	TAG_BR	shift 72
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	AddressContent1	goto 278
++	Paragraph	goto 162
++	TextWOScript	goto 89
++	Text	goto 161
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 47
++
++
++state 267:
++
++	AddressContent1 : Paragraph END_P AddressContent1 .  (reduce by rule 49)
++
++
++
++	.	reduce by rule 49
++
++
++state 268:
++
++	HeadContents : HeadElements START_TITLE PCData END_TITLE HeadElements .  (reduce by rule 10)
++
++
++
++	.	reduce by rule 10
++
++
++state 269:
++
++	Flow2 : Paragraph Flow2 .  (reduce by rule 85)
++
++
++
++	.	reduce by rule 85
++
++
++state 270:
++
++	Flow2 : Paragraph END_P . Flow1 
++
++	START_A	shift 79
++	START_APPLET	shift 77
++	START_B	shift 76
++	START_BIG	shift 75
++	START_BLOCKQUOTE	shift 74
++	TAG_BR	shift 72
++	START_CENTER	shift 71
++	START_CITE	shift 70
++	START_CODE	shift 69
++	START_DFN	shift 68
++	START_DIR	shift 67
++	START_DIV	shift 66
++	START_DL	shift 65
++	START_EM	shift 64
++	START_FONT	shift 63
++	START_BASEFONT	shift 62
++	START_FORM	shift 61
++	TAG_HR	shift 54
++	START_I	shift 53
++	TAG_IMG	shift 52
++	TAG_INPUT	shift 51
++	TAG_ISINDEX	shift 96
++	START_KBD	shift 50
++	START_MAP	shift 49
++	START_MENU	shift 48
++	START_OL	shift 47
++	START_P	shift 46
++	TAG_PARAM	shift 45
++	START_PRE	shift 44
++	START_SAMP	shift 43
++	START_SCRIPT	shift 95
++	START_SELECT	shift 42
++	START_SMALL	shift 41
++	START_STRIKE	shift 40
++	START_STRONG	shift 39
++	START_SUB	shift 38
++	START_SUP	shift 37
++	START_TABLE	shift 36
++	START_TEXTAREA	shift 35
++	START_TT	shift 34
++	START_U	shift 33
++	START_UL	shift 32
++	START_VAR	shift 31
++	PCDATA	shift 30
++	CHAR_REF	shift 29
++	ENTITY_REF	shift 28
++
++	BlockWOIndex	goto 92
++	Block	goto 187
++	Paragraph	goto 186
++	List	goto 22
++	Flow1	goto 279
++	Preformatted	goto 21
++	TextWOScript	goto 89
++	Text	goto 184
++	Font	goto 19
++	Phrase	goto 18
++	Special	goto 17
++	Form	goto 16
++	PCDataElem	goto 15
++
++	.	reduce by rule 77
++
++
++state 271:
++
++	Flow2 : Block Flow1 .  (reduce by rule 83)
++
++
++
++	.	reduce by rule 83
++
++
++state 272:
++
++	Flow1 : Paragraph END_P Flow1 .  (reduce by rule 80)
++
++
++
++	.	reduce by rule 80
++
++
++state 273:
++
++	TableCellList : TableCell TableCellList .  (reduce by rule 100)
++
++
++
++	.	reduce by rule 100
++
++
++state 274:
++
++	TableRow : START_TR TableCellList END_TR .  (reduce by rule 98)
++
++
++
++	.	reduce by rule 98
++
++
++state 275:
++
++	TableCell : START_TH BodyContent . END_TH 
++	TableCell : START_TH BodyContent .  (reduce by rule 102)
++
++	END_TH	shift 280
++
++
++	.	reduce by rule 102
++
++
++state 276:
++
++	TableCell : START_TD BodyContent . END_TD 
++	TableCell : START_TD BodyContent .  (reduce by rule 104)
++
++	END_TD	shift 281
++
++
++	.	reduce by rule 104
++
++
++state 277:
++
++	OptionList : START_OPTION PCData EndOPTION OptionList .  (reduce by rule 146)
++
++
++
++	.	reduce by rule 146
++
++
++state 278:
++
++	AddressContent2 : Paragraph END_P AddressContent1 .  (reduce by rule 52)
++
++
++
++	.	reduce by rule 52
++
++
++state 279:
++
++	Flow2 : Paragraph END_P Flow1 .  (reduce by rule 84)
++
++
++
++	.	reduce by rule 84
++
++
++state 280:
++
++	TableCell : START_TH BodyContent END_TH .  (reduce by rule 101)
++
++
++
++	.	reduce by rule 101
++
++
++state 281:
++
++	TableCell : START_TD BodyContent END_TD .  (reduce by rule 103)
++
++
++
++	.	reduce by rule 103
++
++
++state 282:
++
++
++	EOF	accept
++
++
++	.	error
++
++398 of 2987 action table entries left after compaction
++788 goto table entries
+diff -Naur smlnj-lib/HTML/html-gram.sig smlnj-lib-mlton/HTML/html-gram.sig
+--- smlnj-lib/HTML/html-gram.sig	1969-12-31 19:00:00.000000000 -0500
++++ smlnj-lib-mlton/HTML/html-gram.sig	2006-05-02 23:00:43.000000000 -0400
+@@ -0,0 +1,140 @@
++signature HTML_TOKENS =
++sig
++type ('a,'b) token
++type svalue
++val ENTITY_REF: (string) *  'a * 'a -> (svalue,'a) token
++val CHAR_REF: (string) *  'a * 'a -> (svalue,'a) token
++val PCDATA: (string) *  'a * 'a -> (svalue,'a) token
++val END_VAR:  'a * 'a -> (svalue,'a) token
++val START_VAR:  'a * 'a -> (svalue,'a) token
++val END_UL:  'a * 'a -> (svalue,'a) token
++val START_UL: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_U:  'a * 'a -> (svalue,'a) token
++val START_U:  'a * 'a -> (svalue,'a) token
++val END_TT:  'a * 'a -> (svalue,'a) token
++val START_TT:  'a * 'a -> (svalue,'a) token
++val END_TR:  'a * 'a -> (svalue,'a) token
++val START_TR: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_TITLE:  'a * 'a -> (svalue,'a) token
++val START_TITLE:  'a * 'a -> (svalue,'a) token
++val END_TH:  'a * 'a -> (svalue,'a) token
++val START_TH: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_TEXTAREA:  'a * 'a -> (svalue,'a) token
++val START_TEXTAREA: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_TD:  'a * 'a -> (svalue,'a) token
++val START_TD: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_TABLE:  'a * 'a -> (svalue,'a) token
++val START_TABLE: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_SUP:  'a * 'a -> (svalue,'a) token
++val START_SUP:  'a * 'a -> (svalue,'a) token
++val END_SUB:  'a * 'a -> (svalue,'a) token
++val START_SUB:  'a * 'a -> (svalue,'a) token
++val END_STYLE:  'a * 'a -> (svalue,'a) token
++val START_STYLE:  'a * 'a -> (svalue,'a) token
++val END_STRONG:  'a * 'a -> (svalue,'a) token
++val START_STRONG:  'a * 'a -> (svalue,'a) token
++val END_STRIKE:  'a * 'a -> (svalue,'a) token
++val START_STRIKE:  'a * 'a -> (svalue,'a) token
++val END_SMALL:  'a * 'a -> (svalue,'a) token
++val START_SMALL:  'a * 'a -> (svalue,'a) token
++val END_SELECT:  'a * 'a -> (svalue,'a) token
++val START_SELECT: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_SCRIPT:  'a * 'a -> (svalue,'a) token
++val START_SCRIPT:  'a * 'a -> (svalue,'a) token
++val END_SAMP:  'a * 'a -> (svalue,'a) token
++val START_SAMP:  'a * 'a -> (svalue,'a) token
++val END_PRE:  'a * 'a -> (svalue,'a) token
++val START_PRE: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val TAG_PARAM: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_P:  'a * 'a -> (svalue,'a) token
++val START_P: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_OPTION:  'a * 'a -> (svalue,'a) token
++val START_OPTION: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_OL:  'a * 'a -> (svalue,'a) token
++val START_OL: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val TAG_META: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_MENU:  'a * 'a -> (svalue,'a) token
++val START_MENU: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_MAP:  'a * 'a -> (svalue,'a) token
++val START_MAP: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val TAG_LINK: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_LI:  'a * 'a -> (svalue,'a) token
++val START_LI: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_KBD:  'a * 'a -> (svalue,'a) token
++val START_KBD:  'a * 'a -> (svalue,'a) token
++val TAG_ISINDEX: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val TAG_INPUT: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val TAG_IMG: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_I:  'a * 'a -> (svalue,'a) token
++val START_I:  'a * 'a -> (svalue,'a) token
++val END_HTML:  'a * 'a -> (svalue,'a) token
++val START_HTML:  'a * 'a -> (svalue,'a) token
++val TAG_HR: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_HEAD:  'a * 'a -> (svalue,'a) token
++val START_HEAD:  'a * 'a -> (svalue,'a) token
++val END_H6:  'a * 'a -> (svalue,'a) token
++val START_H6: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_H5:  'a * 'a -> (svalue,'a) token
++val START_H5: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_H4:  'a * 'a -> (svalue,'a) token
++val START_H4: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_H3:  'a * 'a -> (svalue,'a) token
++val START_H3: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_H2:  'a * 'a -> (svalue,'a) token
++val START_H2: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_H1:  'a * 'a -> (svalue,'a) token
++val START_H1: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_FORM:  'a * 'a -> (svalue,'a) token
++val START_FORM: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_BASEFONT:  'a * 'a -> (svalue,'a) token
++val START_BASEFONT: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_FONT:  'a * 'a -> (svalue,'a) token
++val START_FONT: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_EM:  'a * 'a -> (svalue,'a) token
++val START_EM:  'a * 'a -> (svalue,'a) token
++val END_DT:  'a * 'a -> (svalue,'a) token
++val START_DT:  'a * 'a -> (svalue,'a) token
++val END_DL:  'a * 'a -> (svalue,'a) token
++val START_DL: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_DIV:  'a * 'a -> (svalue,'a) token
++val START_DIV: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_DIR:  'a * 'a -> (svalue,'a) token
++val START_DIR: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_DFN:  'a * 'a -> (svalue,'a) token
++val START_DFN:  'a * 'a -> (svalue,'a) token
++val END_DD:  'a * 'a -> (svalue,'a) token
++val START_DD:  'a * 'a -> (svalue,'a) token
++val END_CODE:  'a * 'a -> (svalue,'a) token
++val START_CODE:  'a * 'a -> (svalue,'a) token
++val END_CITE:  'a * 'a -> (svalue,'a) token
++val START_CITE:  'a * 'a -> (svalue,'a) token
++val END_CENTER:  'a * 'a -> (svalue,'a) token
++val START_CENTER:  'a * 'a -> (svalue,'a) token
++val END_CAPTION:  'a * 'a -> (svalue,'a) token
++val START_CAPTION: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val TAG_BR: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_BODY:  'a * 'a -> (svalue,'a) token
++val START_BODY: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_BLOCKQUOTE:  'a * 'a -> (svalue,'a) token
++val START_BLOCKQUOTE:  'a * 'a -> (svalue,'a) token
++val END_BIG:  'a * 'a -> (svalue,'a) token
++val START_BIG:  'a * 'a -> (svalue,'a) token
++val TAG_BASE: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_B:  'a * 'a -> (svalue,'a) token
++val START_B:  'a * 'a -> (svalue,'a) token
++val TAG_AREA: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_APPLET:  'a * 'a -> (svalue,'a) token
++val START_APPLET: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val END_ADDRESS:  'a * 'a -> (svalue,'a) token
++val START_ADDRESS:  'a * 'a -> (svalue,'a) token
++val END_A:  'a * 'a -> (svalue,'a) token
++val START_A: (HTMLAttrVals.attrs) *  'a * 'a -> (svalue,'a) token
++val EOF:  'a * 'a -> (svalue,'a) token
++end
++signature HTML_LRVALS=
++sig
++structure Tokens : HTML_TOKENS
++structure ParserData:PARSER_DATA
++sharing type ParserData.Token.token = Tokens.token
++sharing type ParserData.svalue = Tokens.svalue
++end
 diff -Naur smlnj-lib/HTML/html-gram.sml smlnj-lib-mlton/HTML/html-gram.sml
---- smlnj-lib/HTML/html-gram.sml	2005-11-21 11:37:24.000000000 -0500
-+++ smlnj-lib-mlton/HTML/html-gram.sml	2005-11-21 11:37:24.000000000 -0500
-@@ -1226,10 +1226,11 @@
- (T 3) $$ (T 2) $$ (T 0)end
- structure Actions =
- struct 
+--- smlnj-lib/HTML/html-gram.sml	1969-12-31 19:00:00.000000000 -0500
++++ smlnj-lib-mlton/HTML/html-gram.sml	2006-05-02 23:00:43.000000000 -0400
+@@ -0,0 +1,2478 @@
++
++
++  functor HTMLLrValsFn (
++    structure Token : TOKEN
++    structure HTMLAttrs : HTML_ATTRS) = 
++struct
++structure ParserData=
++struct
++structure Header = 
++struct
++(* html-gram
++ *
++ * COPYRIGHT (c) 1996 AT&T Research.
++ *
++ * This grammar parses HTML 3.2.  Note that it does not enforce exclusions
++ * (for the content of FORM, PRE, etc).  Exclusions should be enforced as
++ * a second pass over the parse tree.
++ *)
++
++fun textList [text] = text
++  | textList l = HTML.TextList l
++
++fun blockList [blk] = blk
++  | blockList l = HTML.BlockList l
++
++fun textBlock l = HTML.TextBlock(textList l)
++    
++(* The elements of a definition list (<DL>) are tags (<DT>) and items (<DD>).
++ * To avoid shift/reduce problems, we parse them and then group them.
++ *)
++datatype deflist_item
++  = DL_tag of HTML.text
++  | DL_item of HTML.block
++
++fun groupDefListContents [] = []
++  | groupDefListContents (h :: t) = let
++      fun gdlc (DL_tag tag, []) = ({dt=[tag], dd=HTML.BlockList[]}, [])
++	| gdlc (DL_tag tag, h :: t) = let
++	    val ({dt, dd}, r) = gdlc (h, t)
++	    in
++	      ({dt = tag :: dt, dd = dd}, r)
++	    end
++	| gdlc (DL_item blk, r) = ({dt=[],dd=blk}, groupDefListContents r)
++      in
++	op :: (gdlc (h, t))
++      end
++
++(* A list of Text, paragraphs and blocks requires grouping the Text items and
++ * making an implicit paragraph.  We cannot directly use TextList because of
++ * conflicts.
++ *)
++datatype blklist_item
++  = BL_text of HTML.text list
++  | BL_block of HTML.block list
++
++fun consText (txt, BL_text tl :: r) = BL_text(txt::tl) :: r
++  | consText (txt, l) = BL_text[txt] :: l
++
++fun consBlock (blk, BL_block bl :: r) = BL_block(blk::bl) :: r
++  | consBlock (blk, l) = BL_block[blk] :: l
++
++fun mkBlock blks = let
++      fun f (BL_text tl) = textBlock tl
++	| f (BL_block bl) = blockList bl
++      in
++	blockList(List.map f blks)
++      end
++
++fun mkBody blks = HTML.BODY{
++	background = NONE,
++	bgcolor = NONE,
++	text = NONE,
++	link = NONE,
++	vlink = NONE,
++	alink = NONE,
++	content = mkBlock blks
++      }
++
++
++end
++structure LrTable = Token.LrTable
++structure Token = Token
++local open LrTable in 
++val table=let val actionRows =
++"\
++\\001\000\001\000\000\000\000\000\
++\\001\000\002\000\081\000\004\000\080\000\006\000\079\000\009\000\078\000\
++\\012\000\077\000\014\000\076\000\016\000\075\000\018\000\074\000\
++\\021\000\073\000\023\000\072\000\025\000\071\000\029\000\070\000\
++\\031\000\069\000\033\000\068\000\035\000\067\000\039\000\066\000\
++\\041\000\065\000\043\000\064\000\045\000\063\000\047\000\062\000\
++\\049\000\061\000\051\000\060\000\053\000\059\000\055\000\058\000\
++\\057\000\057\000\061\000\056\000\064\000\055\000\066\000\054\000\
++\\067\000\053\000\069\000\052\000\074\000\051\000\076\000\050\000\
++\\079\000\049\000\083\000\048\000\085\000\047\000\086\000\046\000\
++\\088\000\045\000\092\000\044\000\094\000\043\000\096\000\042\000\
++\\098\000\041\000\102\000\040\000\104\000\039\000\106\000\038\000\
++\\110\000\037\000\118\000\036\000\120\000\035\000\122\000\034\000\
++\\124\000\033\000\126\000\032\000\127\000\031\000\128\000\030\000\000\000\
++\\001\000\003\000\241\000\000\000\
++\\001\000\005\000\240\000\000\000\
++\\001\000\007\000\235\000\000\000\
++\\001\000\010\000\234\000\000\000\
++\\001\000\013\000\233\000\000\000\
++\\001\000\015\000\232\000\000\000\
++\\001\000\020\000\004\001\000\000\
++\\001\000\022\000\231\000\000\000\
++\\001\000\024\000\230\000\000\000\
++\\001\000\026\000\229\000\000\000\
++\\001\000\030\000\228\000\000\000\
++\\001\000\032\000\227\000\000\000\
++\\001\000\034\000\226\000\000\000\
++\\001\000\036\000\223\000\000\000\
++\\001\000\040\000\221\000\000\000\
++\\001\000\042\000\220\000\000\000\
++\\001\000\044\000\219\000\000\000\
++\\001\000\046\000\218\000\000\000\
++\\001\000\048\000\217\000\000\000\
++\\001\000\050\000\216\000\000\000\
++\\001\000\052\000\215\000\000\000\
++\\001\000\054\000\214\000\000\000\
++\\001\000\056\000\213\000\000\000\
++\\001\000\058\000\212\000\000\000\
++\\001\000\065\000\211\000\000\000\
++\\001\000\070\000\210\000\000\000\
++\\001\000\075\000\208\000\000\000\
++\\001\000\077\000\207\000\000\000\
++\\001\000\080\000\206\000\000\000\
++\\001\000\087\000\205\000\000\000\
++\\001\000\089\000\204\000\000\000\
++\\001\000\091\000\170\000\000\000\
++\\001\000\091\000\244\000\000\000\
++\\001\000\093\000\202\000\000\000\
++\\001\000\095\000\201\000\000\000\
++\\001\000\097\000\200\000\000\000\
++\\001\000\099\000\199\000\000\000\
++\\001\000\101\000\169\000\000\000\
++\\001\000\103\000\198\000\000\000\
++\\001\000\105\000\197\000\000\000\
++\\001\000\107\000\255\000\000\000\
++\\001\000\108\000\003\001\112\000\002\001\000\000\
++\\001\000\111\000\192\000\000\000\
++\\001\000\114\000\083\000\000\000\
++\\001\000\115\000\242\000\000\000\
++\\001\000\116\000\195\000\000\000\
++\\001\000\119\000\191\000\000\000\
++\\001\000\121\000\190\000\000\000\
++\\001\000\123\000\185\000\000\000\
++\\001\000\125\000\183\000\000\000\
++\\029\001\000\000\
++\\030\001\062\000\004\000\000\000\
++\\031\001\000\000\
++\\032\001\063\000\109\000\000\000\
++\\033\001\000\000\
++\\034\001\000\000\
++\\035\001\059\000\007\000\000\000\
++\\036\001\000\000\
++\\037\001\060\000\085\000\000\000\
++\\038\001\000\000\
++\\039\001\000\000\
++\\040\001\011\000\016\000\068\000\015\000\073\000\014\000\078\000\013\000\
++\\090\000\012\000\100\000\011\000\000\000\
++\\041\001\000\000\
++\\042\001\000\000\
++\\043\001\000\000\
++\\044\001\000\000\
++\\045\001\000\000\
++\\046\001\000\000\
++\\047\001\000\000\
++\\048\001\000\000\
++\\049\001\017\000\107\000\000\000\
++\\050\001\000\000\
++\\051\001\000\000\
++\\052\001\000\000\
++\\053\001\000\000\
++\\054\001\000\000\
++\\055\001\000\000\
++\\056\001\000\000\
++\\057\001\000\000\
++\\058\001\002\000\081\000\004\000\080\000\006\000\079\000\009\000\078\000\
++\\012\000\077\000\014\000\076\000\018\000\074\000\021\000\073\000\
++\\023\000\072\000\025\000\071\000\029\000\070\000\031\000\069\000\
++\\033\000\068\000\035\000\067\000\039\000\066\000\041\000\065\000\
++\\043\000\064\000\045\000\063\000\047\000\062\000\049\000\061\000\
++\\051\000\060\000\053\000\059\000\055\000\058\000\057\000\057\000\
++\\061\000\056\000\064\000\055\000\066\000\054\000\067\000\053\000\
++\\068\000\098\000\069\000\052\000\074\000\051\000\076\000\050\000\
++\\079\000\049\000\083\000\048\000\085\000\047\000\086\000\046\000\
++\\088\000\045\000\090\000\097\000\092\000\044\000\094\000\043\000\
++\\096\000\042\000\098\000\041\000\102\000\040\000\104\000\039\000\
++\\106\000\038\000\110\000\037\000\118\000\036\000\120\000\035\000\
++\\122\000\034\000\124\000\033\000\126\000\032\000\127\000\031\000\
++\\128\000\030\000\000\000\
++\\059\001\000\000\
++\\060\001\000\000\
++\\061\001\000\000\
++\\062\001\000\000\
++\\063\001\000\000\
++\\064\001\004\000\080\000\014\000\076\000\021\000\073\000\031\000\069\000\
++\\033\000\068\000\035\000\067\000\045\000\063\000\047\000\062\000\
++\\049\000\061\000\051\000\060\000\053\000\059\000\055\000\058\000\
++\\057\000\057\000\061\000\056\000\068\000\098\000\076\000\050\000\
++\\079\000\049\000\083\000\048\000\084\000\103\000\086\000\046\000\
++\\106\000\038\000\122\000\034\000\000\000\
++\\064\001\004\000\080\000\014\000\076\000\021\000\073\000\031\000\069\000\
++\\033\000\068\000\035\000\067\000\045\000\063\000\047\000\062\000\
++\\049\000\061\000\051\000\060\000\053\000\059\000\055\000\058\000\
++\\057\000\057\000\061\000\056\000\068\000\098\000\076\000\050\000\
++\\079\000\049\000\083\000\048\000\084\000\173\000\086\000\046\000\
++\\106\000\038\000\122\000\034\000\000\000\
++\\064\001\004\000\080\000\014\000\076\000\021\000\073\000\031\000\069\000\
++\\033\000\068\000\035\000\067\000\045\000\063\000\047\000\062\000\
++\\049\000\061\000\051\000\060\000\053\000\059\000\055\000\058\000\
++\\057\000\057\000\061\000\056\000\068\000\098\000\076\000\050\000\
++\\079\000\049\000\083\000\048\000\084\000\178\000\086\000\046\000\
++\\106\000\038\000\122\000\034\000\000\000\
++\\065\001\000\000\
++\\066\001\000\000\
++\\067\001\000\000\
++\\068\001\000\000\
++\\069\001\000\000\
++\\070\001\000\000\
++\\071\001\000\000\
++\\072\001\000\000\
++\\073\001\000\000\
++\\074\001\000\000\
++\\075\001\000\000\
++\\076\001\002\000\081\000\006\000\079\000\009\000\078\000\012\000\077\000\
++\\018\000\074\000\023\000\072\000\025\000\071\000\029\000\070\000\
++\\039\000\066\000\041\000\065\000\043\000\064\000\064\000\055\000\
++\\066\000\054\000\067\000\053\000\069\000\052\000\074\000\051\000\
++\\083\000\048\000\085\000\047\000\088\000\045\000\090\000\097\000\
++\\092\000\044\000\094\000\043\000\096\000\042\000\098\000\041\000\
++\\102\000\040\000\104\000\039\000\110\000\037\000\118\000\036\000\
++\\120\000\035\000\124\000\033\000\126\000\032\000\127\000\031\000\
++\\128\000\030\000\000\000\
++\\077\001\000\000\
++\\078\001\000\000\
++\\079\001\000\000\
++\\080\001\083\000\048\000\084\000\239\000\000\000\
++\\080\001\083\000\048\000\084\000\012\001\000\000\
++\\081\001\000\000\
++\\082\001\000\000\
++\\083\001\000\000\
++\\084\001\000\000\
++\\085\001\000\000\
++\\086\001\000\000\
++\\087\001\000\000\
++\\088\001\000\000\
++\\089\001\000\000\
++\\090\001\000\000\
++\\091\001\000\000\
++\\092\001\000\000\
++\\093\001\000\000\
++\\094\001\000\000\
++\\095\001\000\000\
++\\096\001\000\000\
++\\097\001\000\000\
++\\098\001\000\000\
++\\099\001\071\000\115\000\000\000\
++\\100\001\000\000\
++\\101\001\000\000\
++\\102\001\027\000\151\000\037\000\150\000\000\000\
++\\103\001\000\000\
++\\104\001\000\000\
++\\105\001\000\000\
++\\106\001\002\000\081\000\006\000\079\000\009\000\078\000\012\000\077\000\
++\\014\000\076\000\018\000\074\000\021\000\073\000\023\000\072\000\
++\\025\000\071\000\029\000\070\000\031\000\069\000\033\000\068\000\
++\\035\000\067\000\039\000\066\000\041\000\065\000\043\000\064\000\
++\\045\000\063\000\061\000\056\000\064\000\055\000\066\000\054\000\
++\\067\000\053\000\068\000\098\000\069\000\052\000\074\000\051\000\
++\\076\000\050\000\079\000\049\000\083\000\048\000\085\000\047\000\
++\\086\000\046\000\088\000\045\000\090\000\097\000\092\000\044\000\
++\\094\000\043\000\096\000\042\000\098\000\041\000\102\000\040\000\
++\\104\000\039\000\106\000\038\000\110\000\037\000\118\000\036\000\
++\\120\000\035\000\122\000\034\000\124\000\033\000\126\000\032\000\
++\\127\000\031\000\128\000\030\000\000\000\
++\\107\001\000\000\
++\\108\001\000\000\
++\\109\001\000\000\
++\\110\001\000\000\
++\\111\001\014\000\076\000\021\000\073\000\031\000\069\000\033\000\068\000\
++\\035\000\067\000\045\000\063\000\061\000\056\000\068\000\098\000\
++\\076\000\050\000\079\000\049\000\083\000\048\000\084\000\252\000\
++\\086\000\046\000\106\000\038\000\122\000\034\000\000\000\
++\\111\001\014\000\076\000\021\000\073\000\031\000\069\000\033\000\068\000\
++\\035\000\067\000\045\000\063\000\061\000\056\000\068\000\098\000\
++\\076\000\050\000\079\000\049\000\083\000\048\000\084\000\016\001\
++\\086\000\046\000\106\000\038\000\122\000\034\000\000\000\
++\\112\001\000\000\
++\\113\001\000\000\
++\\114\001\000\000\
++\\115\001\072\000\248\000\000\000\
++\\116\001\000\000\
++\\117\001\038\000\008\001\000\000\
++\\118\001\000\000\
++\\119\001\028\000\010\001\000\000\
++\\120\001\000\000\
++\\121\001\000\000\
++\\122\001\019\000\120\000\000\000\
++\\123\001\000\000\
++\\124\001\116\000\195\000\000\000\
++\\125\001\000\000\
++\\126\001\117\000\020\001\000\000\
++\\127\001\000\000\
++\\128\001\108\000\003\001\112\000\002\001\000\000\
++\\129\001\000\000\
++\\130\001\000\000\
++\\131\001\113\000\026\001\000\000\
++\\132\001\000\000\
++\\133\001\109\000\027\001\000\000\
++\\134\001\000\000\
++\\135\001\002\000\081\000\006\000\079\000\009\000\078\000\012\000\077\000\
++\\018\000\074\000\023\000\072\000\025\000\071\000\029\000\070\000\
++\\039\000\066\000\041\000\065\000\043\000\064\000\064\000\055\000\
++\\066\000\054\000\067\000\053\000\069\000\052\000\074\000\051\000\
++\\085\000\047\000\088\000\045\000\090\000\097\000\092\000\044\000\
++\\094\000\043\000\096\000\042\000\098\000\041\000\102\000\040\000\
++\\104\000\039\000\110\000\037\000\118\000\036\000\120\000\035\000\
++\\124\000\033\000\126\000\032\000\127\000\031\000\128\000\030\000\000\000\
++\\136\001\000\000\
++\\137\001\000\000\
++\\138\001\000\000\
++\\139\001\000\000\
++\\140\001\000\000\
++\\141\001\000\000\
++\\142\001\000\000\
++\\143\001\000\000\
++\\144\001\000\000\
++\\145\001\000\000\
++\\146\001\000\000\
++\\147\001\000\000\
++\\148\001\000\000\
++\\149\001\000\000\
++\\150\001\000\000\
++\\151\001\000\000\
++\\152\001\000\000\
++\\153\001\000\000\
++\\154\001\000\000\
++\\155\001\000\000\
++\\156\001\000\000\
++\\157\001\000\000\
++\\158\001\000\000\
++\\159\001\000\000\
++\\160\001\000\000\
++\\161\001\000\000\
++\\162\001\000\000\
++\\163\001\000\000\
++\\164\001\000\000\
++\\165\001\000\000\
++\\166\001\000\000\
++\\167\001\000\000\
++\\168\001\000\000\
++\\169\001\008\000\134\000\000\000\
++\\170\001\000\000\
++\\171\001\000\000\
++\\172\001\000\000\
++\\173\001\000\000\
++\\174\001\081\000\127\000\000\000\
++\\175\001\000\000\
++\\176\001\082\000\006\001\000\000\
++\\177\001\000\000\
++\\178\001\000\000\
++\\179\001\126\000\032\000\127\000\031\000\128\000\030\000\000\000\
++\\180\001\000\000\
++\\181\001\000\000\
++\\182\001\000\000\
++\\183\001\000\000\
++\"
++val actionRowNumbers =
++"\053\000\058\000\054\000\063\000\
++\\001\000\059\000\063\000\045\000\
++\\060\000\206\000\206\000\065\000\
++\\066\000\067\000\068\000\164\000\
++\\168\000\167\000\166\000\165\000\
++\\081\000\110\000\109\000\087\000\
++\\081\000\081\000\072\000\055\000\
++\\210\000\209\000\208\000\162\000\
++\\125\000\162\000\162\000\206\000\
++\\149\000\162\000\162\000\162\000\
++\\162\000\162\000\201\000\162\000\
++\\162\000\195\000\162\000\125\000\
++\\125\000\196\000\162\000\198\000\
++\\189\000\162\000\115\000\162\000\
++\\162\000\162\000\162\000\162\000\
++\\162\000\081\000\162\000\162\000\
++\\162\000\128\000\081\000\125\000\
++\\162\000\162\000\162\000\081\000\
++\\193\000\081\000\081\000\162\000\
++\\162\000\162\000\101\000\162\000\
++\\064\000\206\000\057\000\061\000\
++\\206\000\205\000\039\000\033\000\
++\\081\000\169\000\088\000\081\000\
++\\117\000\081\000\076\000\206\000\
++\\118\000\089\000\081\000\081\000\
++\\080\000\081\000\078\000\077\000\
++\\071\000\073\000\052\000\056\000\
++\\162\000\161\000\051\000\125\000\
++\\050\000\132\000\049\000\048\000\
++\\044\000\047\000\162\000\041\000\
++\\040\000\038\000\037\000\036\000\
++\\035\000\206\000\032\000\031\000\
++\\119\000\030\000\029\000\028\000\
++\\196\000\027\000\026\000\025\000\
++\\024\000\023\000\022\000\021\000\
++\\020\000\074\000\019\000\018\000\
++\\017\000\016\000\128\000\015\000\
++\\162\000\132\000\014\000\013\000\
++\\012\000\011\000\010\000\009\000\
++\\075\000\007\000\006\000\005\000\
++\\004\000\101\000\105\000\003\000\
++\\002\000\046\000\207\000\069\000\
++\\070\000\082\000\086\000\081\000\
++\\084\000\083\000\034\000\093\000\
++\\081\000\091\000\090\000\079\000\
++\\163\000\186\000\126\000\120\000\
++\\132\000\142\000\137\000\132\000\
++\\174\000\171\000\200\000\151\000\
++\\042\000\043\000\008\000\179\000\
++\\178\000\181\000\175\000\177\000\
++\\199\000\203\000\184\000\148\000\
++\\121\000\123\000\194\000\197\000\
++\\185\000\172\000\099\000\098\000\
++\\097\000\096\000\095\000\094\000\
++\\114\000\192\000\191\000\180\000\
++\\129\000\124\000\144\000\146\000\
++\\111\000\122\000\183\000\182\000\
++\\187\000\112\000\113\000\176\000\
++\\173\000\190\000\102\000\106\000\
++\\104\000\101\000\100\000\188\000\
++\\063\000\085\000\170\000\092\000\
++\\133\000\127\000\143\000\136\000\
++\\138\000\132\000\132\000\134\000\
++\\152\000\116\000\155\000\153\000\
++\\081\000\081\000\150\000\201\000\
++\\204\000\130\000\145\000\131\000\
++\\147\000\108\000\101\000\103\000\
++\\062\000\141\000\132\000\139\000\
++\\135\000\156\000\154\000\158\000\
++\\160\000\202\000\107\000\140\000\
++\\157\000\159\000\000\000"
++val gotoT =
++"\
++\\001\000\026\001\002\000\001\000\000\000\
++\\004\000\004\000\005\000\003\000\000\000\
++\\000\000\
++\\007\000\008\000\008\000\007\000\009\000\006\000\000\000\
++\\010\000\027\000\014\000\026\000\017\000\025\000\020\000\024\000\
++\\022\000\023\000\023\000\022\000\033\000\021\000\041\000\020\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\000\000\
++\\008\000\080\000\009\000\006\000\000\000\
++\\000\000\
++\\006\000\082\000\000\000\
++\\050\000\086\000\051\000\085\000\052\000\084\000\000\000\
++\\050\000\087\000\051\000\085\000\052\000\084\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\015\000\094\000\017\000\093\000\020\000\092\000\021\000\091\000\
++\\022\000\090\000\023\000\022\000\033\000\021\000\041\000\089\000\
++\\042\000\088\000\043\000\019\000\044\000\018\000\045\000\017\000\
++\\047\000\016\000\052\000\015\000\000\000\
++\\000\000\
++\\000\000\
++\\016\000\100\000\017\000\099\000\020\000\092\000\021\000\098\000\
++\\022\000\097\000\023\000\022\000\033\000\021\000\000\000\
++\\015\000\102\000\017\000\093\000\020\000\092\000\021\000\091\000\
++\\022\000\090\000\023\000\022\000\033\000\021\000\041\000\089\000\
++\\042\000\088\000\043\000\019\000\044\000\018\000\045\000\017\000\
++\\047\000\016\000\052\000\015\000\000\000\
++\\015\000\103\000\017\000\093\000\020\000\092\000\021\000\091\000\
++\\022\000\090\000\023\000\022\000\033\000\021\000\041\000\089\000\
++\\042\000\088\000\043\000\019\000\044\000\018\000\045\000\017\000\
++\\047\000\016\000\052\000\015\000\000\000\
++\\012\000\104\000\000\000\
++\\003\000\106\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\039\000\110\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\024\000\112\000\025\000\111\000\000\000\
++\\039\000\114\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\039\000\115\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\050\000\116\000\051\000\085\000\052\000\084\000\000\000\
++\\034\000\117\000\000\000\
++\\039\000\119\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\039\000\120\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\039\000\121\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\039\000\122\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\039\000\123\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\048\000\124\000\000\000\
++\\039\000\126\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\039\000\127\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\000\000\
++\\039\000\128\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\024\000\129\000\025\000\111\000\000\000\
++\\024\000\130\000\025\000\111\000\000\000\
++\\046\000\131\000\000\000\
++\\039\000\133\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\000\000\
++\\000\000\
++\\039\000\134\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\000\000\
++\\039\000\135\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\039\000\136\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\039\000\137\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\039\000\138\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\039\000\139\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\039\000\140\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\013\000\142\000\015\000\141\000\017\000\093\000\020\000\092\000\
++\\021\000\091\000\022\000\090\000\023\000\022\000\033\000\021\000\
++\\041\000\089\000\042\000\088\000\043\000\019\000\044\000\018\000\
++\\045\000\017\000\047\000\016\000\052\000\015\000\000\000\
++\\039\000\143\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\039\000\144\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\039\000\145\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\026\000\147\000\027\000\146\000\000\000\
++\\013\000\150\000\015\000\141\000\017\000\093\000\020\000\092\000\
++\\021\000\091\000\022\000\090\000\023\000\022\000\033\000\021\000\
++\\041\000\089\000\042\000\088\000\043\000\019\000\044\000\018\000\
++\\045\000\017\000\047\000\016\000\052\000\015\000\000\000\
++\\024\000\151\000\025\000\111\000\000\000\
++\\039\000\152\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\039\000\153\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\039\000\154\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\013\000\155\000\015\000\141\000\017\000\093\000\020\000\092\000\
++\\021\000\091\000\022\000\090\000\023\000\022\000\033\000\021\000\
++\\041\000\089\000\042\000\088\000\043\000\019\000\044\000\018\000\
++\\045\000\017\000\047\000\016\000\052\000\015\000\000\000\
++\\000\000\
++\\013\000\156\000\015\000\141\000\017\000\093\000\020\000\092\000\
++\\021\000\091\000\022\000\090\000\023\000\022\000\033\000\021\000\
++\\041\000\089\000\042\000\088\000\043\000\019\000\044\000\018\000\
++\\045\000\017\000\047\000\016\000\052\000\015\000\000\000\
++\\013\000\157\000\015\000\141\000\017\000\093\000\020\000\092\000\
++\\021\000\091\000\022\000\090\000\023\000\022\000\033\000\021\000\
++\\041\000\089\000\042\000\088\000\043\000\019\000\044\000\018\000\
++\\045\000\017\000\047\000\016\000\052\000\015\000\000\000\
++\\039\000\158\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\039\000\159\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\039\000\160\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\018\000\163\000\022\000\162\000\041\000\089\000\042\000\161\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\039\000\164\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\000\000\
++\\050\000\165\000\051\000\085\000\052\000\084\000\000\000\
++\\000\000\
++\\000\000\
++\\051\000\166\000\052\000\084\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\015\000\169\000\017\000\093\000\020\000\092\000\021\000\091\000\
++\\022\000\090\000\023\000\022\000\033\000\021\000\041\000\089\000\
++\\042\000\088\000\043\000\019\000\044\000\018\000\045\000\017\000\
++\\047\000\016\000\052\000\015\000\000\000\
++\\000\000\
++\\016\000\170\000\017\000\099\000\020\000\092\000\021\000\098\000\
++\\022\000\097\000\023\000\022\000\033\000\021\000\000\000\
++\\015\000\172\000\017\000\093\000\020\000\092\000\021\000\091\000\
++\\022\000\090\000\023\000\022\000\033\000\021\000\041\000\089\000\
++\\042\000\088\000\043\000\019\000\044\000\018\000\045\000\017\000\
++\\047\000\016\000\052\000\015\000\000\000\
++\\000\000\
++\\015\000\173\000\017\000\093\000\020\000\092\000\021\000\091\000\
++\\022\000\090\000\023\000\022\000\033\000\021\000\041\000\089\000\
++\\042\000\088\000\043\000\019\000\044\000\018\000\045\000\017\000\
++\\047\000\016\000\052\000\015\000\000\000\
++\\000\000\
++\\050\000\174\000\051\000\085\000\052\000\084\000\000\000\
++\\000\000\
++\\016\000\175\000\017\000\099\000\020\000\092\000\021\000\098\000\
++\\022\000\097\000\023\000\022\000\033\000\021\000\000\000\
++\\015\000\177\000\017\000\093\000\020\000\092\000\021\000\091\000\
++\\022\000\090\000\023\000\022\000\033\000\021\000\041\000\089\000\
++\\042\000\088\000\043\000\019\000\044\000\018\000\045\000\017\000\
++\\047\000\016\000\052\000\015\000\000\000\
++\\015\000\178\000\017\000\093\000\020\000\092\000\021\000\091\000\
++\\022\000\090\000\023\000\022\000\033\000\021\000\041\000\089\000\
++\\042\000\088\000\043\000\019\000\044\000\018\000\045\000\017\000\
++\\047\000\016\000\052\000\015\000\000\000\
++\\000\000\
++\\015\000\179\000\017\000\093\000\020\000\092\000\021\000\091\000\
++\\022\000\090\000\023\000\022\000\033\000\021\000\041\000\089\000\
++\\042\000\088\000\043\000\019\000\044\000\018\000\045\000\017\000\
++\\047\000\016\000\052\000\015\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\040\000\180\000\041\000\089\000\042\000\108\000\043\000\019\000\
++\\044\000\018\000\045\000\017\000\047\000\016\000\052\000\015\000\000\000\
++\\000\000\
++\\000\000\
++\\024\000\182\000\025\000\111\000\000\000\
++\\000\000\
++\\020\000\092\000\021\000\187\000\022\000\186\000\023\000\022\000\
++\\028\000\185\000\033\000\021\000\041\000\089\000\042\000\184\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\035\000\192\000\036\000\191\000\000\000\
++\\039\000\194\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\050\000\201\000\051\000\085\000\052\000\084\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\046\000\207\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\026\000\220\000\027\000\146\000\000\000\
++\\000\000\
++\\039\000\222\000\040\000\109\000\041\000\089\000\042\000\108\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\020\000\092\000\021\000\187\000\022\000\186\000\023\000\022\000\
++\\028\000\223\000\033\000\021\000\041\000\089\000\042\000\184\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\018\000\234\000\022\000\162\000\041\000\089\000\042\000\161\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\019\000\236\000\022\000\235\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\015\000\241\000\017\000\093\000\020\000\092\000\021\000\091\000\
++\\022\000\090\000\023\000\022\000\033\000\021\000\041\000\089\000\
++\\042\000\088\000\043\000\019\000\044\000\018\000\045\000\017\000\
++\\047\000\016\000\052\000\015\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\015\000\243\000\017\000\093\000\020\000\092\000\021\000\091\000\
++\\022\000\090\000\023\000\022\000\033\000\021\000\041\000\089\000\
++\\042\000\088\000\043\000\019\000\044\000\018\000\045\000\017\000\
++\\047\000\016\000\052\000\015\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\020\000\092\000\021\000\187\000\022\000\186\000\023\000\022\000\
++\\028\000\244\000\033\000\021\000\041\000\089\000\042\000\184\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\030\000\245\000\000\000\
++\\020\000\092\000\021\000\249\000\022\000\248\000\023\000\022\000\
++\\029\000\247\000\033\000\021\000\000\000\
++\\020\000\092\000\021\000\187\000\022\000\186\000\023\000\022\000\
++\\028\000\251\000\033\000\021\000\041\000\089\000\042\000\184\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\035\000\252\000\036\000\191\000\000\000\
++\\000\000\
++\\037\000\255\000\038\000\254\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\049\000\003\001\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\031\000\005\001\000\000\
++\\032\000\007\001\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\019\000\009\001\022\000\235\000\000\000\
++\\000\000\
++\\018\000\011\001\022\000\162\000\041\000\089\000\042\000\161\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\000\000\
++\\000\000\
++\\008\000\012\001\009\000\006\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\020\000\092\000\021\000\249\000\022\000\248\000\023\000\022\000\
++\\029\000\013\001\033\000\021\000\000\000\
++\\020\000\092\000\021\000\187\000\022\000\186\000\023\000\022\000\
++\\028\000\015\001\033\000\021\000\041\000\089\000\042\000\184\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\020\000\092\000\021\000\187\000\022\000\186\000\023\000\022\000\
++\\028\000\016\001\033\000\021\000\041\000\089\000\042\000\184\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\037\000\017\001\038\000\254\000\000\000\
++\\000\000\
++\\013\000\019\001\015\000\141\000\017\000\093\000\020\000\092\000\
++\\021\000\091\000\022\000\090\000\023\000\022\000\033\000\021\000\
++\\041\000\089\000\042\000\088\000\043\000\019\000\044\000\018\000\
++\\045\000\017\000\047\000\016\000\052\000\015\000\000\000\
++\\013\000\020\001\015\000\141\000\017\000\093\000\020\000\092\000\
++\\021\000\091\000\022\000\090\000\023\000\022\000\033\000\021\000\
++\\041\000\089\000\042\000\088\000\043\000\019\000\044\000\018\000\
++\\045\000\017\000\047\000\016\000\052\000\015\000\000\000\
++\\000\000\
++\\048\000\021\001\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\018\000\022\001\022\000\162\000\041\000\089\000\042\000\161\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\020\000\092\000\021\000\187\000\022\000\186\000\023\000\022\000\
++\\028\000\023\001\033\000\021\000\041\000\089\000\042\000\184\000\
++\\043\000\019\000\044\000\018\000\045\000\017\000\047\000\016\000\
++\\052\000\015\000\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\\000\000\
++\"
++val numstates = 283
++val numrules = 155
++val s = ref "" and index = ref 0
++val string_to_int = fn () => 
++let val i = !index
++in index := i+2; Char.ord(String.sub(!s,i)) + Char.ord(String.sub(!s,i+1)) * 256
++end
++val string_to_list = fn s' =>
++    let val len = String.size s'
++        fun f () =
++           if !index < len then string_to_int() :: f()
++           else nil
++   in index := 0; s := s'; f ()
++   end
++val string_to_pairlist = fn (conv_key,conv_entry) =>
++     let fun f () =
++         case string_to_int()
++         of 0 => EMPTY
++          | n => PAIR(conv_key (n-1),conv_entry (string_to_int()),f())
++     in f
++     end
++val string_to_pairlist_default = fn (conv_key,conv_entry) =>
++    let val conv_row = string_to_pairlist(conv_key,conv_entry)
++    in fn () =>
++       let val default = conv_entry(string_to_int())
++           val row = conv_row()
++       in (row,default)
++       end
++   end
++val string_to_table = fn (convert_row,s') =>
++    let val len = String.size s'
++        fun f ()=
++           if !index < len then convert_row() :: f()
++           else nil
++     in (s := s'; index := 0; f ())
++     end
++local
++  val memo = Array.array(numstates+numrules,ERROR)
++  val _ =let fun g i=(Array.update(memo,i,REDUCE(i-numstates)); g(i+1))
++       fun f i =
++            if i=numstates then g i
++            else (Array.update(memo,i,SHIFT (STATE i)); f (i+1))
++          in f 0 handle Subscript => ()
++          end
++in
++val entry_to_action = fn 0 => ACCEPT | 1 => ERROR | j => Array.sub(memo,(j-2))
++end
++val gotoT=Array.fromList(string_to_table(string_to_pairlist(NT,STATE),gotoT))
++val actionRows=string_to_table(string_to_pairlist_default(T,entry_to_action),actionRows)
++val actionRowNumbers = string_to_list actionRowNumbers
++val actionT = let val actionRowLookUp=
++let val a=Array.fromList(actionRows) in fn i=>Array.sub(a,i) end
++in Array.fromList(map actionRowLookUp actionRowNumbers)
++end
++in LrTable.mkLrTable {actions=actionT,gotos=gotoT,numRules=numrules,
++numStates=numstates,initialState=STATE 0}
++end
++end
++local open Header in
++type pos = int
++type arg = int -> HTMLAttrs.context
++structure MlyValue = 
++struct
++datatype svalue = VOID | ntVOID of unit | ENTITY_REF of  (string)
++ | CHAR_REF of  (string) | PCDATA of  (string)
++ | START_UL of  (HTMLAttrVals.attrs)
++ | START_TR of  (HTMLAttrVals.attrs)
++ | START_TH of  (HTMLAttrVals.attrs)
++ | START_TEXTAREA of  (HTMLAttrVals.attrs)
++ | START_TD of  (HTMLAttrVals.attrs)
++ | START_TABLE of  (HTMLAttrVals.attrs)
++ | START_SELECT of  (HTMLAttrVals.attrs)
++ | START_PRE of  (HTMLAttrVals.attrs)
++ | TAG_PARAM of  (HTMLAttrVals.attrs)
++ | START_P of  (HTMLAttrVals.attrs)
++ | START_OPTION of  (HTMLAttrVals.attrs)
++ | START_OL of  (HTMLAttrVals.attrs)
++ | TAG_META of  (HTMLAttrVals.attrs)
++ | START_MENU of  (HTMLAttrVals.attrs)
++ | START_MAP of  (HTMLAttrVals.attrs)
++ | TAG_LINK of  (HTMLAttrVals.attrs)
++ | START_LI of  (HTMLAttrVals.attrs)
++ | TAG_ISINDEX of  (HTMLAttrVals.attrs)
++ | TAG_INPUT of  (HTMLAttrVals.attrs)
++ | TAG_IMG of  (HTMLAttrVals.attrs) | TAG_HR of  (HTMLAttrVals.attrs)
++ | START_H6 of  (HTMLAttrVals.attrs)
++ | START_H5 of  (HTMLAttrVals.attrs)
++ | START_H4 of  (HTMLAttrVals.attrs)
++ | START_H3 of  (HTMLAttrVals.attrs)
++ | START_H2 of  (HTMLAttrVals.attrs)
++ | START_H1 of  (HTMLAttrVals.attrs)
++ | START_FORM of  (HTMLAttrVals.attrs)
++ | START_BASEFONT of  (HTMLAttrVals.attrs)
++ | START_FONT of  (HTMLAttrVals.attrs)
++ | START_DL of  (HTMLAttrVals.attrs)
++ | START_DIV of  (HTMLAttrVals.attrs)
++ | START_DIR of  (HTMLAttrVals.attrs)
++ | START_CAPTION of  (HTMLAttrVals.attrs)
++ | TAG_BR of  (HTMLAttrVals.attrs)
++ | START_BODY of  (HTMLAttrVals.attrs)
++ | TAG_BASE of  (HTMLAttrVals.attrs)
++ | TAG_AREA of  (HTMLAttrVals.attrs)
++ | START_APPLET of  (HTMLAttrVals.attrs)
++ | START_A of  (HTMLAttrVals.attrs) | PCDataElem of  (HTML.pcdata)
++ | PCDataList of  (HTML.pcdata list) | PCData of  (HTML.pcdata)
++ | OptionList of  (HTML.select_option list) | Form of  (HTML.text)
++ | AreaList of  (HTML.area list) | Special of  (HTML.text)
++ | Phrase of  (HTML.text) | Font of  (HTML.text)
++ | Text of  (HTML.text) | TextWOScript of  (HTML.text)
++ | TextList' of  (HTML.text list) | TextList of  (HTML.text)
++ | TableCell of  (HTML.table_cell)
++ | TableCellList of  (HTML.table_cell list) | TableRow of  (HTML.tr)
++ | TableRowList of  (HTML.tr list)
++ | optCaption of  (HTML.caption option)
++ | Preformatted of  (HTML.block) | Flow2 of  (blklist_item list)
++ | Flow1 of  (blklist_item list) | DLItem of  (deflist_item)
++ | DLItemList of  (deflist_item list) | ListItem of  (HTML.list_item)
++ | ListItemList of  (HTML.list_item list) | List of  (HTML.block)
++ | Paragraph of  (HTML.block) | Block of  (HTML.block)
++ | BlockWOIndex of  (HTML.block)
++ | AddressContent2 of  (blklist_item list)
++ | AddressContent1 of  (blklist_item list)
++ | BodyElement of  (HTML.block) | BodyContent2 of  (blklist_item list)
++ | BodyContent1 of  (blklist_item list) | BodyContent0 of  (HTML.body)
++ | BodyContent of  (HTML.block) | Body of  (HTML.body)
++ | HeadElement of  (HTML.head_content)
++ | HeadElements of  (HTML.head_content list)
++ | HeadContents of  (HTML.head_content list)
++ | Head of  (HTML.head_content list)
++ | StartHTML of  (HTML.cdata option) | Document of  (HTML.html)
++end
++type svalue = MlyValue.svalue
++type result = HTML.html
++end
++structure EC=
++struct
++open LrTable
++infix 5 $$
++fun x $$ y = y::x
++val is_keyword =
++fn _ => false
++val preferred_change : (term list * term list) list = 
++nil
++val noShift = 
++fn (T 0) => true | _ => false
++val showTerminal =
++fn (T 0) => "EOF"
++  | (T 1) => "START_A"
++  | (T 2) => "END_A"
++  | (T 3) => "START_ADDRESS"
++  | (T 4) => "END_ADDRESS"
++  | (T 5) => "START_APPLET"
++  | (T 6) => "END_APPLET"
++  | (T 7) => "TAG_AREA"
++  | (T 8) => "START_B"
++  | (T 9) => "END_B"
++  | (T 10) => "TAG_BASE"
++  | (T 11) => "START_BIG"
++  | (T 12) => "END_BIG"
++  | (T 13) => "START_BLOCKQUOTE"
++  | (T 14) => "END_BLOCKQUOTE"
++  | (T 15) => "START_BODY"
++  | (T 16) => "END_BODY"
++  | (T 17) => "TAG_BR"
++  | (T 18) => "START_CAPTION"
++  | (T 19) => "END_CAPTION"
++  | (T 20) => "START_CENTER"
++  | (T 21) => "END_CENTER"
++  | (T 22) => "START_CITE"
++  | (T 23) => "END_CITE"
++  | (T 24) => "START_CODE"
++  | (T 25) => "END_CODE"
++  | (T 26) => "START_DD"
++  | (T 27) => "END_DD"
++  | (T 28) => "START_DFN"
++  | (T 29) => "END_DFN"
++  | (T 30) => "START_DIR"
++  | (T 31) => "END_DIR"
++  | (T 32) => "START_DIV"
++  | (T 33) => "END_DIV"
++  | (T 34) => "START_DL"
++  | (T 35) => "END_DL"
++  | (T 36) => "START_DT"
++  | (T 37) => "END_DT"
++  | (T 38) => "START_EM"
++  | (T 39) => "END_EM"
++  | (T 40) => "START_FONT"
++  | (T 41) => "END_FONT"
++  | (T 42) => "START_BASEFONT"
++  | (T 43) => "END_BASEFONT"
++  | (T 44) => "START_FORM"
++  | (T 45) => "END_FORM"
++  | (T 46) => "START_H1"
++  | (T 47) => "END_H1"
++  | (T 48) => "START_H2"
++  | (T 49) => "END_H2"
++  | (T 50) => "START_H3"
++  | (T 51) => "END_H3"
++  | (T 52) => "START_H4"
++  | (T 53) => "END_H4"
++  | (T 54) => "START_H5"
++  | (T 55) => "END_H5"
++  | (T 56) => "START_H6"
++  | (T 57) => "END_H6"
++  | (T 58) => "START_HEAD"
++  | (T 59) => "END_HEAD"
++  | (T 60) => "TAG_HR"
++  | (T 61) => "START_HTML"
++  | (T 62) => "END_HTML"
++  | (T 63) => "START_I"
++  | (T 64) => "END_I"
++  | (T 65) => "TAG_IMG"
++  | (T 66) => "TAG_INPUT"
++  | (T 67) => "TAG_ISINDEX"
++  | (T 68) => "START_KBD"
++  | (T 69) => "END_KBD"
++  | (T 70) => "START_LI"
++  | (T 71) => "END_LI"
++  | (T 72) => "TAG_LINK"
++  | (T 73) => "START_MAP"
++  | (T 74) => "END_MAP"
++  | (T 75) => "START_MENU"
++  | (T 76) => "END_MENU"
++  | (T 77) => "TAG_META"
++  | (T 78) => "START_OL"
++  | (T 79) => "END_OL"
++  | (T 80) => "START_OPTION"
++  | (T 81) => "END_OPTION"
++  | (T 82) => "START_P"
++  | (T 83) => "END_P"
++  | (T 84) => "TAG_PARAM"
++  | (T 85) => "START_PRE"
++  | (T 86) => "END_PRE"
++  | (T 87) => "START_SAMP"
++  | (T 88) => "END_SAMP"
++  | (T 89) => "START_SCRIPT"
++  | (T 90) => "END_SCRIPT"
++  | (T 91) => "START_SELECT"
++  | (T 92) => "END_SELECT"
++  | (T 93) => "START_SMALL"
++  | (T 94) => "END_SMALL"
++  | (T 95) => "START_STRIKE"
++  | (T 96) => "END_STRIKE"
++  | (T 97) => "START_STRONG"
++  | (T 98) => "END_STRONG"
++  | (T 99) => "START_STYLE"
++  | (T 100) => "END_STYLE"
++  | (T 101) => "START_SUB"
++  | (T 102) => "END_SUB"
++  | (T 103) => "START_SUP"
++  | (T 104) => "END_SUP"
++  | (T 105) => "START_TABLE"
++  | (T 106) => "END_TABLE"
++  | (T 107) => "START_TD"
++  | (T 108) => "END_TD"
++  | (T 109) => "START_TEXTAREA"
++  | (T 110) => "END_TEXTAREA"
++  | (T 111) => "START_TH"
++  | (T 112) => "END_TH"
++  | (T 113) => "START_TITLE"
++  | (T 114) => "END_TITLE"
++  | (T 115) => "START_TR"
++  | (T 116) => "END_TR"
++  | (T 117) => "START_TT"
++  | (T 118) => "END_TT"
++  | (T 119) => "START_U"
++  | (T 120) => "END_U"
++  | (T 121) => "START_UL"
++  | (T 122) => "END_UL"
++  | (T 123) => "START_VAR"
++  | (T 124) => "END_VAR"
++  | (T 125) => "PCDATA"
++  | (T 126) => "CHAR_REF"
++  | (T 127) => "ENTITY_REF"
++  | _ => "bogus-term"
++local open Header in
++val errtermvalue=
++fn (T 1) => MlyValue.START_A(([])) | 
++(T 5) => MlyValue.START_APPLET((
++[
++    ("CODE", HTMLAttrs.NAME ""),
++    ("WIDTH", HTMLAttrs.NAME ""),
++    ("HEIGHT", HTMLAttrs.NAME "")
++  ]
++)) | 
++(T 7) => MlyValue.TAG_AREA(([("ALT", HTMLAttrs.NAME "")])) | 
++(T 10) => MlyValue.TAG_BASE(([("URL", HTMLAttrs.NAME "")])) | 
++(T 15) => MlyValue.START_BODY(([])) | 
++(T 17) => MlyValue.TAG_BR(([])) | 
++(T 18) => MlyValue.START_CAPTION(([])) | 
++(T 30) => MlyValue.START_DIR(([])) | 
++(T 32) => MlyValue.START_DIV(([])) | 
++(T 34) => MlyValue.START_DL(([])) | 
++(T 40) => MlyValue.START_FONT(([])) | 
++(T 42) => MlyValue.START_BASEFONT(([])) | 
++(T 44) => MlyValue.START_FORM(([])) | 
++(T 46) => MlyValue.START_H1(([])) | 
++(T 48) => MlyValue.START_H2(([])) | 
++(T 50) => MlyValue.START_H3(([])) | 
++(T 52) => MlyValue.START_H4(([])) | 
++(T 54) => MlyValue.START_H5(([])) | 
++(T 56) => MlyValue.START_H6(([])) | 
++(T 60) => MlyValue.TAG_HR(([])) | 
++(T 65) => MlyValue.TAG_IMG(([("SRC", HTMLAttrs.NAME "")])) | 
++(T 66) => MlyValue.TAG_INPUT(([])) | 
++(T 67) => MlyValue.TAG_ISINDEX(([])) | 
++(T 72) => MlyValue.TAG_LINK(([])) | 
++(T 73) => MlyValue.START_MAP(([])) | 
++(T 75) => MlyValue.START_MENU(([])) | 
++(T 77) => MlyValue.TAG_META(([("CONTENT", HTMLAttrs.NAME "")])) | 
++(T 78) => MlyValue.START_OL(([])) | 
++(T 80) => MlyValue.START_OPTION(([])) | 
++(T 82) => MlyValue.START_P(([])) | 
++(T 84) => MlyValue.TAG_PARAM(([("NAME", HTMLAttrs.NAME "")])) | 
++(T 85) => MlyValue.START_PRE(([])) | 
++(T 91) => MlyValue.START_SELECT(([("NAME", HTMLAttrs.NAME "")])) | 
++(T 105) => MlyValue.START_TABLE(([])) | 
++(T 107) => MlyValue.START_TD(([])) | 
++(T 109) => MlyValue.START_TEXTAREA((
++[
++    ("NAME", HTMLAttrs.NAME ""),
++    ("ROWS", HTMLAttrs.NAME "0"),
++    ("COLS", HTMLAttrs.NAME "0")
++  ]
++)) | 
++(T 111) => MlyValue.START_TH(([])) | 
++(T 115) => MlyValue.START_TR(([])) | 
++(T 121) => MlyValue.START_UL(([])) | 
++_ => MlyValue.VOID
++end
++val terms : term list = nil
++ $$ (T 124) $$ (T 123) $$ (T 122) $$ (T 120) $$ (T 119) $$ (T 118) $$ 
++(T 117) $$ (T 116) $$ (T 114) $$ (T 113) $$ (T 112) $$ (T 110) $$ (T 
++108) $$ (T 106) $$ (T 104) $$ (T 103) $$ (T 102) $$ (T 101) $$ (T 100)
++ $$ (T 99) $$ (T 98) $$ (T 97) $$ (T 96) $$ (T 95) $$ (T 94) $$ (T 93)
++ $$ (T 92) $$ (T 90) $$ (T 89) $$ (T 88) $$ (T 87) $$ (T 86) $$ (T 83)
++ $$ (T 81) $$ (T 79) $$ (T 76) $$ (T 74) $$ (T 71) $$ (T 69) $$ (T 68)
++ $$ (T 64) $$ (T 63) $$ (T 62) $$ (T 61) $$ (T 59) $$ (T 58) $$ (T 57)
++ $$ (T 55) $$ (T 53) $$ (T 51) $$ (T 49) $$ (T 47) $$ (T 45) $$ (T 43)
++ $$ (T 41) $$ (T 39) $$ (T 38) $$ (T 37) $$ (T 36) $$ (T 35) $$ (T 33)
++ $$ (T 31) $$ (T 29) $$ (T 28) $$ (T 27) $$ (T 26) $$ (T 25) $$ (T 24)
++ $$ (T 23) $$ (T 22) $$ (T 21) $$ (T 20) $$ (T 19) $$ (T 16) $$ (T 14)
++ $$ (T 13) $$ (T 12) $$ (T 11) $$ (T 9) $$ (T 8) $$ (T 6) $$ (T 4) $$ 
++(T 3) $$ (T 2) $$ (T 0)end
++structure Actions =
++struct 
 +type int = Int.int
- exception mlyAction of int
- local open Header in
- val actions = 
--fn (i392,defaultPos,stack,
++exception mlyAction of int
++local open Header in
++val actions = 
 +fn (i392:int,defaultPos,stack,
-     (ctx):arg) =>
- case (i392,stack)
- of  ( 0, ( ( _, ( _, _, EndHTML1right)) :: ( _, ( MlyValue.Body Body,
++    (ctx):arg) =>
++case (i392,stack)
++of  ( 0, ( ( _, ( _, _, EndHTML1right)) :: ( _, ( MlyValue.Body Body,
++ _, _)) :: ( _, ( MlyValue.Head Head, _, _)) :: ( _, ( 
++MlyValue.StartHTML StartHTML, StartHTML1left, _)) :: rest671)) => let
++ val  result = MlyValue.Document (
++HTML.HTML{version=StartHTML, head=Head, body=Body})
++ in ( LrTable.NT 0, ( result, StartHTML1left, EndHTML1right), rest671)
++
++end
++|  ( 1, ( rest671)) => let val  result = MlyValue.StartHTML (NONE)
++ in ( LrTable.NT 1, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 2, ( ( _, ( _, START_HTML1left, START_HTML1right)) :: rest671))
++ => let val  result = MlyValue.StartHTML (NONE)
++ in ( LrTable.NT 1, ( result, START_HTML1left, START_HTML1right), 
++rest671)
++end
++|  ( 3, ( rest671)) => let val  result = MlyValue.ntVOID ()
++ in ( LrTable.NT 2, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 4, ( ( _, ( _, END_HTML1left, END_HTML1right)) :: rest671)) =>
++ let val  result = MlyValue.ntVOID ()
++ in ( LrTable.NT 2, ( result, END_HTML1left, END_HTML1right), rest671)
++
++end
++|  ( 5, ( ( _, ( _, _, EndHEAD1right)) :: ( _, ( MlyValue.HeadContents
++ HeadContents, _, _)) :: ( _, ( _, StartHEAD1left, _)) :: rest671)) =>
++ let val  result = MlyValue.Head (HeadContents)
++ in ( LrTable.NT 3, ( result, StartHEAD1left, EndHEAD1right), rest671)
++
++end
++|  ( 6, ( rest671)) => let val  result = MlyValue.ntVOID ()
++ in ( LrTable.NT 4, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 7, ( ( _, ( _, START_HEAD1left, START_HEAD1right)) :: rest671))
++ => let val  result = MlyValue.ntVOID ()
++ in ( LrTable.NT 4, ( result, START_HEAD1left, START_HEAD1right), 
++rest671)
++end
++|  ( 8, ( rest671)) => let val  result = MlyValue.ntVOID ()
++ in ( LrTable.NT 5, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 9, ( ( _, ( _, END_HEAD1left, END_HEAD1right)) :: rest671)) =>
++ let val  result = MlyValue.ntVOID ()
++ in ( LrTable.NT 5, ( result, END_HEAD1left, END_HEAD1right), rest671)
++
++end
++|  ( 10, ( ( _, ( MlyValue.HeadElements HeadElements2, _, 
++HeadElements2right)) :: _ :: ( _, ( MlyValue.PCData PCData, _, _)) ::
++ _ :: ( _, ( MlyValue.HeadElements HeadElements1, HeadElements1left, _
++)) :: rest671)) => let val  result = MlyValue.HeadContents (
++HeadElements1 @ (HTML.Head_TITLE PCData :: HeadElements2))
++ in ( LrTable.NT 6, ( result, HeadElements1left, HeadElements2right), 
++rest671)
++end
++|  ( 11, ( rest671)) => let val  result = MlyValue.HeadElements ([])
++ in ( LrTable.NT 7, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 12, ( ( _, ( MlyValue.HeadElements HeadElements, _, 
++HeadElements1right)) :: ( _, ( MlyValue.HeadElement HeadElement, 
++HeadElement1left, _)) :: rest671)) => let val  result = 
++MlyValue.HeadElements (HeadElement :: HeadElements)
++ in ( LrTable.NT 7, ( result, HeadElement1left, HeadElements1right), 
++rest671)
++end
++|  ( 13, ( ( _, ( MlyValue.TAG_META TAG_META, (TAG_METAleft as 
++TAG_META1left), TAG_META1right)) :: rest671)) => let val  result = 
++MlyValue.HeadElement (HTMLAttrs.mkMETA(ctx TAG_METAleft, TAG_META))
++ in ( LrTable.NT 8, ( result, TAG_META1left, TAG_META1right), rest671)
++
++end
++|  ( 14, ( ( _, ( MlyValue.TAG_LINK TAG_LINK, (TAG_LINKleft as 
++TAG_LINK1left), TAG_LINK1right)) :: rest671)) => let val  result = 
++MlyValue.HeadElement (HTMLAttrs.mkLINK(ctx TAG_LINKleft, TAG_LINK))
++ in ( LrTable.NT 8, ( result, TAG_LINK1left, TAG_LINK1right), rest671)
++
++end
++|  ( 15, ( ( _, ( MlyValue.TAG_ISINDEX TAG_ISINDEX, (TAG_ISINDEXleft
++ as TAG_ISINDEX1left), TAG_ISINDEX1right)) :: rest671)) => let val  
++result = MlyValue.HeadElement (
++let val stuff =
++		    HTMLAttrs.mkISINDEX (ctx TAG_ISINDEXleft, TAG_ISINDEX)
++		  in HTML.Head_ISINDEX stuff end
++		
++)
++ in ( LrTable.NT 8, ( result, TAG_ISINDEX1left, TAG_ISINDEX1right), 
++rest671)
++end
++|  ( 16, ( ( _, ( MlyValue.TAG_BASE TAG_BASE, (TAG_BASEleft as 
++TAG_BASE1left), TAG_BASE1right)) :: rest671)) => let val  result = 
++MlyValue.HeadElement (HTMLAttrs.mkBASE(ctx TAG_BASEleft, TAG_BASE))
++ in ( LrTable.NT 8, ( result, TAG_BASE1left, TAG_BASE1right), rest671)
++
++end
++|  ( 17, ( ( _, ( _, _, END_STYLE1right)) :: ( _, ( MlyValue.PCData 
++PCData, _, _)) :: ( _, ( _, START_STYLE1left, _)) :: rest671)) => let
++ val  result = MlyValue.HeadElement (HTML.Head_STYLE(PCData))
++ in ( LrTable.NT 8, ( result, START_STYLE1left, END_STYLE1right), 
++rest671)
++end
++|  ( 18, ( ( _, ( _, _, END_SCRIPT1right)) :: ( _, ( MlyValue.PCData 
++PCData, _, _)) :: ( _, ( _, START_SCRIPT1left, _)) :: rest671)) => let
++ val  result = MlyValue.HeadElement (HTML.Head_SCRIPT(PCData))
++ in ( LrTable.NT 8, ( result, START_SCRIPT1left, END_SCRIPT1right), 
++rest671)
++end
++|  ( 19, ( ( _, ( _, _, EndBODY1right)) :: ( _, ( 
++MlyValue.BodyContent0 BodyContent0, BodyContent01left, _)) :: rest671)
++) => let val  result = MlyValue.Body (BodyContent0)
++ in ( LrTable.NT 9, ( result, BodyContent01left, EndBODY1right), 
++rest671)
++end
++|  ( 20, ( rest671)) => let val  result = MlyValue.ntVOID ()
++ in ( LrTable.NT 11, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 21, ( ( _, ( _, END_BODY1left, END_BODY1right)) :: rest671)) =>
++ let val  result = MlyValue.ntVOID ()
++ in ( LrTable.NT 11, ( result, END_BODY1left, END_BODY1right), rest671
++)
++end
++|  ( 22, ( ( _, ( MlyValue.BodyContent1 BodyContent1, 
++BodyContent11left, BodyContent11right)) :: rest671)) => let val  
++result = MlyValue.BodyContent (mkBlock BodyContent1)
++ in ( LrTable.NT 12, ( result, BodyContent11left, BodyContent11right),
++ rest671)
++end
++|  ( 23, ( ( _, ( MlyValue.BodyContent BodyContent, _, 
++BodyContent1right)) :: ( _, ( MlyValue.START_BODY START_BODY, (
++START_BODYleft as START_BODY1left), _)) :: rest671)) => let val  
++result = MlyValue.BodyContent0 (
++HTMLAttrs.mkBODY(ctx START_BODYleft, START_BODY, BodyContent))
++ in ( LrTable.NT 13, ( result, START_BODY1left, BodyContent1right), 
++rest671)
++end
++|  ( 24, ( ( _, ( MlyValue.BodyContent1 BodyContent1, _, 
++BodyContent11right)) :: ( _, ( MlyValue.TextWOScript TextWOScript, 
++TextWOScript1left, _)) :: rest671)) => let val  result = 
++MlyValue.BodyContent0 (mkBody(consText(TextWOScript, BodyContent1)))
++ in ( LrTable.NT 13, ( result, TextWOScript1left, BodyContent11right),
++ rest671)
++end
++|  ( 25, ( ( _, ( MlyValue.BodyContent1 BodyContent1, _, 
++BodyContent11right)) :: ( _, ( MlyValue.BodyElement BodyElement, 
++BodyElement1left, _)) :: rest671)) => let val  result = 
++MlyValue.BodyContent0 (mkBody(consBlock(BodyElement, BodyContent1)))
++ in ( LrTable.NT 13, ( result, BodyElement1left, BodyContent11right), 
++rest671)
++end
++|  ( 26, ( ( _, ( MlyValue.BodyContent1 BodyContent1, _, 
++BodyContent11right)) :: ( _, ( MlyValue.BlockWOIndex BlockWOIndex, 
++BlockWOIndex1left, _)) :: rest671)) => let val  result = 
++MlyValue.BodyContent0 (mkBody(consBlock(BlockWOIndex, BodyContent1)))
++ in ( LrTable.NT 13, ( result, BlockWOIndex1left, BodyContent11right),
++ rest671)
++end
++|  ( 27, ( ( _, ( MlyValue.BodyContent1 BodyContent1, _, 
++BodyContent11right)) :: _ :: ( _, ( MlyValue.Paragraph Paragraph, 
++Paragraph1left, _)) :: rest671)) => let val  result = 
++MlyValue.BodyContent0 (mkBody(consBlock(Paragraph, BodyContent1)))
++ in ( LrTable.NT 13, ( result, Paragraph1left, BodyContent11right), 
++rest671)
++end
++|  ( 28, ( ( _, ( MlyValue.BodyContent2 BodyContent2, _, 
++BodyContent21right)) :: ( _, ( MlyValue.Paragraph Paragraph, 
++Paragraph1left, _)) :: rest671)) => let val  result = 
++MlyValue.BodyContent0 (mkBody(consBlock(Paragraph, BodyContent2)))
++ in ( LrTable.NT 13, ( result, Paragraph1left, BodyContent21right), 
++rest671)
++end
++|  ( 29, ( rest671)) => let val  result = MlyValue.BodyContent1 ([])
++ in ( LrTable.NT 14, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 30, ( ( _, ( MlyValue.BodyContent1 BodyContent1, _, 
++BodyContent11right)) :: ( _, ( MlyValue.Text Text, Text1left, _)) :: 
++rest671)) => let val  result = MlyValue.BodyContent1 (
++consText(Text, BodyContent1))
++ in ( LrTable.NT 14, ( result, Text1left, BodyContent11right), rest671
++)
++end
++|  ( 31, ( ( _, ( MlyValue.BodyContent1 BodyContent1, _, 
++BodyContent11right)) :: ( _, ( MlyValue.BodyElement BodyElement, 
++BodyElement1left, _)) :: rest671)) => let val  result = 
++MlyValue.BodyContent1 (consBlock(BodyElement, BodyContent1))
++ in ( LrTable.NT 14, ( result, BodyElement1left, BodyContent11right), 
++rest671)
++end
++|  ( 32, ( ( _, ( MlyValue.BodyContent1 BodyContent1, _, 
++BodyContent11right)) :: ( _, ( MlyValue.Block Block, Block1left, _))
++ :: rest671)) => let val  result = MlyValue.BodyContent1 (
++consBlock(Block, BodyContent1))
++ in ( LrTable.NT 14, ( result, Block1left, BodyContent11right), 
++rest671)
++end
++|  ( 33, ( ( _, ( MlyValue.BodyContent1 BodyContent1, _, 
++BodyContent11right)) :: _ :: ( _, ( MlyValue.Paragraph Paragraph, 
++Paragraph1left, _)) :: rest671)) => let val  result = 
++MlyValue.BodyContent1 (consBlock(Paragraph, BodyContent1))
++ in ( LrTable.NT 14, ( result, Paragraph1left, BodyContent11right), 
++rest671)
++end
++|  ( 34, ( ( _, ( MlyValue.BodyContent2 BodyContent2, _, 
++BodyContent21right)) :: ( _, ( MlyValue.Paragraph Paragraph, 
++Paragraph1left, _)) :: rest671)) => let val  result = 
++MlyValue.BodyContent1 (consBlock(Paragraph, BodyContent2))
++ in ( LrTable.NT 14, ( result, Paragraph1left, BodyContent21right), 
++rest671)
++end
++|  ( 35, ( rest671)) => let val  result = MlyValue.BodyContent2 ([])
++ in ( LrTable.NT 15, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 36, ( ( _, ( MlyValue.BodyContent1 BodyContent1, _, 
++BodyContent11right)) :: ( _, ( MlyValue.BodyElement BodyElement, 
++BodyElement1left, _)) :: rest671)) => let val  result = 
++MlyValue.BodyContent2 (consBlock(BodyElement, BodyContent1))
++ in ( LrTable.NT 15, ( result, BodyElement1left, BodyContent11right), 
++rest671)
++end
++|  ( 37, ( ( _, ( MlyValue.BodyContent1 BodyContent1, _, 
++BodyContent11right)) :: ( _, ( MlyValue.Block Block, Block1left, _))
++ :: rest671)) => let val  result = MlyValue.BodyContent2 (
++consBlock(Block, BodyContent1))
++ in ( LrTable.NT 15, ( result, Block1left, BodyContent11right), 
++rest671)
++end
++|  ( 38, ( ( _, ( MlyValue.BodyContent1 BodyContent1, _, 
++BodyContent11right)) :: _ :: ( _, ( MlyValue.Paragraph Paragraph, 
++Paragraph1left, _)) :: rest671)) => let val  result = 
++MlyValue.BodyContent2 (consBlock(Paragraph, BodyContent1))
++ in ( LrTable.NT 15, ( result, Paragraph1left, BodyContent11right), 
++rest671)
++end
++|  ( 39, ( ( _, ( MlyValue.BodyContent2 BodyContent2, _, 
++BodyContent21right)) :: ( _, ( MlyValue.Paragraph Paragraph, 
++Paragraph1left, _)) :: rest671)) => let val  result = 
++MlyValue.BodyContent2 (consBlock(Paragraph, BodyContent2))
++ in ( LrTable.NT 15, ( result, Paragraph1left, BodyContent21right), 
++rest671)
++end
++|  ( 40, ( ( _, ( _, _, END_H11right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( MlyValue.START_H1 START_H1, (START_H1left
++ as START_H11left), _)) :: rest671)) => let val  result = 
++MlyValue.BodyElement (
++HTMLAttrs.mkHn(1, ctx START_H1left, START_H1, TextList))
++ in ( LrTable.NT 16, ( result, START_H11left, END_H11right), rest671)
++
++end
++|  ( 41, ( ( _, ( _, _, END_H21right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( MlyValue.START_H2 START_H2, (START_H2left
++ as START_H21left), _)) :: rest671)) => let val  result = 
++MlyValue.BodyElement (
++HTMLAttrs.mkHn(2, ctx START_H2left, START_H2, TextList))
++ in ( LrTable.NT 16, ( result, START_H21left, END_H21right), rest671)
++
++end
++|  ( 42, ( ( _, ( _, _, END_H31right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( MlyValue.START_H3 START_H3, (START_H3left
++ as START_H31left), _)) :: rest671)) => let val  result = 
++MlyValue.BodyElement (
++HTMLAttrs.mkHn(3, ctx START_H3left, START_H3, TextList))
++ in ( LrTable.NT 16, ( result, START_H31left, END_H31right), rest671)
++
++end
++|  ( 43, ( ( _, ( _, _, END_H41right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( MlyValue.START_H4 START_H4, (START_H4left
++ as START_H41left), _)) :: rest671)) => let val  result = 
++MlyValue.BodyElement (
++HTMLAttrs.mkHn(4, ctx START_H4left, START_H4, TextList))
++ in ( LrTable.NT 16, ( result, START_H41left, END_H41right), rest671)
++
++end
++|  ( 44, ( ( _, ( _, _, END_H51right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( MlyValue.START_H5 START_H5, (START_H5left
++ as START_H51left), _)) :: rest671)) => let val  result = 
++MlyValue.BodyElement (
++HTMLAttrs.mkHn(5, ctx START_H5left, START_H5, TextList))
++ in ( LrTable.NT 16, ( result, START_H51left, END_H51right), rest671)
++
++end
++|  ( 45, ( ( _, ( _, _, END_H61right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( MlyValue.START_H6 START_H6, (START_H6left
++ as START_H61left), _)) :: rest671)) => let val  result = 
++MlyValue.BodyElement (
++HTMLAttrs.mkHn(6, ctx START_H6left, START_H6, TextList))
++ in ( LrTable.NT 16, ( result, START_H61left, END_H61right), rest671)
++
++end
++|  ( 46, ( ( _, ( _, _, END_ADDRESS1right)) :: ( _, ( 
++MlyValue.AddressContent1 AddressContent1, _, _)) :: ( _, ( _, 
++START_ADDRESS1left, _)) :: rest671)) => let val  result = 
++MlyValue.BodyElement (HTML.ADDRESS(mkBlock AddressContent1))
++ in ( LrTable.NT 16, ( result, START_ADDRESS1left, END_ADDRESS1right),
++ rest671)
++end
++|  ( 47, ( rest671)) => let val  result = MlyValue.AddressContent1 ([]
++)
++ in ( LrTable.NT 17, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 48, ( ( _, ( MlyValue.AddressContent1 AddressContent1, _, 
++AddressContent11right)) :: ( _, ( MlyValue.Text Text, Text1left, _))
++ :: rest671)) => let val  result = MlyValue.AddressContent1 (
++consText(Text, AddressContent1))
++ in ( LrTable.NT 17, ( result, Text1left, AddressContent11right), 
++rest671)
++end
++|  ( 49, ( ( _, ( MlyValue.AddressContent1 AddressContent1, _, 
++AddressContent11right)) :: _ :: ( _, ( MlyValue.Paragraph Paragraph, 
++Paragraph1left, _)) :: rest671)) => let val  result = 
++MlyValue.AddressContent1 (consBlock(Paragraph, AddressContent1))
++ in ( LrTable.NT 17, ( result, Paragraph1left, AddressContent11right),
++ rest671)
++end
++|  ( 50, ( ( _, ( MlyValue.AddressContent2 AddressContent2, _, 
++AddressContent21right)) :: ( _, ( MlyValue.Paragraph Paragraph, 
++Paragraph1left, _)) :: rest671)) => let val  result = 
++MlyValue.AddressContent1 (consBlock(Paragraph, AddressContent2))
++ in ( LrTable.NT 17, ( result, Paragraph1left, AddressContent21right),
++ rest671)
++end
++|  ( 51, ( rest671)) => let val  result = MlyValue.AddressContent2 ([]
++)
++ in ( LrTable.NT 18, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 52, ( ( _, ( MlyValue.AddressContent1 AddressContent1, _, 
++AddressContent11right)) :: _ :: ( _, ( MlyValue.Paragraph Paragraph, 
++Paragraph1left, _)) :: rest671)) => let val  result = 
++MlyValue.AddressContent2 (consBlock(Paragraph, AddressContent1))
++ in ( LrTable.NT 18, ( result, Paragraph1left, AddressContent11right),
++ rest671)
++end
++|  ( 53, ( ( _, ( MlyValue.AddressContent2 AddressContent2, _, 
++AddressContent21right)) :: ( _, ( MlyValue.Paragraph Paragraph, 
++Paragraph1left, _)) :: rest671)) => let val  result = 
++MlyValue.AddressContent2 (consBlock(Paragraph, AddressContent2))
++ in ( LrTable.NT 18, ( result, Paragraph1left, AddressContent21right),
++ rest671)
++end
++|  ( 54, ( ( _, ( MlyValue.List List, List1left, List1right)) :: 
++rest671)) => let val  result = MlyValue.BlockWOIndex (List)
++ in ( LrTable.NT 19, ( result, List1left, List1right), rest671)
++end
++|  ( 55, ( ( _, ( MlyValue.Preformatted Preformatted, 
++Preformatted1left, Preformatted1right)) :: rest671)) => let val  
++result = MlyValue.BlockWOIndex (Preformatted)
++ in ( LrTable.NT 19, ( result, Preformatted1left, Preformatted1right),
++ rest671)
++end
++|  ( 56, ( ( _, ( _, _, END_DIV1right)) :: ( _, ( MlyValue.BodyContent
++ BodyContent, _, _)) :: ( _, ( MlyValue.START_DIV START_DIV, (
++START_DIVleft as START_DIV1left), _)) :: rest671)) => let val  result
++ = MlyValue.BlockWOIndex (
++HTMLAttrs.mkDIV(ctx START_DIVleft, START_DIV, BodyContent))
++ in ( LrTable.NT 19, ( result, START_DIV1left, END_DIV1right), rest671
++)
++end
++|  ( 57, ( ( _, ( _, _, END_CENTER1right)) :: ( _, ( 
++MlyValue.BodyContent BodyContent, _, _)) :: ( _, ( _, 
++START_CENTER1left, _)) :: rest671)) => let val  result = 
++MlyValue.BlockWOIndex (HTML.CENTER BodyContent)
++ in ( LrTable.NT 19, ( result, START_CENTER1left, END_CENTER1right), 
++rest671)
++end
++|  ( 58, ( ( _, ( _, _, END_BLOCKQUOTE1right)) :: ( _, ( 
++MlyValue.BodyContent BodyContent, _, _)) :: ( _, ( _, 
++START_BLOCKQUOTE1left, _)) :: rest671)) => let val  result = 
++MlyValue.BlockWOIndex (HTML.BLOCKQUOTE BodyContent)
++ in ( LrTable.NT 19, ( result, START_BLOCKQUOTE1left, 
++END_BLOCKQUOTE1right), rest671)
++end
++|  ( 59, ( ( _, ( _, _, END_FORM1right)) :: ( _, ( 
++MlyValue.BodyContent BodyContent, _, _)) :: ( _, ( MlyValue.START_FORM
++ START_FORM, (START_FORMleft as START_FORM1left), _)) :: rest671)) =>
++ let val  result = MlyValue.BlockWOIndex (
++HTMLAttrs.mkFORM(ctx START_FORMleft, START_FORM, BodyContent))
++ in ( LrTable.NT 19, ( result, START_FORM1left, END_FORM1right), 
++rest671)
++end
++|  ( 60, ( ( _, ( MlyValue.TAG_HR TAG_HR, (TAG_HRleft as TAG_HR1left),
++ TAG_HR1right)) :: rest671)) => let val  result = 
++MlyValue.BlockWOIndex (HTMLAttrs.mkHR(ctx TAG_HRleft, TAG_HR))
++ in ( LrTable.NT 19, ( result, TAG_HR1left, TAG_HR1right), rest671)
++
++end
++|  ( 61, ( ( _, ( _, _, END_TABLE1right)) :: ( _, ( 
++MlyValue.TableRowList TableRowList, _, _)) :: ( _, ( 
++MlyValue.optCaption optCaption, _, _)) :: ( _, ( MlyValue.START_TABLE 
++START_TABLE, (START_TABLEleft as START_TABLE1left), _)) :: rest671))
++ => let val  result = MlyValue.BlockWOIndex (
++HTMLAttrs.mkTABLE(
++		    ctx START_TABLEleft, START_TABLE,
++		    {caption = optCaption, body = TableRowList})
++		
++)
++ in ( LrTable.NT 19, ( result, START_TABLE1left, END_TABLE1right), 
++rest671)
++end
++|  ( 62, ( ( _, ( MlyValue.BlockWOIndex BlockWOIndex, 
++BlockWOIndex1left, BlockWOIndex1right)) :: rest671)) => let val  
++result = MlyValue.Block (BlockWOIndex)
++ in ( LrTable.NT 20, ( result, BlockWOIndex1left, BlockWOIndex1right),
++ rest671)
++end
++|  ( 63, ( ( _, ( MlyValue.TAG_ISINDEX TAG_ISINDEX, (TAG_ISINDEXleft
++ as TAG_ISINDEX1left), TAG_ISINDEX1right)) :: rest671)) => let val  
++result = MlyValue.Block (
++let val stuff =
++		    HTMLAttrs.mkISINDEX (ctx TAG_ISINDEXleft, TAG_ISINDEX)
++		  in HTML.ISINDEX stuff end
++		
++)
++ in ( LrTable.NT 20, ( result, TAG_ISINDEX1left, TAG_ISINDEX1right), 
++rest671)
++end
++|  ( 64, ( ( _, ( MlyValue.TextList TextList, _, TextList1right)) :: (
++ _, ( MlyValue.START_P START_P, (START_Pleft as START_P1left), _)) :: 
++rest671)) => let val  result = MlyValue.Paragraph (
++HTMLAttrs.mkP(ctx START_Pleft, START_P, TextList))
++ in ( LrTable.NT 21, ( result, START_P1left, TextList1right), rest671)
++
++end
++|  ( 65, ( ( _, ( _, _, END_UL1right)) :: ( _, ( MlyValue.ListItemList
++ ListItemList, _, _)) :: ( _, ( MlyValue.START_UL START_UL, (
++START_ULleft as START_UL1left), _)) :: rest671)) => let val  result = 
++MlyValue.List (
++HTMLAttrs.mkUL(ctx START_ULleft, START_UL, ListItemList))
++ in ( LrTable.NT 22, ( result, START_UL1left, END_UL1right), rest671)
++
++end
++|  ( 66, ( ( _, ( _, _, END_OL1right)) :: ( _, ( MlyValue.ListItemList
++ ListItemList, _, _)) :: ( _, ( MlyValue.START_OL START_OL, (
++START_OLleft as START_OL1left), _)) :: rest671)) => let val  result = 
++MlyValue.List (
++HTMLAttrs.mkOL(ctx START_OLleft, START_OL, ListItemList))
++ in ( LrTable.NT 22, ( result, START_OL1left, END_OL1right), rest671)
++
++end
++|  ( 67, ( ( _, ( _, _, END_DIR1right)) :: ( _, ( 
++MlyValue.ListItemList ListItemList, _, _)) :: ( _, ( 
++MlyValue.START_DIR START_DIR, (START_DIRleft as START_DIR1left), _))
++ :: rest671)) => let val  result = MlyValue.List (
++HTMLAttrs.mkDIR(ctx START_DIRleft, START_DIR, ListItemList))
++ in ( LrTable.NT 22, ( result, START_DIR1left, END_DIR1right), rest671
++)
++end
++|  ( 68, ( ( _, ( _, _, END_MENU1right)) :: ( _, ( 
++MlyValue.ListItemList ListItemList, _, _)) :: ( _, ( 
++MlyValue.START_MENU START_MENU, (START_MENUleft as START_MENU1left), _
++)) :: rest671)) => let val  result = MlyValue.List (
++HTMLAttrs.mkMENU(ctx START_MENUleft, START_MENU, ListItemList))
++ in ( LrTable.NT 22, ( result, START_MENU1left, END_MENU1right), 
++rest671)
++end
++|  ( 69, ( ( _, ( _, _, END_DL1right)) :: ( _, ( MlyValue.DLItemList 
++DLItemList, _, _)) :: ( _, ( MlyValue.START_DL START_DL, (START_DLleft
++ as START_DL1left), _)) :: rest671)) => let val  result = 
++MlyValue.List (
++HTMLAttrs.mkDL(
++		  ctx START_DLleft, START_DL,
++		  groupDefListContents DLItemList)
++		
++)
++ in ( LrTable.NT 22, ( result, START_DL1left, END_DL1right), rest671)
++
++end
++|  ( 70, ( rest671)) => let val  result = MlyValue.ListItemList ([])
++ in ( LrTable.NT 23, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 71, ( ( _, ( MlyValue.ListItemList ListItemList, _, 
++ListItemList1right)) :: ( _, ( MlyValue.ListItem ListItem, 
++ListItem1left, _)) :: rest671)) => let val  result = 
++MlyValue.ListItemList (ListItem :: ListItemList)
++ in ( LrTable.NT 23, ( result, ListItem1left, ListItemList1right), 
++rest671)
++end
++|  ( 72, ( ( _, ( _, _, EndLI1right)) :: ( _, ( MlyValue.Flow1 Flow1,
++ _, _)) :: ( _, ( MlyValue.START_LI START_LI, (START_LIleft as 
++START_LI1left), _)) :: rest671)) => let val  result = 
++MlyValue.ListItem (
++HTMLAttrs.mkLI(ctx START_LIleft, START_LI, mkBlock Flow1))
++ in ( LrTable.NT 24, ( result, START_LI1left, EndLI1right), rest671)
++
++end
++|  ( 73, ( rest671)) => let val  result = MlyValue.DLItemList ([])
++ in ( LrTable.NT 25, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 74, ( ( _, ( MlyValue.DLItemList DLItemList, _, DLItemList1right)
++) :: ( _, ( MlyValue.DLItem DLItem, DLItem1left, _)) :: rest671)) =>
++ let val  result = MlyValue.DLItemList (DLItem :: DLItemList)
++ in ( LrTable.NT 25, ( result, DLItem1left, DLItemList1right), rest671
++)
++end
++|  ( 75, ( ( _, ( _, _, EndDT1right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( _, START_DT1left, _)) :: rest671)) => let
++ val  result = MlyValue.DLItem (DL_tag TextList)
++ in ( LrTable.NT 26, ( result, START_DT1left, EndDT1right), rest671)
++
++end
++|  ( 76, ( ( _, ( _, _, EndDD1right)) :: ( _, ( MlyValue.Flow1 Flow1,
++ _, _)) :: ( _, ( _, START_DD1left, _)) :: rest671)) => let val  
++result = MlyValue.DLItem (DL_item(mkBlock Flow1))
++ in ( LrTable.NT 26, ( result, START_DD1left, EndDD1right), rest671)
++
++end
++|  ( 77, ( rest671)) => let val  result = MlyValue.Flow1 ([])
++ in ( LrTable.NT 27, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 78, ( ( _, ( MlyValue.Flow1 Flow1, _, Flow11right)) :: ( _, ( 
++MlyValue.Text Text, Text1left, _)) :: rest671)) => let val  result = 
++MlyValue.Flow1 (consText(Text, Flow1))
++ in ( LrTable.NT 27, ( result, Text1left, Flow11right), rest671)
++end
++|  ( 79, ( ( _, ( MlyValue.Flow1 Flow1, _, Flow11right)) :: ( _, ( 
++MlyValue.Block Block, Block1left, _)) :: rest671)) => let val  result
++ = MlyValue.Flow1 (consBlock(Block, Flow1))
++ in ( LrTable.NT 27, ( result, Block1left, Flow11right), rest671)
++end
++|  ( 80, ( ( _, ( MlyValue.Flow1 Flow1, _, Flow11right)) :: _ :: ( _, 
++( MlyValue.Paragraph Paragraph, Paragraph1left, _)) :: rest671)) =>
++ let val  result = MlyValue.Flow1 (consBlock(Paragraph, Flow1))
++ in ( LrTable.NT 27, ( result, Paragraph1left, Flow11right), rest671)
++
++end
++|  ( 81, ( ( _, ( MlyValue.Flow2 Flow2, _, Flow21right)) :: ( _, ( 
++MlyValue.Paragraph Paragraph, Paragraph1left, _)) :: rest671)) => let
++ val  result = MlyValue.Flow1 (consBlock(Paragraph, Flow2))
++ in ( LrTable.NT 27, ( result, Paragraph1left, Flow21right), rest671)
++
++end
++|  ( 82, ( rest671)) => let val  result = MlyValue.Flow2 ([])
++ in ( LrTable.NT 28, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 83, ( ( _, ( MlyValue.Flow1 Flow1, _, Flow11right)) :: ( _, ( 
++MlyValue.Block Block, Block1left, _)) :: rest671)) => let val  result
++ = MlyValue.Flow2 (consBlock(Block, Flow1))
++ in ( LrTable.NT 28, ( result, Block1left, Flow11right), rest671)
++end
++|  ( 84, ( ( _, ( MlyValue.Flow1 Flow1, _, Flow11right)) :: _ :: ( _, 
++( MlyValue.Paragraph Paragraph, Paragraph1left, _)) :: rest671)) =>
++ let val  result = MlyValue.Flow2 (consBlock(Paragraph, Flow1))
++ in ( LrTable.NT 28, ( result, Paragraph1left, Flow11right), rest671)
++
++end
++|  ( 85, ( ( _, ( MlyValue.Flow2 Flow2, _, Flow21right)) :: ( _, ( 
++MlyValue.Paragraph Paragraph, Paragraph1left, _)) :: rest671)) => let
++ val  result = MlyValue.Flow2 (consBlock(Paragraph, Flow2))
++ in ( LrTable.NT 28, ( result, Paragraph1left, Flow21right), rest671)
++
++end
++|  ( 86, ( rest671)) => let val  result = MlyValue.ntVOID ()
++ in ( LrTable.NT 29, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 87, ( ( _, ( _, END_LI1left, END_LI1right)) :: rest671)) => let
++ val  result = MlyValue.ntVOID ()
++ in ( LrTable.NT 29, ( result, END_LI1left, END_LI1right), rest671)
++
++end
++|  ( 88, ( rest671)) => let val  result = MlyValue.ntVOID ()
++ in ( LrTable.NT 30, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 89, ( ( _, ( _, END_DT1left, END_DT1right)) :: rest671)) => let
++ val  result = MlyValue.ntVOID ()
++ in ( LrTable.NT 30, ( result, END_DT1left, END_DT1right), rest671)
++
++end
++|  ( 90, ( rest671)) => let val  result = MlyValue.ntVOID ()
++ in ( LrTable.NT 31, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 91, ( ( _, ( _, END_DD1left, END_DD1right)) :: rest671)) => let
++ val  result = MlyValue.ntVOID ()
++ in ( LrTable.NT 31, ( result, END_DD1left, END_DD1right), rest671)
++
++end
++|  ( 92, ( ( _, ( _, _, END_PRE1right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( MlyValue.START_PRE START_PRE, (
++START_PREleft as START_PRE1left), _)) :: rest671)) => let val  result
++ = MlyValue.Preformatted (
++HTMLAttrs.mkPRE(ctx START_PREleft, START_PRE, TextList))
++ in ( LrTable.NT 32, ( result, START_PRE1left, END_PRE1right), rest671
++)
++end
++|  ( 93, ( rest671)) => let val  result = MlyValue.optCaption (NONE)
++ in ( LrTable.NT 33, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 94, ( ( _, ( _, _, END_CAPTION1right)) :: ( _, ( 
++MlyValue.TextList TextList, _, _)) :: ( _, ( MlyValue.START_CAPTION 
++START_CAPTION, (START_CAPTIONleft as START_CAPTION1left), _)) :: 
++rest671)) => let val  result = MlyValue.optCaption (
++SOME(HTMLAttrs.mkCAPTION(
++		  ctx START_CAPTIONleft, START_CAPTION, TextList))
++)
++ in ( LrTable.NT 33, ( result, START_CAPTION1left, END_CAPTION1right),
++ rest671)
++end
++|  ( 95, ( ( _, ( MlyValue.TableRow TableRow, TableRow1left, 
++TableRow1right)) :: rest671)) => let val  result = 
++MlyValue.TableRowList ([TableRow])
++ in ( LrTable.NT 34, ( result, TableRow1left, TableRow1right), rest671
++)
++end
++|  ( 96, ( ( _, ( MlyValue.TableRowList TableRowList, _, 
++TableRowList1right)) :: ( _, ( MlyValue.TableRow TableRow, 
++TableRow1left, _)) :: rest671)) => let val  result = 
++MlyValue.TableRowList (TableRow :: TableRowList)
++ in ( LrTable.NT 34, ( result, TableRow1left, TableRowList1right), 
++rest671)
++end
++|  ( 97, ( ( _, ( MlyValue.TableCellList TableCellList, _, 
++TableCellList1right)) :: ( _, ( MlyValue.START_TR START_TR, (
++START_TRleft as START_TR1left), _)) :: rest671)) => let val  result = 
++MlyValue.TableRow (
++HTMLAttrs.mkTR(ctx START_TRleft, START_TR, TableCellList))
++ in ( LrTable.NT 35, ( result, START_TR1left, TableCellList1right), 
++rest671)
++end
++|  ( 98, ( ( _, ( _, _, END_TR1right)) :: ( _, ( 
++MlyValue.TableCellList TableCellList, _, _)) :: ( _, ( 
++MlyValue.START_TR START_TR, (START_TRleft as START_TR1left), _)) :: 
++rest671)) => let val  result = MlyValue.TableRow (
++HTMLAttrs.mkTR(ctx START_TRleft, START_TR, TableCellList))
++ in ( LrTable.NT 35, ( result, START_TR1left, END_TR1right), rest671)
++
++end
++|  ( 99, ( ( _, ( MlyValue.TableCell TableCell, TableCell1left, 
++TableCell1right)) :: rest671)) => let val  result = 
++MlyValue.TableCellList ([TableCell])
++ in ( LrTable.NT 36, ( result, TableCell1left, TableCell1right), 
++rest671)
++end
++|  ( 100, ( ( _, ( MlyValue.TableCellList TableCellList, _, 
++TableCellList1right)) :: ( _, ( MlyValue.TableCell TableCell, 
++TableCell1left, _)) :: rest671)) => let val  result = 
++MlyValue.TableCellList (TableCell :: TableCellList)
++ in ( LrTable.NT 36, ( result, TableCell1left, TableCellList1right), 
++rest671)
++end
++|  ( 101, ( ( _, ( _, _, END_TH1right)) :: ( _, ( MlyValue.BodyContent
++ BodyContent, _, _)) :: ( _, ( MlyValue.START_TH START_TH, (
++START_THleft as START_TH1left), _)) :: rest671)) => let val  result = 
++MlyValue.TableCell (
++HTMLAttrs.mkTH(ctx START_THleft, START_TH, BodyContent))
++ in ( LrTable.NT 37, ( result, START_TH1left, END_TH1right), rest671)
++
++end
++|  ( 102, ( ( _, ( MlyValue.BodyContent BodyContent, _, 
++BodyContent1right)) :: ( _, ( MlyValue.START_TH START_TH, (
++START_THleft as START_TH1left), _)) :: rest671)) => let val  result = 
++MlyValue.TableCell (
++HTMLAttrs.mkTH(ctx START_THleft, START_TH, BodyContent))
++ in ( LrTable.NT 37, ( result, START_TH1left, BodyContent1right), 
++rest671)
++end
++|  ( 103, ( ( _, ( _, _, END_TD1right)) :: ( _, ( MlyValue.BodyContent
++ BodyContent, _, _)) :: ( _, ( MlyValue.START_TD START_TD, (
++START_TDleft as START_TD1left), _)) :: rest671)) => let val  result = 
++MlyValue.TableCell (
++HTMLAttrs.mkTD(ctx START_TDleft, START_TD, BodyContent))
++ in ( LrTable.NT 37, ( result, START_TD1left, END_TD1right), rest671)
++
++end
++|  ( 104, ( ( _, ( MlyValue.BodyContent BodyContent, _, 
++BodyContent1right)) :: ( _, ( MlyValue.START_TD START_TD, (
++START_TDleft as START_TD1left), _)) :: rest671)) => let val  result = 
++MlyValue.TableCell (
++HTMLAttrs.mkTD(ctx START_TDleft, START_TD, BodyContent))
++ in ( LrTable.NT 37, ( result, START_TD1left, BodyContent1right), 
++rest671)
++end
++|  ( 105, ( ( _, ( MlyValue.TextList' TextList', TextList'1left, 
++TextList'1right)) :: rest671)) => let val  result = MlyValue.TextList
++ (textList TextList')
++ in ( LrTable.NT 38, ( result, TextList'1left, TextList'1right), 
++rest671)
++end
++|  ( 106, ( rest671)) => let val  result = MlyValue.TextList' ([])
++ in ( LrTable.NT 39, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 107, ( ( _, ( MlyValue.TextList' TextList', _, TextList'1right))
++ :: ( _, ( MlyValue.Text Text, Text1left, _)) :: rest671)) => let val 
++ result = MlyValue.TextList' (Text :: TextList')
++ in ( LrTable.NT 39, ( result, Text1left, TextList'1right), rest671)
++
++end
++|  ( 108, ( ( _, ( MlyValue.PCDataElem PCDataElem, PCDataElem1left, 
++PCDataElem1right)) :: rest671)) => let val  result = 
++MlyValue.TextWOScript (HTML.PCDATA PCDataElem)
++ in ( LrTable.NT 40, ( result, PCDataElem1left, PCDataElem1right), 
++rest671)
++end
++|  ( 109, ( ( _, ( MlyValue.Font Font, Font1left, Font1right)) :: 
++rest671)) => let val  result = MlyValue.TextWOScript (Font)
++ in ( LrTable.NT 40, ( result, Font1left, Font1right), rest671)
++end
++|  ( 110, ( ( _, ( MlyValue.Phrase Phrase, Phrase1left, Phrase1right))
++ :: rest671)) => let val  result = MlyValue.TextWOScript (Phrase)
++ in ( LrTable.NT 40, ( result, Phrase1left, Phrase1right), rest671)
++
++end
++|  ( 111, ( ( _, ( MlyValue.Special Special, Special1left, 
++Special1right)) :: rest671)) => let val  result = 
++MlyValue.TextWOScript (Special)
++ in ( LrTable.NT 40, ( result, Special1left, Special1right), rest671)
++
++end
++|  ( 112, ( ( _, ( MlyValue.Form Form, Form1left, Form1right)) :: 
++rest671)) => let val  result = MlyValue.TextWOScript (Form)
++ in ( LrTable.NT 40, ( result, Form1left, Form1right), rest671)
++end
++|  ( 113, ( ( _, ( MlyValue.TextWOScript TextWOScript, 
++TextWOScript1left, TextWOScript1right)) :: rest671)) => let val  
++result = MlyValue.Text (TextWOScript)
++ in ( LrTable.NT 41, ( result, TextWOScript1left, TextWOScript1right),
++ rest671)
++end
++|  ( 114, ( ( _, ( _, _, END_SCRIPT1right)) :: ( _, ( MlyValue.PCData 
++PCData, _, _)) :: ( _, ( _, START_SCRIPT1left, _)) :: rest671)) => let
++ val  result = MlyValue.Text (HTML.SCRIPT PCData)
++ in ( LrTable.NT 41, ( result, START_SCRIPT1left, END_SCRIPT1right), 
++rest671)
++end
++|  ( 115, ( ( _, ( _, _, END_TT1right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( _, START_TT1left, _)) :: rest671)) => let
++ val  result = MlyValue.Font (HTML.TT(TextList))
++ in ( LrTable.NT 42, ( result, START_TT1left, END_TT1right), rest671)
++
++end
++|  ( 116, ( ( _, ( _, _, END_I1right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( _, START_I1left, _)) :: rest671)) => let
++ val  result = MlyValue.Font (HTML.I(TextList))
++ in ( LrTable.NT 42, ( result, START_I1left, END_I1right), rest671)
++
++end
++|  ( 117, ( ( _, ( _, _, END_B1right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( _, START_B1left, _)) :: rest671)) => let
++ val  result = MlyValue.Font (HTML.B(TextList))
++ in ( LrTable.NT 42, ( result, START_B1left, END_B1right), rest671)
++
++end
++|  ( 118, ( ( _, ( _, _, END_U1right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( _, START_U1left, _)) :: rest671)) => let
++ val  result = MlyValue.Font (HTML.U(TextList))
++ in ( LrTable.NT 42, ( result, START_U1left, END_U1right), rest671)
++
++end
++|  ( 119, ( ( _, ( _, _, END_STRIKE1right)) :: ( _, ( 
++MlyValue.TextList TextList, _, _)) :: ( _, ( _, START_STRIKE1left, _))
++ :: rest671)) => let val  result = MlyValue.Font (
++HTML.STRIKE(TextList))
++ in ( LrTable.NT 42, ( result, START_STRIKE1left, END_STRIKE1right), 
++rest671)
++end
++|  ( 120, ( ( _, ( _, _, END_BIG1right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( _, START_BIG1left, _)) :: rest671)) => let
++ val  result = MlyValue.Font (HTML.BIG(TextList))
++ in ( LrTable.NT 42, ( result, START_BIG1left, END_BIG1right), rest671
++)
++end
++|  ( 121, ( ( _, ( _, _, END_SMALL1right)) :: ( _, ( MlyValue.TextList
++ TextList, _, _)) :: ( _, ( _, START_SMALL1left, _)) :: rest671)) =>
++ let val  result = MlyValue.Font (HTML.SMALL(TextList))
++ in ( LrTable.NT 42, ( result, START_SMALL1left, END_SMALL1right), 
++rest671)
++end
++|  ( 122, ( ( _, ( _, _, END_SUB1right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( _, START_SUB1left, _)) :: rest671)) => let
++ val  result = MlyValue.Font (HTML.SUB(TextList))
++ in ( LrTable.NT 42, ( result, START_SUB1left, END_SUB1right), rest671
++)
++end
++|  ( 123, ( ( _, ( _, _, END_SUP1right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( _, START_SUP1left, _)) :: rest671)) => let
++ val  result = MlyValue.Font (HTML.SUP(TextList))
++ in ( LrTable.NT 42, ( result, START_SUP1left, END_SUP1right), rest671
++)
++end
++|  ( 124, ( ( _, ( _, _, END_EM1right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( _, START_EM1left, _)) :: rest671)) => let
++ val  result = MlyValue.Phrase (HTML.EM(TextList))
++ in ( LrTable.NT 43, ( result, START_EM1left, END_EM1right), rest671)
++
++end
++|  ( 125, ( ( _, ( _, _, END_STRONG1right)) :: ( _, ( 
++MlyValue.TextList TextList, _, _)) :: ( _, ( _, START_STRONG1left, _))
++ :: rest671)) => let val  result = MlyValue.Phrase (
++HTML.STRONG(TextList))
++ in ( LrTable.NT 43, ( result, START_STRONG1left, END_STRONG1right), 
++rest671)
++end
++|  ( 126, ( ( _, ( _, _, END_CODE1right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( _, START_CODE1left, _)) :: rest671)) => let
++ val  result = MlyValue.Phrase (HTML.CODE(TextList))
++ in ( LrTable.NT 43, ( result, START_CODE1left, END_CODE1right), 
++rest671)
++end
++|  ( 127, ( ( _, ( _, _, END_DFN1right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( _, START_DFN1left, _)) :: rest671)) => let
++ val  result = MlyValue.Phrase (HTML.DFN(TextList))
++ in ( LrTable.NT 43, ( result, START_DFN1left, END_DFN1right), rest671
++)
++end
++|  ( 128, ( ( _, ( _, _, END_SAMP1right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( _, START_SAMP1left, _)) :: rest671)) => let
++ val  result = MlyValue.Phrase (HTML.SAMP(TextList))
++ in ( LrTable.NT 43, ( result, START_SAMP1left, END_SAMP1right), 
++rest671)
++end
++|  ( 129, ( ( _, ( _, _, END_KBD1right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( _, START_KBD1left, _)) :: rest671)) => let
++ val  result = MlyValue.Phrase (HTML.KBD(TextList))
++ in ( LrTable.NT 43, ( result, START_KBD1left, END_KBD1right), rest671
++)
++end
++|  ( 130, ( ( _, ( _, _, END_VAR1right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( _, START_VAR1left, _)) :: rest671)) => let
++ val  result = MlyValue.Phrase (HTML.VAR(TextList))
++ in ( LrTable.NT 43, ( result, START_VAR1left, END_VAR1right), rest671
++)
++end
++|  ( 131, ( ( _, ( _, _, END_CITE1right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( _, START_CITE1left, _)) :: rest671)) => let
++ val  result = MlyValue.Phrase (HTML.CITE(TextList))
++ in ( LrTable.NT 43, ( result, START_CITE1left, END_CITE1right), 
++rest671)
++end
++|  ( 132, ( ( _, ( _, _, END_A1right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( MlyValue.START_A START_A, (START_Aleft as 
++START_A1left), _)) :: rest671)) => let val  result = MlyValue.Special
++ (HTMLAttrs.mkA(ctx START_Aleft, START_A, TextList))
++ in ( LrTable.NT 44, ( result, START_A1left, END_A1right), rest671)
++
++end
++|  ( 133, ( ( _, ( MlyValue.TAG_IMG TAG_IMG, (TAG_IMGleft as 
++TAG_IMG1left), TAG_IMG1right)) :: rest671)) => let val  result = 
++MlyValue.Special (HTMLAttrs.mkIMG(ctx TAG_IMGleft, TAG_IMG))
++ in ( LrTable.NT 44, ( result, TAG_IMG1left, TAG_IMG1right), rest671)
++
++end
++|  ( 134, ( ( _, ( _, _, END_APPLET1right)) :: ( _, ( 
++MlyValue.TextList TextList, _, _)) :: ( _, ( MlyValue.START_APPLET 
++START_APPLET, (START_APPLETleft as START_APPLET1left), _)) :: rest671)
++) => let val  result = MlyValue.Special (
++HTMLAttrs.mkAPPLET(ctx START_APPLETleft, START_APPLET, TextList))
++ in ( LrTable.NT 44, ( result, START_APPLET1left, END_APPLET1right), 
++rest671)
++end
++|  ( 135, ( ( _, ( _, _, END_FONT1right)) :: ( _, ( MlyValue.TextList 
++TextList, _, _)) :: ( _, ( MlyValue.START_FONT START_FONT, (
++START_FONTleft as START_FONT1left), _)) :: rest671)) => let val  
++result = MlyValue.Special (
++HTMLAttrs.mkFONT(ctx START_FONTleft, START_FONT, TextList))
++ in ( LrTable.NT 44, ( result, START_FONT1left, END_FONT1right), 
++rest671)
++end
++|  ( 136, ( ( _, ( _, _, END_BASEFONT1right)) :: ( _, ( 
++MlyValue.TextList TextList, _, _)) :: ( _, ( MlyValue.START_BASEFONT 
++START_BASEFONT, (START_BASEFONTleft as START_BASEFONT1left), _)) :: 
++rest671)) => let val  result = MlyValue.Special (
++HTMLAttrs.mkBASEFONT(
++		  ctx START_BASEFONTleft, START_BASEFONT, TextList)
++		
++)
++ in ( LrTable.NT 44, ( result, START_BASEFONT1left, END_BASEFONT1right
++), rest671)
++end
++|  ( 137, ( ( _, ( MlyValue.TAG_BR TAG_BR, (TAG_BRleft as TAG_BR1left)
++, TAG_BR1right)) :: rest671)) => let val  result = MlyValue.Special (
++HTMLAttrs.mkBR(ctx TAG_BRleft, TAG_BR))
++ in ( LrTable.NT 44, ( result, TAG_BR1left, TAG_BR1right), rest671)
++
++end
++|  ( 138, ( ( _, ( _, _, END_MAP1right)) :: ( _, ( MlyValue.AreaList 
++AreaList, _, _)) :: ( _, ( MlyValue.START_MAP START_MAP, (
++START_MAPleft as START_MAP1left), _)) :: rest671)) => let val  result
++ = MlyValue.Special (
++HTMLAttrs.mkMAP(ctx START_MAPleft, START_MAP, AreaList))
++ in ( LrTable.NT 44, ( result, START_MAP1left, END_MAP1right), rest671
++)
++end
++|  ( 139, ( ( _, ( MlyValue.TAG_PARAM TAG_PARAM, (TAG_PARAMleft as 
++TAG_PARAM1left), TAG_PARAM1right)) :: rest671)) => let val  result = 
++MlyValue.Special (HTMLAttrs.mkPARAM(ctx TAG_PARAMleft, TAG_PARAM))
++ in ( LrTable.NT 44, ( result, TAG_PARAM1left, TAG_PARAM1right), 
++rest671)
++end
++|  ( 140, ( rest671)) => let val  result = MlyValue.AreaList ([])
++ in ( LrTable.NT 45, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 141, ( ( _, ( MlyValue.AreaList AreaList, _, AreaList1right)) :: 
++( _, ( MlyValue.TAG_AREA TAG_AREA, (TAG_AREAleft as TAG_AREA1left), _)
++) :: rest671)) => let val  result = MlyValue.AreaList (
++HTMLAttrs.mkAREA(ctx TAG_AREAleft, TAG_AREA) :: AreaList)
++ in ( LrTable.NT 45, ( result, TAG_AREA1left, AreaList1right), rest671
++)
++end
++|  ( 142, ( ( _, ( MlyValue.TAG_INPUT TAG_INPUT, (TAG_INPUTleft as 
++TAG_INPUT1left), TAG_INPUT1right)) :: rest671)) => let val  result = 
++MlyValue.Form (HTMLAttrs.mkINPUT(ctx TAG_INPUTleft, TAG_INPUT))
++ in ( LrTable.NT 46, ( result, TAG_INPUT1left, TAG_INPUT1right), 
++rest671)
++end
++|  ( 143, ( ( _, ( _, _, END_SELECT1right)) :: ( _, ( 
++MlyValue.OptionList OptionList, _, _)) :: ( _, ( MlyValue.START_SELECT
++ START_SELECT, (START_SELECTleft as START_SELECT1left), _)) :: rest671
++)) => let val  result = MlyValue.Form (
++HTMLAttrs.mkSELECT(ctx START_SELECTleft, START_SELECT, OptionList))
++ in ( LrTable.NT 46, ( result, START_SELECT1left, END_SELECT1right), 
++rest671)
++end
++|  ( 144, ( ( _, ( _, _, END_TEXTAREA1right)) :: ( _, ( 
++MlyValue.PCData PCData, _, _)) :: ( _, ( MlyValue.START_TEXTAREA 
++START_TEXTAREA, (START_TEXTAREAleft as START_TEXTAREA1left), _)) :: 
++rest671)) => let val  result = MlyValue.Form (
++HTMLAttrs.mkTEXTAREA(
++		  ctx START_TEXTAREAleft, START_TEXTAREA,
++		  PCData)
++		
++)
++ in ( LrTable.NT 46, ( result, START_TEXTAREA1left, END_TEXTAREA1right
++), rest671)
++end
++|  ( 145, ( rest671)) => let val  result = MlyValue.OptionList ([])
++ in ( LrTable.NT 47, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 146, ( ( _, ( MlyValue.OptionList OptionList, _, OptionList1right
++)) :: _ :: ( _, ( MlyValue.PCData PCData, _, _)) :: ( _, ( 
++MlyValue.START_OPTION START_OPTION, (START_OPTIONleft as 
++START_OPTION1left), _)) :: rest671)) => let val  result = 
++MlyValue.OptionList (
++HTMLAttrs.mkOPTION(ctx START_OPTIONleft, START_OPTION, PCData)
++		  :: OptionList
++		
++)
++ in ( LrTable.NT 47, ( result, START_OPTION1left, OptionList1right), 
++rest671)
++end
++|  ( 147, ( rest671)) => let val  result = MlyValue.ntVOID ()
++ in ( LrTable.NT 48, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 148, ( ( _, ( _, END_OPTION1left, END_OPTION1right)) :: rest671))
++ => let val  result = MlyValue.ntVOID ()
++ in ( LrTable.NT 48, ( result, END_OPTION1left, END_OPTION1right), 
++rest671)
++end
++|  ( 149, ( ( _, ( MlyValue.PCDataList PCDataList, PCDataList1left, 
++PCDataList1right)) :: rest671)) => let val  result = MlyValue.PCData (
++concat PCDataList)
++ in ( LrTable.NT 49, ( result, PCDataList1left, PCDataList1right), 
++rest671)
++end
++|  ( 150, ( rest671)) => let val  result = MlyValue.PCDataList ([])
++ in ( LrTable.NT 50, ( result, defaultPos, defaultPos), rest671)
++end
++|  ( 151, ( ( _, ( MlyValue.PCDataList PCDataList, _, PCDataList1right
++)) :: ( _, ( MlyValue.PCDataElem PCDataElem, PCDataElem1left, _)) :: 
++rest671)) => let val  result = MlyValue.PCDataList (
++PCDataElem :: PCDataList)
++ in ( LrTable.NT 50, ( result, PCDataElem1left, PCDataList1right), 
++rest671)
++end
++|  ( 152, ( ( _, ( MlyValue.PCDATA PCDATA, PCDATA1left, PCDATA1right))
++ :: rest671)) => let val  result = MlyValue.PCDataElem (PCDATA)
++ in ( LrTable.NT 51, ( result, PCDATA1left, PCDATA1right), rest671)
++
++end
++|  ( 153, ( ( _, ( MlyValue.CHAR_REF CHAR_REF, CHAR_REF1left, 
++CHAR_REF1right)) :: rest671)) => let val  result = MlyValue.PCDataElem
++ (CHAR_REF)
++ in ( LrTable.NT 51, ( result, CHAR_REF1left, CHAR_REF1right), rest671
++)
++end
++|  ( 154, ( ( _, ( MlyValue.ENTITY_REF ENTITY_REF, ENTITY_REF1left, 
++ENTITY_REF1right)) :: rest671)) => let val  result = 
++MlyValue.PCDataElem (ENTITY_REF)
++ in ( LrTable.NT 51, ( result, ENTITY_REF1left, ENTITY_REF1right), 
++rest671)
++end
++| _ => raise (mlyAction i392)
++end
++val void = MlyValue.VOID
++val extract = fn a => (fn MlyValue.Document x => x
++| _ => let exception ParseInternal
++	in raise ParseInternal end) a 
++end
++end
++structure Tokens : HTML_TOKENS =
++struct
++type svalue = ParserData.svalue
++type ('a,'b) token = ('a,'b) Token.token
++fun EOF (p1,p2) = Token.TOKEN (ParserData.LrTable.T 0,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_A (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 1,(
++ParserData.MlyValue.START_A i,p1,p2))
++fun END_A (p1,p2) = Token.TOKEN (ParserData.LrTable.T 2,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_ADDRESS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 3,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_ADDRESS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 4,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_APPLET (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 5,(
++ParserData.MlyValue.START_APPLET i,p1,p2))
++fun END_APPLET (p1,p2) = Token.TOKEN (ParserData.LrTable.T 6,(
++ParserData.MlyValue.VOID,p1,p2))
++fun TAG_AREA (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 7,(
++ParserData.MlyValue.TAG_AREA i,p1,p2))
++fun START_B (p1,p2) = Token.TOKEN (ParserData.LrTable.T 8,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_B (p1,p2) = Token.TOKEN (ParserData.LrTable.T 9,(
++ParserData.MlyValue.VOID,p1,p2))
++fun TAG_BASE (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 10,(
++ParserData.MlyValue.TAG_BASE i,p1,p2))
++fun START_BIG (p1,p2) = Token.TOKEN (ParserData.LrTable.T 11,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_BIG (p1,p2) = Token.TOKEN (ParserData.LrTable.T 12,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_BLOCKQUOTE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 13,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_BLOCKQUOTE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 14,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_BODY (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 15,(
++ParserData.MlyValue.START_BODY i,p1,p2))
++fun END_BODY (p1,p2) = Token.TOKEN (ParserData.LrTable.T 16,(
++ParserData.MlyValue.VOID,p1,p2))
++fun TAG_BR (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 17,(
++ParserData.MlyValue.TAG_BR i,p1,p2))
++fun START_CAPTION (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 18,(
++ParserData.MlyValue.START_CAPTION i,p1,p2))
++fun END_CAPTION (p1,p2) = Token.TOKEN (ParserData.LrTable.T 19,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_CENTER (p1,p2) = Token.TOKEN (ParserData.LrTable.T 20,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_CENTER (p1,p2) = Token.TOKEN (ParserData.LrTable.T 21,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_CITE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 22,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_CITE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 23,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_CODE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 24,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_CODE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 25,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_DD (p1,p2) = Token.TOKEN (ParserData.LrTable.T 26,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_DD (p1,p2) = Token.TOKEN (ParserData.LrTable.T 27,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_DFN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 28,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_DFN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 29,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_DIR (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 30,(
++ParserData.MlyValue.START_DIR i,p1,p2))
++fun END_DIR (p1,p2) = Token.TOKEN (ParserData.LrTable.T 31,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_DIV (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 32,(
++ParserData.MlyValue.START_DIV i,p1,p2))
++fun END_DIV (p1,p2) = Token.TOKEN (ParserData.LrTable.T 33,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_DL (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 34,(
++ParserData.MlyValue.START_DL i,p1,p2))
++fun END_DL (p1,p2) = Token.TOKEN (ParserData.LrTable.T 35,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_DT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 36,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_DT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 37,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_EM (p1,p2) = Token.TOKEN (ParserData.LrTable.T 38,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_EM (p1,p2) = Token.TOKEN (ParserData.LrTable.T 39,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_FONT (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 40,(
++ParserData.MlyValue.START_FONT i,p1,p2))
++fun END_FONT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 41,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_BASEFONT (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 42,(
++ParserData.MlyValue.START_BASEFONT i,p1,p2))
++fun END_BASEFONT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 43,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_FORM (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 44,(
++ParserData.MlyValue.START_FORM i,p1,p2))
++fun END_FORM (p1,p2) = Token.TOKEN (ParserData.LrTable.T 45,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_H1 (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 46,(
++ParserData.MlyValue.START_H1 i,p1,p2))
++fun END_H1 (p1,p2) = Token.TOKEN (ParserData.LrTable.T 47,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_H2 (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 48,(
++ParserData.MlyValue.START_H2 i,p1,p2))
++fun END_H2 (p1,p2) = Token.TOKEN (ParserData.LrTable.T 49,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_H3 (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 50,(
++ParserData.MlyValue.START_H3 i,p1,p2))
++fun END_H3 (p1,p2) = Token.TOKEN (ParserData.LrTable.T 51,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_H4 (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 52,(
++ParserData.MlyValue.START_H4 i,p1,p2))
++fun END_H4 (p1,p2) = Token.TOKEN (ParserData.LrTable.T 53,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_H5 (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 54,(
++ParserData.MlyValue.START_H5 i,p1,p2))
++fun END_H5 (p1,p2) = Token.TOKEN (ParserData.LrTable.T 55,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_H6 (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 56,(
++ParserData.MlyValue.START_H6 i,p1,p2))
++fun END_H6 (p1,p2) = Token.TOKEN (ParserData.LrTable.T 57,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_HEAD (p1,p2) = Token.TOKEN (ParserData.LrTable.T 58,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_HEAD (p1,p2) = Token.TOKEN (ParserData.LrTable.T 59,(
++ParserData.MlyValue.VOID,p1,p2))
++fun TAG_HR (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 60,(
++ParserData.MlyValue.TAG_HR i,p1,p2))
++fun START_HTML (p1,p2) = Token.TOKEN (ParserData.LrTable.T 61,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_HTML (p1,p2) = Token.TOKEN (ParserData.LrTable.T 62,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_I (p1,p2) = Token.TOKEN (ParserData.LrTable.T 63,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_I (p1,p2) = Token.TOKEN (ParserData.LrTable.T 64,(
++ParserData.MlyValue.VOID,p1,p2))
++fun TAG_IMG (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 65,(
++ParserData.MlyValue.TAG_IMG i,p1,p2))
++fun TAG_INPUT (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 66,(
++ParserData.MlyValue.TAG_INPUT i,p1,p2))
++fun TAG_ISINDEX (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 67,(
++ParserData.MlyValue.TAG_ISINDEX i,p1,p2))
++fun START_KBD (p1,p2) = Token.TOKEN (ParserData.LrTable.T 68,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_KBD (p1,p2) = Token.TOKEN (ParserData.LrTable.T 69,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_LI (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 70,(
++ParserData.MlyValue.START_LI i,p1,p2))
++fun END_LI (p1,p2) = Token.TOKEN (ParserData.LrTable.T 71,(
++ParserData.MlyValue.VOID,p1,p2))
++fun TAG_LINK (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 72,(
++ParserData.MlyValue.TAG_LINK i,p1,p2))
++fun START_MAP (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 73,(
++ParserData.MlyValue.START_MAP i,p1,p2))
++fun END_MAP (p1,p2) = Token.TOKEN (ParserData.LrTable.T 74,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_MENU (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 75,(
++ParserData.MlyValue.START_MENU i,p1,p2))
++fun END_MENU (p1,p2) = Token.TOKEN (ParserData.LrTable.T 76,(
++ParserData.MlyValue.VOID,p1,p2))
++fun TAG_META (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 77,(
++ParserData.MlyValue.TAG_META i,p1,p2))
++fun START_OL (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 78,(
++ParserData.MlyValue.START_OL i,p1,p2))
++fun END_OL (p1,p2) = Token.TOKEN (ParserData.LrTable.T 79,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_OPTION (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 80,(
++ParserData.MlyValue.START_OPTION i,p1,p2))
++fun END_OPTION (p1,p2) = Token.TOKEN (ParserData.LrTable.T 81,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_P (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 82,(
++ParserData.MlyValue.START_P i,p1,p2))
++fun END_P (p1,p2) = Token.TOKEN (ParserData.LrTable.T 83,(
++ParserData.MlyValue.VOID,p1,p2))
++fun TAG_PARAM (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 84,(
++ParserData.MlyValue.TAG_PARAM i,p1,p2))
++fun START_PRE (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 85,(
++ParserData.MlyValue.START_PRE i,p1,p2))
++fun END_PRE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 86,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_SAMP (p1,p2) = Token.TOKEN (ParserData.LrTable.T 87,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_SAMP (p1,p2) = Token.TOKEN (ParserData.LrTable.T 88,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_SCRIPT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 89,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_SCRIPT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 90,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_SELECT (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 91,(
++ParserData.MlyValue.START_SELECT i,p1,p2))
++fun END_SELECT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 92,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_SMALL (p1,p2) = Token.TOKEN (ParserData.LrTable.T 93,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_SMALL (p1,p2) = Token.TOKEN (ParserData.LrTable.T 94,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_STRIKE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 95,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_STRIKE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 96,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_STRONG (p1,p2) = Token.TOKEN (ParserData.LrTable.T 97,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_STRONG (p1,p2) = Token.TOKEN (ParserData.LrTable.T 98,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_STYLE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 99,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_STYLE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 100,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_SUB (p1,p2) = Token.TOKEN (ParserData.LrTable.T 101,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_SUB (p1,p2) = Token.TOKEN (ParserData.LrTable.T 102,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_SUP (p1,p2) = Token.TOKEN (ParserData.LrTable.T 103,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_SUP (p1,p2) = Token.TOKEN (ParserData.LrTable.T 104,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_TABLE (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 105,(
++ParserData.MlyValue.START_TABLE i,p1,p2))
++fun END_TABLE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 106,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_TD (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 107,(
++ParserData.MlyValue.START_TD i,p1,p2))
++fun END_TD (p1,p2) = Token.TOKEN (ParserData.LrTable.T 108,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_TEXTAREA (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 109,(
++ParserData.MlyValue.START_TEXTAREA i,p1,p2))
++fun END_TEXTAREA (p1,p2) = Token.TOKEN (ParserData.LrTable.T 110,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_TH (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 111,(
++ParserData.MlyValue.START_TH i,p1,p2))
++fun END_TH (p1,p2) = Token.TOKEN (ParserData.LrTable.T 112,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_TITLE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 113,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_TITLE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 114,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_TR (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 115,(
++ParserData.MlyValue.START_TR i,p1,p2))
++fun END_TR (p1,p2) = Token.TOKEN (ParserData.LrTable.T 116,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_TT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 117,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_TT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 118,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_U (p1,p2) = Token.TOKEN (ParserData.LrTable.T 119,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_U (p1,p2) = Token.TOKEN (ParserData.LrTable.T 120,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_UL (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 121,(
++ParserData.MlyValue.START_UL i,p1,p2))
++fun END_UL (p1,p2) = Token.TOKEN (ParserData.LrTable.T 122,(
++ParserData.MlyValue.VOID,p1,p2))
++fun START_VAR (p1,p2) = Token.TOKEN (ParserData.LrTable.T 123,(
++ParserData.MlyValue.VOID,p1,p2))
++fun END_VAR (p1,p2) = Token.TOKEN (ParserData.LrTable.T 124,(
++ParserData.MlyValue.VOID,p1,p2))
++fun PCDATA (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 125,(
++ParserData.MlyValue.PCDATA i,p1,p2))
++fun CHAR_REF (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 126,(
++ParserData.MlyValue.CHAR_REF i,p1,p2))
++fun ENTITY_REF (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 127,(
++ParserData.MlyValue.ENTITY_REF i,p1,p2))
++end
++end
 diff -Naur smlnj-lib/HTML/html-lex.sml smlnj-lib-mlton/HTML/html-lex.sml
---- smlnj-lib/HTML/html-lex.sml	2005-11-21 11:37:24.000000000 -0500
-+++ smlnj-lib-mlton/HTML/html-lex.sml	2005-11-21 11:37:24.000000000 -0500
-@@ -1,3 +1,4 @@
+--- smlnj-lib/HTML/html-lex.sml	1969-12-31 19:00:00.000000000 -0500
++++ smlnj-lib-mlton/HTML/html-lex.sml	2006-05-02 23:00:43.000000000 -0400
+@@ -0,0 +1,672 @@
 +type int = Int.int
- functor HTMLLexFn (
-   structure Tokens : HTML_TOKENS
-   structure Err : HTML_ERROR
-@@ -484,7 +485,7 @@
- fun f x = x 
- val s = map f (rev (tl (rev s))) 
- exception LexHackingError 
--fun look ((j,x)::r, i: int) = if i = j then x else look(r, i) 
++functor HTMLLexFn (
++  structure Tokens : HTML_TOKENS
++  structure Err : HTML_ERROR
++  structure HTMLAttrs : HTML_ATTRS)=
++   struct
++    structure UserDeclarations =
++      struct
++(* html-lex
++ *
++ * COPYRIGHT (c) 1995 AT&T Bell Laboratories.
++ * COPYRIGHT (c) 1996 AT&T Research.
++ *
++ * A scanner for HTML.
++ *
++ * TODO:
++ *    Recognize the DOCTYPE element
++ *	<!DOCTYPE HTML PUBLIC "...">
++ *    Clean-up the scanning of start tags (do we need Err?).
++ *    Whitespace in PRE elements should be preserved, but how?
++ *)
++
++structure T = Tokens
++structure Elems = HTMLElementsFn (
++  structure Tokens = Tokens
++  structure Err = Err
++  structure HTMLAttrs = HTMLAttrs)
++
++type pos = int
++type svalue = T.svalue
++type arg = (((string * int * int) -> unit) * string option)
++type ('a, 'b) token = ('a, 'b) T.token
++type lexresult= (svalue, pos) token
++
++fun eof _ = Tokens.EOF(0, 0)
++
++(* a buffer for collecting a string piecewise *)
++val buffer = ref ([] : string list)
++fun addStr s = (buffer := s :: !buffer)
++fun getStr () = (String.concat(List.rev(! buffer)) before (buffer := []))
++
++end (* end of user routines *)
++exception LexError (* raised if illegal leaf action tried *)
++structure Internal =
++	struct
++
++datatype yyfinstate = N of int
++type statedata = {fin : yyfinstate list, trans: string}
++(* transition & final state table *)
++val tab = let
++val s = [ 
++ (0, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
++),
++ (1, 
++"\009\009\009\009\009\009\009\009\009\028\029\009\009\009\009\009\
++\\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\
++\\028\009\009\009\009\009\020\009\009\009\009\009\009\009\009\009\
++\\009\009\009\009\009\009\009\009\009\009\009\009\011\009\009\009\
++\\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\
++\\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\
++\\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\
++\\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\
++\\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\
++\\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\
++\\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\
++\\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\
++\\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\
++\\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\
++\\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\
++\\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009"
++),
++ (3, 
++"\030\030\030\030\030\030\030\030\030\030\033\030\030\030\030\030\
++\\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\
++\\030\030\030\030\030\030\030\030\030\030\030\030\030\031\030\030\
++\\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\
++\\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\
++\\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\
++\\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\
++\\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\
++\\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\
++\\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\
++\\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\
++\\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\
++\\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\
++\\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\
++\\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\
++\\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030"
++),
++ (5, 
++"\034\034\034\034\034\034\034\034\034\038\039\034\034\034\034\034\
++\\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\
++\\038\034\034\034\034\034\034\034\034\034\034\034\034\036\034\034\
++\\034\034\034\034\034\034\034\034\034\034\034\034\034\034\035\034\
++\\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\
++\\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\
++\\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\
++\\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\
++\\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\
++\\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\
++\\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\
++\\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\
++\\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\
++\\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\
++\\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\
++\\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034\034"
++),
++ (7, 
++"\040\040\040\040\040\040\040\040\040\051\053\040\040\040\040\040\
++\\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\
++\\051\040\048\040\040\040\040\045\040\040\040\040\040\041\041\040\
++\\041\041\041\041\041\041\041\041\041\041\040\040\040\044\043\040\
++\\040\041\041\041\041\041\041\041\041\041\041\041\041\041\041\041\
++\\041\041\041\041\041\041\041\041\041\041\041\040\040\040\040\040\
++\\040\041\041\041\041\041\041\041\041\041\041\041\041\041\041\041\
++\\041\041\041\041\041\041\041\041\041\041\041\040\040\040\040\040\
++\\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\
++\\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\
++\\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\
++\\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\
++\\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\
++\\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\
++\\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\
++\\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040\040"
++),
++ (9, 
++"\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\000\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010"
++),
++ (11, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\013\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\
++\\012\012\012\012\012\012\012\012\012\012\012\000\000\000\000\000\
++\\000\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\
++\\012\012\012\012\012\012\012\012\012\012\012\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
++),
++ (12, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\012\012\000\
++\\012\012\012\012\012\012\012\012\012\012\000\000\000\000\000\000\
++\\000\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\
++\\012\012\012\012\012\012\012\012\012\012\012\000\000\000\000\000\
++\\000\012\012\012\012\012\012\012\012\012\012\012\012\012\012\012\
++\\012\012\012\012\012\012\012\012\012\012\012\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
++),
++ (13, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\014\014\014\014\014\014\014\014\014\014\014\014\014\014\014\
++\\014\014\014\014\014\014\014\014\014\014\014\000\000\000\000\000\
++\\000\014\014\014\014\014\014\014\014\014\014\014\014\014\014\014\
++\\014\014\014\014\014\014\014\014\014\014\014\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
++),
++ (14, 
++"\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\016\000\000\000\000\000\000\000\000\000\000\000\000\014\014\000\
++\\014\014\014\014\014\014\014\014\014\014\000\000\000\000\015\000\
++\\000\014\014\014\014\014\014\014\014\014\014\014\014\014\014\014\
++\\014\014\014\014\014\014\014\014\014\014\014\000\000\000\000\000\
++\\000\014\014\014\014\014\014\014\014\014\014\014\014\014\014\014\
++\\014\014\014\014\014\014\014\014\014\014\014\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
++),
++ (16, 
++"\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
++),
++ (17, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
++),
++ (18, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\019\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
++),
++ (20, 
++"\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\023\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\000\010\010\010\
++\\010\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\
++\\021\021\021\021\021\021\021\021\021\021\021\010\010\010\010\010\
++\\010\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\
++\\021\021\021\021\021\021\021\021\021\021\021\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010"
++),
++ (21, 
++"\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\021\021\010\
++\\021\021\021\021\021\021\021\021\021\021\010\022\000\010\010\010\
++\\010\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\
++\\021\021\021\021\021\021\021\021\021\021\021\010\010\010\010\010\
++\\010\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\
++\\021\021\021\021\021\021\021\021\021\021\021\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010"
++),
++ (23, 
++"\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\026\026\026\026\026\026\026\026\026\026\010\010\000\010\010\010\
++\\010\024\024\024\024\024\024\024\024\024\024\024\024\024\024\024\
++\\024\024\024\024\024\024\024\024\024\024\024\010\010\010\010\010\
++\\010\024\024\024\024\024\024\024\024\024\024\024\024\024\024\024\
++\\024\024\024\024\024\024\024\024\024\024\024\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010"
++),
++ (24, 
++"\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\025\000\010\010\010\
++\\010\024\024\024\024\024\024\024\024\024\024\024\024\024\024\024\
++\\024\024\024\024\024\024\024\024\024\024\024\010\010\010\010\010\
++\\010\024\024\024\024\024\024\024\024\024\024\024\024\024\024\024\
++\\024\024\024\024\024\024\024\024\024\024\024\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010"
++),
++ (26, 
++"\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\026\026\026\026\026\026\026\026\026\026\010\027\000\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\
++\\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010\010"
++),
++ (31, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\032\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
++),
++ (36, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\037\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
++),
++ (41, 
++"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\042\042\000\
++\\042\042\042\042\042\042\042\042\042\042\000\000\000\000\000\000\
++\\000\042\042\042\042\042\042\042\042\042\042\042\042\042\042\042\
++\\042\042\042\042\042\042\042\042\042\042\042\000\000\000\000\000\
++\\000\042\042\042\042\042\042\042\042\042\042\042\042\042\042\042\
++\\042\042\042\042\042\042\042\042\042\042\042\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
++),
++ (45, 
++"\046\046\046\046\046\046\046\046\046\046\000\046\046\046\046\046\
++\\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\
++\\046\046\046\046\046\046\046\047\046\046\046\046\046\046\046\046\
++\\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\
++\\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\
++\\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\
++\\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\
++\\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\
++\\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\
++\\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\
++\\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\
++\\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\
++\\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\
++\\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\
++\\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\
++\\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046\046"
++),
++ (48, 
++"\049\049\049\049\049\049\049\049\049\049\000\049\049\049\049\049\
++\\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\
++\\049\049\050\049\049\049\049\049\049\049\049\049\049\049\049\049\
++\\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\
++\\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\
++\\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\
++\\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\
++\\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\
++\\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\
++\\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\
++\\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\
++\\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\
++\\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\
++\\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\
++\\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\
++\\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049\049"
++),
++ (51, 
++"\000\000\000\000\000\000\000\000\000\052\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\052\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
++\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
++),
++(0, "")]
++fun f x = x 
++val s = map f (rev (tl (rev s))) 
++exception LexHackingError 
 +fun look ((j,x)::r, i) = if i = j then x else look(r, i) 
-   | look ([], i) = raise LexHackingError
- fun g {fin=x, trans=i} = {fin=x, trans=look(s,i)} 
- in Vector.fromList(map g 
-@@ -559,30 +560,31 @@
- 	exception LexerError (* raised if illegal leaf action tried *)
- end
- 
--fun makeLexer yyinput =
--let	val yygone0=1
--	val yylineno = ref 0
++  | look ([], i) = raise LexHackingError
++fun g {fin=x, trans=i} = {fin=x, trans=look(s,i)} 
++in Vector.fromList(map g 
++[{fin = [], trans = 0},
++{fin = [], trans = 1},
++{fin = [], trans = 1},
++{fin = [], trans = 3},
++{fin = [], trans = 3},
++{fin = [], trans = 5},
++{fin = [], trans = 5},
++{fin = [], trans = 7},
++{fin = [], trans = 7},
++{fin = [(N 79),(N 81)], trans = 9},
++{fin = [(N 79)], trans = 9},
++{fin = [(N 81)], trans = 11},
++{fin = [(N 3)], trans = 12},
++{fin = [], trans = 13},
++{fin = [], trans = 14},
++{fin = [(N 32)], trans = 0},
++{fin = [], trans = 16},
++{fin = [], trans = 17},
++{fin = [], trans = 18},
++{fin = [(N 37)], trans = 0},
++{fin = [(N 79),(N 81)], trans = 20},
++{fin = [(N 79)], trans = 21},
++{fin = [(N 72),(N 79)], trans = 9},
++{fin = [(N 79)], trans = 23},
++{fin = [(N 79)], trans = 24},
++{fin = [(N 61),(N 79)], trans = 9},
++{fin = [(N 79)], trans = 26},
++{fin = [(N 67),(N 79)], trans = 9},
++{fin = [(N 76),(N 79),(N 81)], trans = 9},
++{fin = [(N 74),(N 79)], trans = 9},
++{fin = [(N 44)], trans = 0},
++{fin = [(N 44)], trans = 31},
++{fin = [(N 40)], trans = 0},
++{fin = [(N 42)], trans = 0},
++{fin = [(N 55)], trans = 0},
++{fin = [(N 49),(N 55)], trans = 0},
++{fin = [(N 55)], trans = 36},
++{fin = [(N 47)], trans = 0},
++{fin = [(N 53),(N 55)], trans = 0},
++{fin = [(N 51)], trans = 0},
++{fin = [(N 25)], trans = 0},
++{fin = [(N 13),(N 25)], trans = 41},
++{fin = [(N 13)], trans = 41},
++{fin = [(N 5),(N 25)], trans = 0},
++{fin = [(N 15),(N 25)], trans = 0},
++{fin = [(N 25)], trans = 45},
++{fin = [], trans = 45},
++{fin = [(N 23)], trans = 0},
++{fin = [(N 25)], trans = 48},
++{fin = [], trans = 48},
++{fin = [(N 19)], trans = 0},
++{fin = [(N 10),(N 25)], trans = 51},
++{fin = [(N 10)], trans = 51},
++{fin = [(N 7)], trans = 0}])
++end
++structure StartStates =
++	struct
++	datatype yystartstate = STARTSTATE of int
++
++(* start state definitions *)
++
++val COM1 = STARTSTATE 3;
++val COM2 = STARTSTATE 5;
++val INITIAL = STARTSTATE 1;
++val STAG = STARTSTATE 7;
++
++end
++type result = UserDeclarations.lexresult
++	exception LexerError (* raised if illegal leaf action tried *)
++end
++
 +type int = Int.int
 +fun makeLexer (yyinput: int -> string) =
 +let	val yygone0:int= ~1
 +	val yylineno: int ref = ref 0
- 
- 	val yyb = ref "\n" 		(* buffer *)
--	val yybl = ref 1		(*buffer length *)
--	val yybufpos = ref 1		(* location of next character to use *)
--	val yygone = ref yygone0	(* position in file of beginning of buffer *)
++
++	val yyb = ref "\n" 		(* buffer *)
 +	val yybl: int ref = ref 1		(*buffer length *)
 +	val yybufpos: int ref = ref 1		(* location of next character to use *)
 +	val yygone: int ref = ref yygone0	(* position in file of beginning of buffer *)
- 	val yydone = ref false		(* eof found yet? *)
--	val yybegin = ref 1		(*Current 'start state' for lexer *)
++	val yydone = ref false		(* eof found yet? *)
 +	val yybegin: int ref = ref 1		(*Current 'start state' for lexer *)
- 
- 	val YYBEGIN = fn (Internal.StartStates.STARTSTATE x) =>
- 		 yybegin := x
- 
- fun lex (yyarg as (errorFn, file)) =
- let fun continue() : Internal.result = 
--  let fun scan (s,AcceptingLeaves : Internal.yyfinstate list list,l,i0) =
--	let fun action (i,nil) = raise LexError
++
++	val YYBEGIN = fn (Internal.StartStates.STARTSTATE x) =>
++		 yybegin := x
++
++fun lex (yyarg as (errorFn, file)) =
++let fun continue() : Internal.result = 
 +  let fun scan (s,AcceptingLeaves : Internal.yyfinstate list list,l,i0: int) =
 +	let fun action (i: int,nil) = raise LexError
- 	| action (i,nil::l) = action (i-1,l)
- 	| action (i,(node::acts)::l) =
- 		case node of
- 		    Internal.N yyk => 
--			(let fun yymktext() = substring(!yyb,i0,i-i0)
--			     val yypos = i0+ !yygone
++	| action (i,nil::l) = action (i-1,l)
++	| action (i,(node::acts)::l) =
++		case node of
++		    Internal.N yyk => 
 +			(let fun yymktext() = String.substring(!yyb,i0,i-i0)
 +			     val yypos: int = i0+ !yygone
- 			val _ = yylineno := CharVectorSlice.foldli
- 				(fn (_,#"\n", n) => n+1 | (_,_, n) => n) (!yylineno) (CharVectorSlice.slice (!yyb,i0,SOME(i-i0)))
- 			open UserDeclarations Internal.StartStates
-@@ -636,30 +638,30 @@
- 
- 		) end )
- 
--	val {fin,trans} = Unsafe.Vector.sub(Internal.tab, s)
++			val _ = yylineno := CharVectorSlice.foldli
++				(fn (_,#"\n", n) => n+1 | (_,_, n) => n) (!yylineno) (CharVectorSlice.slice (!yyb,i0,SOME(i-i0)))
++			open UserDeclarations Internal.StartStates
++ in (yybufpos := i; case yyk of 
++
++			(* Application actions *)
++
++  10 => let val yytext=yymktext() in addStr yytext; continue() end
++| 13 => let val yytext=yymktext() in addStr yytext; continue() end
++| 15 => let val yytext=yymktext() in addStr yytext; continue() end
++| 19 => let val yytext=yymktext() in addStr yytext; continue() end
++| 23 => let val yytext=yymktext() in addStr yytext; continue() end
++| 25 => let val yytext=yymktext() in addStr yytext; continue() end
++| 3 => let val yytext=yymktext() in addStr yytext; YYBEGIN STAG; continue() end
++| 32 => let val yytext=yymktext() in case Elems.endTag file (yytext, !yylineno, !yylineno)
++	     of NONE => continue()
++	      | (SOME tag) => tag
++	    (* end case *) end
++| 37 => (YYBEGIN COM1; continue())
++| 40 => (YYBEGIN COM2; continue())
++| 42 => (continue())
++| 44 => (continue())
++| 47 => (YYBEGIN COM1; continue())
++| 49 => (YYBEGIN INITIAL; continue())
++| 5 => let val yytext=yymktext() in addStr yytext;
++	    YYBEGIN INITIAL;
++	    case Elems.startTag file (getStr(), !yylineno, !yylineno)
++	     of NONE => continue()
++	      | (SOME tag) => tag
++	    (* end case *) end
++| 51 => (continue())
++| 53 => (continue())
++| 55 => (errorFn("bad comment syntax", !yylineno, !yylineno+1);
++	    YYBEGIN INITIAL;
++	    continue())
++| 61 => (
++(** At some point, we should support &#SPACE; and &#TAB; **)
++	    continue())
++| 67 => let val yytext=yymktext() in T.CHAR_REF(yytext, !yylineno, !yylineno) end
++| 7 => (addStr " "; continue())
++| 72 => let val yytext=yymktext() in T.ENTITY_REF(yytext, !yylineno, !yylineno) end
++| 74 => (continue())
++| 76 => (continue())
++| 79 => let val yytext=yymktext() in T.PCDATA(yytext, !yylineno, !yylineno) end
++| 81 => let val yytext=yymktext() in errorFn(concat[
++		"bogus character #\"", Char.toString(String.sub(yytext, 0)),
++		"\" in PCDATA\n"
++	      ], !yylineno, !yylineno+1);
++	    continue() end
++| _ => raise Internal.LexerError
++
++		) end )
++
 +	val {fin,trans} = Vector.sub (Internal.tab, s)
- 	val NewAcceptingLeaves = fin::AcceptingLeaves
- 	in if l = !yybl then
- 	     if trans = #trans(Vector.sub(Internal.tab,0))
- 	       then action(l,NewAcceptingLeaves
- ) else	    let val newchars= if !yydone then "" else yyinput 1024
--	    in if (size newchars)=0
++	val NewAcceptingLeaves = fin::AcceptingLeaves
++	in if l = !yybl then
++	     if trans = #trans(Vector.sub(Internal.tab,0))
++	       then action(l,NewAcceptingLeaves
++) else	    let val newchars= if !yydone then "" else yyinput 1024
 +	    in if (String.size newchars)=0
- 		  then (yydone := true;
- 		        if (l=i0) then UserDeclarations.eof yyarg
- 		                  else action(l,NewAcceptingLeaves))
- 		  else (if i0=l then yyb := newchars
--		     else yyb := substring(!yyb,i0,l-i0)^newchars;
++		  then (yydone := true;
++		        if (l=i0) then UserDeclarations.eof yyarg
++		                  else action(l,NewAcceptingLeaves))
++		  else (if i0=l then yyb := newchars
 +		     else yyb := String.substring(!yyb,i0,l-i0)^newchars;
- 		     yygone := !yygone+i0;
--		     yybl := size (!yyb);
++		     yygone := !yygone+i0;
 +		     yybl := String.size (!yyb);
- 		     scan (s,AcceptingLeaves,l-i0,0))
- 	    end
--	  else let val NewChar = Char.ord(Unsafe.CharVector.sub(!yyb,l))
--		val NewState = Char.ord(Unsafe.CharVector.sub(trans,NewChar))
++		     scan (s,AcceptingLeaves,l-i0,0))
++	    end
 +	  else let val NewChar = Char.ord (CharVector.sub (!yyb,l))
 +		val NewState = Char.ord (CharVector.sub (trans,NewChar))
- 		in if NewState=0 then action(l,NewAcceptingLeaves)
- 		else scan(NewState,NewAcceptingLeaves,l+1,i0)
- 	end
- 	end
- (*
--	val start= if substring(!yyb,!yybufpos-1,1)="\n"
++		in if NewState=0 then action(l,NewAcceptingLeaves)
++		else scan(NewState,NewAcceptingLeaves,l+1,i0)
++	end
++	end
++(*
 +	val start= if String.substring(!yyb,!yybufpos-1,1)="\n"
- then !yybegin+1 else !yybegin
- *)
- 	in scan(!yybegin (* start *),nil,!yybufpos,!yybufpos)
++then !yybegin+1 else !yybegin
++*)
++	in scan(!yybegin (* start *),nil,!yybufpos,!yybufpos)
++    end
++in continue end
++  in lex
++  end
++end
 diff -Naur smlnj-lib/HTML/html-lib.mlb smlnj-lib-mlton/HTML/html-lib.mlb
 --- smlnj-lib/HTML/html-lib.mlb	1969-12-31 19:00:00.000000000 -0500
-+++ smlnj-lib-mlton/HTML/html-lib.mlb	2005-11-21 11:37:38.000000000 -0500
++++ smlnj-lib-mlton/HTML/html-lib.mlb	2006-05-02 23:00:44.000000000 -0400
 @@ -0,0 +1,300 @@
 +
 +ann
@@ -866,7 +10113,7 @@
 +end
 diff -Naur smlnj-lib/INet/inet-lib.mlb smlnj-lib-mlton/INet/inet-lib.mlb
 --- smlnj-lib/INet/inet-lib.mlb	1969-12-31 19:00:00.000000000 -0500
-+++ smlnj-lib-mlton/INet/inet-lib.mlb	2005-11-21 11:37:42.000000000 -0500
++++ smlnj-lib-mlton/INet/inet-lib.mlb	2006-05-02 23:00:44.000000000 -0400
 @@ -0,0 +1,144 @@
 +
 +ann
@@ -1014,7 +10261,7 @@
 +end
 diff -Naur smlnj-lib/PP/pp-lib.mlb smlnj-lib-mlton/PP/pp-lib.mlb
 --- smlnj-lib/PP/pp-lib.mlb	1969-12-31 19:00:00.000000000 -0500
-+++ smlnj-lib-mlton/PP/pp-lib.mlb	2005-11-21 11:37:43.000000000 -0500
++++ smlnj-lib-mlton/PP/pp-lib.mlb	2006-05-02 23:00:44.000000000 -0400
 @@ -0,0 +1,212 @@
 +
 +ann
@@ -1230,7 +10477,7 @@
 +end
 diff -Naur smlnj-lib/Reactive/reactive-lib.mlb smlnj-lib-mlton/Reactive/reactive-lib.mlb
 --- smlnj-lib/Reactive/reactive-lib.mlb	1969-12-31 19:00:00.000000000 -0500
-+++ smlnj-lib-mlton/Reactive/reactive-lib.mlb	2005-11-21 11:37:43.000000000 -0500
++++ smlnj-lib-mlton/Reactive/reactive-lib.mlb	2006-05-02 23:00:44.000000000 -0400
 @@ -0,0 +1,70 @@
 +
 +ann
@@ -1304,7 +10551,7 @@
 +end
 diff -Naur smlnj-lib/README.mlton smlnj-lib-mlton/README.mlton
 --- smlnj-lib/README.mlton	1969-12-31 19:00:00.000000000 -0500
-+++ smlnj-lib-mlton/README.mlton	2005-11-17 15:56:55.000000000 -0500
++++ smlnj-lib-mlton/README.mlton	2005-11-17 21:02:49.000000000 -0500
 @@ -0,0 +1,15 @@
 +The following changes were made to the SML/NJ Library, in addition to
 +deriving the {{{.mlb}}} files from the {{{.cm}}} files:
@@ -1323,7 +10570,7 @@
 + * {{{HTML/html-attrs-fn.sml}}} (modified): Rewrote use of ''or-patterns''.
 diff -Naur smlnj-lib/RegExp/regexp-lib.mlb smlnj-lib-mlton/RegExp/regexp-lib.mlb
 --- smlnj-lib/RegExp/regexp-lib.mlb	1969-12-31 19:00:00.000000000 -0500
-+++ smlnj-lib-mlton/RegExp/regexp-lib.mlb	2005-11-21 11:37:44.000000000 -0500
++++ smlnj-lib-mlton/RegExp/regexp-lib.mlb	2006-05-02 23:00:44.000000000 -0400
 @@ -0,0 +1,214 @@
 +
 +ann
@@ -1558,7 +10805,7 @@
 +end
 diff -Naur smlnj-lib/Unix/unix-lib.mlb smlnj-lib-mlton/Unix/unix-lib.mlb
 --- smlnj-lib/Unix/unix-lib.mlb	1969-12-31 19:00:00.000000000 -0500
-+++ smlnj-lib-mlton/Unix/unix-lib.mlb	2005-11-21 11:37:44.000000000 -0500
++++ smlnj-lib-mlton/Unix/unix-lib.mlb	2006-05-02 23:00:44.000000000 -0400
 @@ -0,0 +1,45 @@
 +
 +ann
@@ -1606,7 +10853,7 @@
 +
 +end
 diff -Naur smlnj-lib/Util/bit-array.sml smlnj-lib-mlton/Util/bit-array.sml
---- smlnj-lib/Util/bit-array.sml	2004-11-20 10:28:05.000000000 -0500
+--- smlnj-lib/Util/bit-array.sml	2003-09-05 17:34:26.000000000 -0400
 +++ smlnj-lib-mlton/Util/bit-array.sml	2005-08-17 20:13:05.000000000 -0400
 @@ -47,7 +47,9 @@
           * We maintain the invariant that all bits >= nbits are 0.
@@ -1735,7 +10982,7 @@
      structure Nd = Nd
  
 diff -Naur smlnj-lib/Util/redblack-map-fn.sml smlnj-lib-mlton/Util/redblack-map-fn.sml
---- smlnj-lib/Util/redblack-map-fn.sml	2004-11-20 10:28:05.000000000 -0500
+--- smlnj-lib/Util/redblack-map-fn.sml	2002-05-16 14:44:04.000000000 -0400
 +++ smlnj-lib-mlton/Util/redblack-map-fn.sml	2005-08-17 20:13:05.000000000 -0400
 @@ -20,7 +20,7 @@
   * its child will be a red leaf.
@@ -1747,7 +10994,7 @@
  
      structure Key = K
 diff -Naur smlnj-lib/Util/redblack-set-fn.sml smlnj-lib-mlton/Util/redblack-set-fn.sml
---- smlnj-lib/Util/redblack-set-fn.sml	2004-11-20 10:28:05.000000000 -0500
+--- smlnj-lib/Util/redblack-set-fn.sml	2001-05-04 12:37:36.000000000 -0400
 +++ smlnj-lib-mlton/Util/redblack-set-fn.sml	2005-08-17 20:13:05.000000000 -0400
 @@ -20,7 +20,7 @@
   * its child will be a red leaf.
@@ -1760,7 +11007,7 @@
      structure Key = K
 diff -Naur smlnj-lib/Util/smlnj-lib.mlb smlnj-lib-mlton/Util/smlnj-lib.mlb
 --- smlnj-lib/Util/smlnj-lib.mlb	1969-12-31 19:00:00.000000000 -0500
-+++ smlnj-lib-mlton/Util/smlnj-lib.mlb	2005-11-21 11:38:02.000000000 -0500
++++ smlnj-lib-mlton/Util/smlnj-lib.mlb	2006-05-02 23:00:45.000000000 -0400
 @@ -0,0 +1,1099 @@
 +
 +ann

Modified: mlton/branches/on-20050420-cmm-branch/lib/smlnj-lib/smlnj-lib.tgz
===================================================================
(Binary files differ)

Modified: mlton/branches/on-20050420-cmm-branch/mlton/atoms/prim.fun
===================================================================
--- mlton/branches/on-20050420-cmm-branch/mlton/atoms/prim.fun	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/mlton/atoms/prim.fun	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1507,7 +1507,6 @@
                               | MLton_equal => t
                               | Real_lt _ => f
                               | Real_le _ => t
-                              | Real_equal _ => t
                               | Real_qequal _ => t
                               | Word_andb _ => Var x
                               | Word_equal _ => t

Modified: mlton/branches/on-20050420-cmm-branch/mlton/atoms/prim.sig
===================================================================
--- mlton/branches/on-20050420-cmm-branch/mlton/atoms/prim.sig	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/mlton/atoms/prim.sig	2006-07-03 21:18:36 UTC (rev 4671)
@@ -62,7 +62,7 @@
               *)
              | MLton_bug (* ssa to rssa *)
              | MLton_deserialize (* unused *)
-             | MLton_eq (* codegen *)
+             | MLton_eq (* ssa to rssa *)
              | MLton_equal (* polymorphic equality *)
              | MLton_halt (* ssa to rssa *)
              (* MLton_handlesSignals and MLton_installSignalHandler work together

Modified: mlton/branches/on-20050420-cmm-branch/mlton/codegen/x86-codegen/x86-codegen.fun
===================================================================
--- mlton/branches/on-20050420-cmm-branch/mlton/codegen/x86-codegen/x86-codegen.fun	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/mlton/codegen/x86-codegen/x86-codegen.fun	2006-07-03 21:18:36 UTC (rev 4671)
@@ -80,9 +80,8 @@
     = let
          val reserveEsp =
             (* There is no sigaltstack on cygwin, we need to reserve %esp to
-             * hold the C stack pointer.  We need to do this even in programs
-             * that don't handle signals, since signals get used under the hood
-             * in Cygwin.
+             * hold the C stack pointer.  We only need to do this in programs
+             * that handle signals.
              *)
             handlesSignals andalso let open Control in !targetOS = Cygwin end
 

Modified: mlton/branches/on-20050420-cmm-branch/mlton/codegen/x86-codegen/x86-generate-transfers.fun
===================================================================
--- mlton/branches/on-20050420-cmm-branch/mlton/codegen/x86-codegen/x86-generate-transfers.fun	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/mlton/codegen/x86-codegen/x86-generate-transfers.fun	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1128,7 +1128,8 @@
                                     {src = arg,
                                      dst = c_stackPDerefFloat,
                                      size = size}]
-                            else if Size.eq (size, Size.BYTE)
+                            else if Size.eq (size, Size.BYTE) 
+                                    orelse Size.eq (size, Size.WORD)
                               then AppendList.fromList
                                    [Assembly.instruction_movx
                                     {oper = Instruction.MOVZX,

Modified: mlton/branches/on-20050420-cmm-branch/mlton/main/main.fun
===================================================================
--- mlton/branches/on-20050420-cmm-branch/mlton/main/main.fun	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/mlton/main/main.fun	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,4 +1,4 @@
-(* Copyright (C) 1999-2005 Henry Cejtin, Matthew Fluet, Suresh
+(* Copyright (C) 1999-2006 Henry Cejtin, Matthew Fluet, Suresh
  *    Jagannathan, and Stephen Weeks.
  * Copyright (C) 1997-2000 NEC Research Institute.
  *
@@ -674,6 +674,7 @@
          case targetOS of
             Darwin => ()
           | FreeBSD => ()
+          | HPUX => ()
           | Linux => ()
           | NetBSD => ()
           | OpenBSD => ()

Modified: mlton/branches/on-20050420-cmm-branch/mlton/ssa/deep-flatten.fun
===================================================================
--- mlton/branches/on-20050420-cmm-branch/mlton/ssa/deep-flatten.fun	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/mlton/ssa/deep-flatten.fun	2006-07-03 21:18:36 UTC (rev 4671)
@@ -668,6 +668,7 @@
                 ; result ())
             fun equal () =
                (Value.unify (arg 0, arg 1)
+                ; Value.dontFlatten (arg 0)
                 ; result ())
          in
             case Prim.name prim of
@@ -909,13 +910,7 @@
                                            end
                                   end
                          end)
-             | PrimApp {args, prim} =>
-                  let
-                     val () = simpleTree ()
-                  in
-                     doit (PrimApp {args = replaceVars args,
-                                    prim = prim})
-                  end
+             | PrimApp {args, prim} => simple ()
              | Select {base, offset} =>
                   (case var of
                       NONE => none ()

Modified: mlton/branches/on-20050420-cmm-branch/mlton/ssa/redundant-tests.fun
===================================================================
--- mlton/branches/on-20050420-cmm-branch/mlton/ssa/redundant-tests.fun	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/mlton/ssa/redundant-tests.fun	2006-07-03 21:18:36 UTC (rev 4671)
@@ -192,11 +192,12 @@
                                                          facts = ref [],
                                                          inDeg = ref 0}))
              (* Set up inDeg. *)
+             fun inc l = Int.inc (#inDeg (labelInfo l))
+             val () = inc start
              val _ =
                 Vector.foreach
                 (blocks, fn Block.T {transfer, ...} =>
-                 Transfer.foreachLabel
-                 (transfer, Int.inc o #inDeg o labelInfo))
+                 Transfer.foreachLabel (transfer, inc))
              (* Perform analysis, set up facts, and set up ancestor. *)
              fun loop (Tree.T (Block.T {label, statements, transfer, ...},
                                children),

Modified: mlton/branches/on-20050420-cmm-branch/mlton/ssa/ref-flatten.fun
===================================================================
--- mlton/branches/on-20050420-cmm-branch/mlton/ssa/ref-flatten.fun	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/mlton/ssa/ref-flatten.fun	2006-07-03 21:18:36 UTC (rev 4671)
@@ -511,7 +511,7 @@
        * r: (t ref) = (t)
        * ... <no uses of r> ...
        * x: (... * (t ref) * ...) = (..., r, ...)
-       * ... <othere assignments to r> ...
+       * ... <other assignments to r> ...
        *
        *)
       datatype z = datatype VarInfo.t

Modified: mlton/branches/on-20050420-cmm-branch/package/debian/changelog
===================================================================
--- mlton/branches/on-20050420-cmm-branch/package/debian/changelog	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/package/debian/changelog	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,3 +1,10 @@
+mlton (20060213-1) unstable; urgency=low
+
+  * new upstream version
+  * Added dependence on libc6-dev.  closes: #352645
+
+ -- Stephen Weeks <sweeks@sweeks.com>  Mon, 13 Feb 2006 10:16:46 -0800
+
 mlton (20051202-1) unstable; urgency=low
 
   * new upstream version

Copied: mlton/branches/on-20050420-cmm-branch/regression/mlton.share.hppa-hpux.ok (from rev 4670, mlton/trunk/regression/mlton.share.hppa-hpux.ok)

Copied: mlton/branches/on-20050420-cmm-branch/regression/mlton.share.sparc-solaris.ok (from rev 4670, mlton/trunk/regression/mlton.share.sparc-solaris.ok)

Copied: mlton/branches/on-20050420-cmm-branch/regression/pack-real.2.ok (from rev 4670, mlton/trunk/regression/pack-real.2.ok)

Copied: mlton/branches/on-20050420-cmm-branch/regression/pack-real.2.sml (from rev 4670, mlton/trunk/regression/pack-real.2.sml)

Modified: mlton/branches/on-20050420-cmm-branch/runtime/Makefile
===================================================================
--- mlton/branches/on-20050420-cmm-branch/runtime/Makefile	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/runtime/Makefile	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,4 +1,4 @@
-## Copyright (C) 1999-2005 Henry Cejtin, Matthew Fluet, Suresh
+## Copyright (C) 1999-2006 Henry Cejtin, Matthew Fluet, Suresh
  #    Jagannathan, and Stephen Weeks.
  # Copyright (C) 1997-2000 NEC Research Institute.
  #
@@ -50,7 +50,13 @@
 
 CC = gcc -std=gnu99
 CFLAGS = -O2 -Wall -I. -Iplatform -D_FILE_OFFSET_BITS=32 $(FLAGS)
-DEBUGFLAGS = $(CFLAGS) -gstabs+ -g2
+DEBUGFLAGS = $(CFLAGS)
+ifneq ($(TARGET_ARCH), ia64)
+ifneq ($(TARGET_ARCH), powerpc)
+DEBUGFLAGS += -gstabs+
+endif
+endif
+DEBUGFLAGS += -g2
 
 CFILES = 							\
 	$(shell find basis -type f | grep '\.c$$' | grep -v Real/)	\

Modified: mlton/branches/on-20050420-cmm-branch/runtime/Posix/ProcEnv/Uname.c
===================================================================
--- mlton/branches/on-20050420-cmm-branch/runtime/Posix/ProcEnv/Uname.c	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/runtime/Posix/ProcEnv/Uname.c	2006-07-03 21:18:36 UTC (rev 4671)
@@ -4,12 +4,12 @@
 #define DEBUG FALSE
 #endif
 
-static struct utsname utsname;
+static struct utsname mlton_utsname;
 
 Int Posix_ProcEnv_Uname_uname () {
         Int res;
         
-        res = uname (&utsname);
+        res = uname (&mlton_utsname);
         if (DEBUG)
                 fprintf (stderr, "%d = Posix_ProcEnv_Uname_uname ()\n",
                                 (int)res);
@@ -17,21 +17,21 @@
 }
 
 Cstring Posix_ProcEnv_Uname_sysname () {
-        return (Cstring)utsname.sysname;
+        return (Cstring)mlton_utsname.sysname;
 }
 
 Cstring Posix_ProcEnv_Uname_nodename () {
-        return (Cstring)utsname.nodename;
+        return (Cstring)mlton_utsname.nodename;
 }
 
 Cstring Posix_ProcEnv_Uname_release () {
-        return (Cstring)utsname.release;
+        return (Cstring)mlton_utsname.release;
 }
 
 Cstring Posix_ProcEnv_Uname_version () {
-        return (Cstring)utsname.version;
+        return (Cstring)mlton_utsname.version;
 }
 
 Cstring Posix_ProcEnv_Uname_machine () {
-        return (Cstring)utsname.machine;
+        return (Cstring)mlton_utsname.machine;
 }

Modified: mlton/branches/on-20050420-cmm-branch/runtime/basis/Int/Word.c
===================================================================
--- mlton/branches/on-20050420-cmm-branch/runtime/basis/Int/Word.c	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/runtime/basis/Int/Word.c	2006-07-03 21:18:36 UTC (rev 4671)
@@ -28,7 +28,7 @@
 #define DEBUG FALSE
 #endif
 
-#if ! (defined (__hppa__) || defined (__i386__) || defined (__ppc__) || defined (__powerpc__) || defined (__sparc__))
+#if ! (defined (__hppa__) || defined (__i386__) || defined(__ia64__) || defined (__ppc__) || defined (__powerpc__) || defined (__sparc__))
 #error check that C {/,%} correctly implement {quot,rem} from the basis library
 #endif
 

Modified: mlton/branches/on-20050420-cmm-branch/runtime/basis/Net/Socket/Socket.c
===================================================================
--- mlton/branches/on-20050420-cmm-branch/runtime/basis/Net/Socket/Socket.c	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/runtime/basis/Net/Socket/Socket.c	2006-07-03 21:18:36 UTC (rev 4671)
@@ -30,13 +30,13 @@
 
 Int Socket_recv (Int s, Char *msg, Int start, Int len, Word flags) {
         MLton_initSockets ();
-        return recv (s, (void*)((char *)msg + start), (size_t)len, flags);
+        return mlton_recv (s, (void*)((char *)msg + start), (size_t)len, flags);
 }
 
 Int Socket_recvFrom (Int s, Char *msg, Int start, Int len, Word flags,
                     Char* addr, Int *addrlen) {
         MLton_initSockets ();
-        return recvfrom (s, (void*)((char *)msg + start), (size_t)len, flags,
+        return mlton_recvfrom (s, (void*)((char *)msg + start), (size_t)len, flags,
                                 (struct sockaddr*)addr, (socklen_t*)addrlen);
 }
 

Modified: mlton/branches/on-20050420-cmm-branch/runtime/gc.c
===================================================================
--- mlton/branches/on-20050420-cmm-branch/runtime/gc.c	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/runtime/gc.c	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999-2005 Henry Cejtin, Matthew Fluet, Suresh
+/* Copyright (C) 1999-2006 Henry Cejtin, Matthew Fluet, Suresh
  *    Jagannathan, and Stephen Weeks.
  * Copyright (C) 1997-2000 NEC Research Institute.
  *
@@ -332,7 +332,15 @@
 /* ---------------------------------------------------------------- */
 
 void GC_display (GC_state s, FILE *stream) {
-        fprintf (stream, "GC state\n\tcardMap = 0x%08x\n\toldGen = 0x%08x\n\toldGenSize = %s\n\toldGen + oldGenSize = 0x%08x\n\tnursery = 0x%08x\n\tfrontier = 0x%08x\n\tfrontier - nursery = %u\n\tlimitPlusSlop - frontier = %d\n",
+        fprintf (stream, "GC state\n"
+                 "\tcardMap = 0x%08x\n"
+                 "\toldGen = 0x%08x\n"
+                 "\toldGenSize = %s\n"
+                 "\toldGen + oldGenSize = 0x%08x\n"
+                 "\tnursery = 0x%08x\n"
+                 "\tfrontier = 0x%08x\n"
+                 "\tfrontier - nursery = %td\n"
+                 "\tlimitPlusSlop - frontier = %td\n",
                         (uint) s->cardMap,
                         (uint) s->heap.start,
                         uintToCommaString (s->oldGenSize),
@@ -343,7 +351,9 @@
                         s->limitPlusSlop - s->frontier);
         fprintf (stream, "\tcanHandle = %d\n\tsignalsIsPending = %d\n", s->canHandle, s->signalIsPending);
         fprintf (stderr, "\tcurrentThread = 0x%08x\n", (uint) s->currentThread);
-        fprintf (stream, "\tstackBottom = 0x%08x\n\tstackTop - stackBottom = %u\n\tstackLimit - stackTop = %u\n",
+        fprintf (stream, "\tstackBottom = 0x%08x\n"
+                 "\tstackTop - stackBottom = %td\n"
+                 "\tstackLimit - stackTop = %td\n",
                         (uint)s->stackBottom,
                         s->stackTop - s->stackBottom,
                         (s->stackLimit - s->stackTop));
@@ -764,7 +774,7 @@
                         /* Invariant: top points just past a "return address". */
                         returnAddress = *(word*) (top - WORD_SIZE);
                         if (DEBUG) {
-                                fprintf (stderr, "  top = %d  return address = ",
+                                fprintf (stderr, "  top = %td  return address = ",
                                                 top - bottom);
                                 fprintf (stderr, "0x%08x.\n", returnAddress);
                         }
@@ -880,12 +890,12 @@
         return s->nursery <= p and p < s->frontier;
 }
 
-#if ASSERT
-
 static inline bool isInOldGen (GC_state s, pointer p) {
         return s->heap.start <= p and p < s->heap.start + s->oldGenSize;
 }
 
+#if ASSERT
+
 static inline bool isInFromSpace (GC_state s, pointer p) {
         return (isInOldGen (s, p) or isInNursery (s, p));
 }
@@ -893,7 +903,7 @@
 static inline void assertIsInFromSpace (GC_state s, pointer *p) {
 #if ASSERT
         unless (isInFromSpace (s, *p))
-                die ("gc.c: assertIsInFromSpace p = 0x%08x  *p = 0x%08x);\n",
+                die ("gc.c: assertIsInFromSpace p = 0x%08x  *p = 0x%08x;\n",
                         (uint)p, *(uint*)p);
         /* The following checks that intergenerational pointers have the
          * appropriate card marked.  Unfortunately, it doesn't work because
@@ -2094,6 +2104,13 @@
         return res;
 }
 
+static inline void markIntergenerational (GC_state s, Pointer *pp) {
+        if (s->mutatorMarksCards
+                and isInOldGen (s, (pointer)pp)
+                and isInNursery (s, *pp))
+                markCard (s, (pointer)pp);
+}
+
 static inline void maybeSharePointer (GC_state s,
                                         Pointer *pp, 
                                         Bool shouldHashCons) {
@@ -2103,6 +2120,7 @@
                 fprintf (stderr, "maybeSharePointer  pp = 0x%08x  *pp = 0x%08x\n",
                                 (uint)pp, (uint)*pp);
         *pp = hashCons (s, *pp, FALSE); 
+        markIntergenerational (s, pp);
 }
 
 /* ---------------------------------------------------------------- */
@@ -2315,7 +2333,7 @@
                  */
                 assert (stackBottom (s, (GC_stack)cur) <= top);
                 if (DEBUG_MARK_COMPACT)
-                        fprintf (stderr, "markInStack  top = %d\n",
+                        fprintf (stderr, "markInStack  top = %td\n",
                                         top - stackBottom (s, (GC_stack)cur));
                                         
                 if (top == stackBottom (s, (GC_stack)(cur)))
@@ -2377,6 +2395,8 @@
                 todo += index * POINTER_SIZE;
                 prev = *(pointer*)todo;
                 *(pointer*)todo = next;
+                if (shouldHashCons)
+                        markIntergenerational (s, (pointer*)todo);
                 goto markNextInNormal;
         } else if (ARRAY_TAG == tag) {
                 arrayIndex = arrayCounter (cur);
@@ -2386,6 +2406,8 @@
                 todo += numNonPointers + index * POINTER_SIZE;
                 prev = *(pointer*)todo;
                 *(pointer*)todo = next;
+                if (shouldHashCons)
+                        markIntergenerational (s, (pointer*)todo);
                 goto markNextInArray;
         } else {
                 assert (STACK_TAG == tag);
@@ -2396,6 +2418,8 @@
                 todo = top - layout->numBytes + frameOffsets [index + 1];
                 prev = *(pointer*)todo;
                 *(pointer*)todo = next;
+                if (shouldHashCons)
+                        markIntergenerational (s, (pointer*)todo);
                 index++;
                 goto markInFrame;
         }
@@ -2540,7 +2564,8 @@
                                  * busted.
                                  */
                                 if (DEBUG_MARK_COMPACT)
-                                        fprintf (stderr, "compressing from 0x%08x to 0x%08x (length = %u)\n",
+                                        fprintf (stderr, "compressing from 0x%08x to 0x%08x "
+                                                 "(length = %td)\n",
                                                         (uint)endOfLastMarked,
                                                         (uint)front,
                                                         front - endOfLastMarked);
@@ -3364,7 +3389,7 @@
         from = s->savedThread;
         s->savedThread = BOGUS_THREAD;
         if (DEBUG_THREADS) {
-                fprintf (stderr, "free space = %u\n",
+                fprintf (stderr, "free space = %td\n",
                                 s->limitPlusSlop - s->frontier);
                 fprintf (stderr, "0x%08x = copyThread (0x%08x)\n", 
                                 (uint)to, (uint)from);

Copied: mlton/branches/on-20050420-cmm-branch/runtime/platform/aix.c (from rev 4670, mlton/trunk/runtime/platform/aix.c)

Copied: mlton/branches/on-20050420-cmm-branch/runtime/platform/aix.h (from rev 4670, mlton/trunk/runtime/platform/aix.h)

Modified: mlton/branches/on-20050420-cmm-branch/runtime/platform/cygwin.c
===================================================================
--- mlton/branches/on-20050420-cmm-branch/runtime/platform/cygwin.c	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/runtime/platform/cygwin.c	2006-07-03 21:18:36 UTC (rev 4671)
@@ -5,6 +5,7 @@
 #include "getrusage.c"
 #include "mkdir2.c"
 #include "mmap.c"
+#include "recv.nonblock.c"
 #include "totalRam.sysconf.c"
 #include "windows.c"
 

Modified: mlton/branches/on-20050420-cmm-branch/runtime/platform/cygwin.h
===================================================================
--- mlton/branches/on-20050420-cmm-branch/runtime/platform/cygwin.h	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/runtime/platform/cygwin.h	2006-07-03 21:18:36 UTC (rev 4671)
@@ -23,8 +23,9 @@
 
 #define MLton_Platform_OS_host "cygwin"
 
+#define HAS_FEROUND FALSE
 #define HAS_FPCLASSIFY TRUE
-#define HAS_FEROUND FALSE
+#define HAS_MSG_DONTWAIT FALSE
 #define HAS_PTRACE FALSE
 #define HAS_REMAP FALSE
 #define HAS_SIGALTSTACK FALSE
@@ -47,7 +48,8 @@
 #define _SC_RE_DUP_MAX _SC_BOGUS
 #define _SC_STREAM_MAX _SC_BOGUS
 
-#define MSG_DONTWAIT 0
+/* This should not conflict with existing flags. */
+#define MSG_DONTWAIT 0x1000000
 #define PF_INET6 0
 
 struct sockaddr_in6 {};

Modified: mlton/branches/on-20050420-cmm-branch/runtime/platform/darwin.h
===================================================================
--- mlton/branches/on-20050420-cmm-branch/runtime/platform/darwin.h	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/runtime/platform/darwin.h	2006-07-03 21:18:36 UTC (rev 4671)
@@ -25,6 +25,7 @@
 
 #define HAS_FEROUND TRUE
 #define HAS_FPCLASSIFY TRUE
+#define HAS_MSG_DONTWAIT TRUE
 #define HAS_PTRACE FALSE
 #define HAS_REMAP FALSE
 #define HAS_SIGALTSTACK TRUE

Modified: mlton/branches/on-20050420-cmm-branch/runtime/platform/freebsd.h
===================================================================
--- mlton/branches/on-20050420-cmm-branch/runtime/platform/freebsd.h	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/runtime/platform/freebsd.h	2006-07-03 21:18:36 UTC (rev 4671)
@@ -25,6 +25,7 @@
 
 #define HAS_FEROUND TRUE
 #define HAS_FPCLASSIFY TRUE
+#define HAS_MSG_DONTWAIT TRUE
 #define HAS_PTRACE TRUE
 #define HAS_REMAP FALSE
 #define HAS_SIGALTSTACK TRUE

Copied: mlton/branches/on-20050420-cmm-branch/runtime/platform/hpux.c (from rev 4670, mlton/trunk/runtime/platform/hpux.c)

Copied: mlton/branches/on-20050420-cmm-branch/runtime/platform/hpux.h (from rev 4670, mlton/trunk/runtime/platform/hpux.h)

Modified: mlton/branches/on-20050420-cmm-branch/runtime/platform/linux.h
===================================================================
--- mlton/branches/on-20050420-cmm-branch/runtime/platform/linux.h	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/runtime/platform/linux.h	2006-07-03 21:18:36 UTC (rev 4671)
@@ -24,6 +24,7 @@
 
 #define HAS_FEROUND TRUE
 #define HAS_FPCLASSIFY TRUE
+#define HAS_MSG_DONTWAIT TRUE
 #define HAS_PTRACE TRUE
 #define HAS_REMAP TRUE
 #define HAS_SIGALTSTACK TRUE

Modified: mlton/branches/on-20050420-cmm-branch/runtime/platform/mingw.h
===================================================================
--- mlton/branches/on-20050420-cmm-branch/runtime/platform/mingw.h	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/runtime/platform/mingw.h	2006-07-03 21:18:36 UTC (rev 4671)
@@ -19,6 +19,7 @@
 // classifies subnormals as normals.  So, we disable it here, which causes the
 // runtime to use our own version.
 #define HAS_FPCLASSIFY FALSE
+#define HAS_MSG_DONTWAIT TRUE
 #define HAS_PTRACE FALSE
 #define HAS_REMAP FALSE
 #define HAS_SIGALTSTACK FALSE
@@ -61,8 +62,6 @@
 #define F_SETLKW 9
 #define FD_CLOEXEC 1
 
-#define MSG_DONTWAIT 0
-
 #define SHUT_RD SD_RECEIVE
 #define SHUT_WR SD_SEND
 #define SHUT_RDWR SD_BOTH

Modified: mlton/branches/on-20050420-cmm-branch/runtime/platform/netbsd.h
===================================================================
--- mlton/branches/on-20050420-cmm-branch/runtime/platform/netbsd.h	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/runtime/platform/netbsd.h	2006-07-03 21:18:36 UTC (rev 4671)
@@ -22,6 +22,7 @@
 
 #define HAS_FEROUND FALSE
 #define HAS_FPCLASSIFY TRUE
+#define HAS_MSG_DONTWAIT TRUE
 #define HAS_PTRACE FALSE
 #define HAS_REMAP FALSE
 #define HAS_SIGALTSTACK TRUE

Modified: mlton/branches/on-20050420-cmm-branch/runtime/platform/openbsd.h
===================================================================
--- mlton/branches/on-20050420-cmm-branch/runtime/platform/openbsd.h	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/runtime/platform/openbsd.h	2006-07-03 21:18:36 UTC (rev 4671)
@@ -21,6 +21,7 @@
 
 #define HAS_FEROUND FALSE
 #define HAS_FPCLASSIFY FALSE
+#define HAS_MSG_DONTWAIT TRUE
 #define HAS_PTRACE FALSE
 #define HAS_REMAP FALSE
 #define HAS_SIGALTSTACK TRUE

Copied: mlton/branches/on-20050420-cmm-branch/runtime/platform/recv.nonblock.c (from rev 4670, mlton/trunk/runtime/platform/recv.nonblock.c)

Copied: mlton/branches/on-20050420-cmm-branch/runtime/platform/setenv.putenv.c (from rev 4670, mlton/trunk/runtime/platform/setenv.putenv.c)

Modified: mlton/branches/on-20050420-cmm-branch/runtime/platform/solaris.c
===================================================================
--- mlton/branches/on-20050420-cmm-branch/runtime/platform/solaris.c	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/runtime/platform/solaris.c	2006-07-03 21:18:36 UTC (rev 4671)
@@ -9,6 +9,7 @@
 #include "signbit.c"
 #include "ssmmap.c"
 #include "totalRam.sysconf.c"
+#include "setenv.putenv.c"
 
 static void catcher (int sig, siginfo_t *sip, ucontext_t *ucp) {
         GC_handleSigProf ((pointer) ucp->uc_mcontext.gregs[REG_PC]);
@@ -85,17 +86,6 @@
         smunmap (base, length);
 }
 
-/* This implementation of setenv has a space leak, but I don't see how to avoid 
- * it, since the specification of putenv is that it uses the memory for its arg.
- */
-int setenv (const char *name, const char *value, int overwrite) {
-        char *b;
-
-        b = malloc (strlen (name) + strlen (value) + 2 /* = and \000 */);
-        sprintf (b, "%s=%s", name, value);
-        return putenv (b);
-}
-
 void showMem () {
         static char buffer[256];
         sprintf (buffer, "pmap %d\n", (int)(getpid ()));

Modified: mlton/branches/on-20050420-cmm-branch/runtime/platform/solaris.h
===================================================================
--- mlton/branches/on-20050420-cmm-branch/runtime/platform/solaris.h	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/runtime/platform/solaris.h	2006-07-03 21:18:36 UTC (rev 4671)
@@ -34,6 +34,7 @@
 #define HAS_FEROUND TRUE
 #define HAS_FPCLASSIFY FALSE
 #define HAS_FPCLASSIFY64 TRUE
+#define HAS_MSG_DONTWAIT TRUE
 #define HAS_PTRACE TRUE
 #define HAS_REMAP FALSE
 #define HAS_SIGALTSTACK TRUE

Modified: mlton/branches/on-20050420-cmm-branch/runtime/platform.h
===================================================================
--- mlton/branches/on-20050420-cmm-branch/runtime/platform.h	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/runtime/platform.h	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999-2005 Henry Cejtin, Matthew Fluet, Suresh
+/* Copyright (C) 1999-2006 Henry Cejtin, Matthew Fluet, Suresh
  *    Jagannathan, and Stephen Weeks.
  * Copyright (C) 1997-2000 NEC Research Institute.
  *
@@ -58,12 +58,16 @@
 #define __Darwin__
 #endif
 
-#if (defined (__CYGWIN__))
+#if (defined (_AIX))
+#include "platform/aix.h"
+#elif (defined (__CYGWIN__))
 #include "platform/cygwin.h"
 #elif (defined (__Darwin__))
 #include "platform/darwin.h"
 #elif (defined (__FreeBSD__))
 #include "platform/freebsd.h"
+#elif (defined (__hpux__))
+#include "platform/hpux.h"
 #elif (defined (__linux__))
 #include "platform/linux.h"
 #elif (defined (__MINGW32__))
@@ -158,6 +162,10 @@
 #error HAS_TIME_PROFILING not defined
 #endif
 
+#ifndef HAS_MSG_DONTWAIT
+#error HAS_MSG_DONTWAIT not defined
+#endif
+
 #ifndef EXECVP
 #define EXECVP execvp
 #endif
@@ -199,6 +207,17 @@
 #endif
 #endif
 
+#if HAS_MSG_DONTWAIT
+#define mlton_recv recv
+#define mlton_recvfrom recvfrom
+#else
+/* Platform has no MSG_DONTWAIT flag for recv(), so these must be
+   defined to simulate that flag. */
+int mlton_recv(int s, void *buf, int len, int flags);
+int mlton_recvfrom(int s, void *buf, int len, int flags, void *from,
+                   socklen_t *fromlen);
+#endif
+
 /* If HAS_TIME_PROFILING, then you must define these. */
 void *getTextStart ();
 void *getTextEnd ();
@@ -271,8 +290,8 @@
 void swrite (int fd, const void *buf, size_t count);
 void swriteUint (int fd, uint n);
 /*
- * totalRam returns the amount of physical memory on the machine.
- */
+ * totalRam returns the amount of physical memory on the machine (in
+ * bytes).  */
 Word32 totalRam (GC_state s);
 string uintToCommaString (uint n);
 string ullongToCommaString (ullong n);

Modified: mlton/branches/on-20050420-cmm-branch/runtime/types.h
===================================================================
--- mlton/branches/on-20050420-cmm-branch/runtime/types.h	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/runtime/types.h	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004-2005 Henry Cejtin, Matthew Fluet, Suresh
+/* Copyright (C) 2004-2006 Henry Cejtin, Matthew Fluet, Suresh
  *    Jagannathan, and Stephen Weeks.
  *
  * MLton is released under a BSD-style license.
@@ -16,7 +16,7 @@
 #ifndef _ISOC99_SOURCE
 #define _ISOC99_SOURCE
 #endif
-#if (defined (__OpenBSD__))
+#if defined(_AIX) || (defined(__hpux__) || defined (__OpenBSD__))
 #include <inttypes.h>
 #elif (defined (__sun__))
 #include <sys/int_types.h>

Modified: mlton/branches/on-20050420-cmm-branch/util/cm2mlb/cm2mlb-map
===================================================================
--- mlton/branches/on-20050420-cmm-branch/util/cm2mlb/cm2mlb-map	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/util/cm2mlb/cm2mlb-map	2006-07-03 21:18:36 UTC (rev 4671)
@@ -1,8 +1,11 @@
+$SMLNJ-BASIS           $(SML_LIB)/basis
 $basis.cm              $(SML_LIB)/basis
 $basis.cm/basis.cm     $(SML_LIB)/basis/basis.mlb
 
-$ml-yacc-lib.cm                    $(SML_LIB)/mlyacc-lib
-$ml-yacc-lib.cm/ml-yacc-lib.cm     $(SML_LIB)/mlyacc-lib/mlyacc-lib.mlb
+$SMLNJ-ML-YACC-LIB                    $(SML_LIB)/mlyacc-lib
+$SMLNJ-ML-YACC-LIB/ml-yacc-lib.cm     $(SML_LIB)/mlyacc-lib/mlyacc-lib.mlb
+$ml-yacc-lib.cm                       $(SML_LIB)/mlyacc-lib
+$ml-yacc-lib.cm/ml-yacc-lib.cm        $(SML_LIB)/mlyacc-lib/mlyacc-lib.mlb
 
 $cml            $(SML_LIB)/cml
 $cml/cml.cm     $(SML_LIB)/cml/cml.mlb
@@ -10,6 +13,7 @@
 $c          $(SML_LIB)/mlnlffi-lib
 $c/c.cm     $(SML_LIB)/mlnlffi-lib/mlnlffi-lib.mlb
 
+$SMLNJ-LIB            $(SML_LIB)/smlnj-lib
 $smlnj-lib.cm         $(SML_LIB)/smlnj-lib/Util
 $controls-lib.cm      $(SML_LIB)/smlnj-lib/Controls
 $hash-cons-lib.cm     $(SML_LIB)/smlnj-lib/HashCons
@@ -22,3 +26,5 @@
 
 $ckit-lib.cm                 $(SML_LIB)/ckit-lib
 $ckit-lib.cm/ckit-lib.cm     $(SML_LIB)/ckit-lib/ckit-lib.mlb
+
+$SMLNJ-MLRISC     $(SML_LIB)/mlrisc-lib/mlb

Modified: mlton/branches/on-20050420-cmm-branch/util/cm2mlb/cm2mlb.sml
===================================================================
--- mlton/branches/on-20050420-cmm-branch/util/cm2mlb/cm2mlb.sml	2006-06-26 08:23:18 UTC (rev 4670)
+++ mlton/branches/on-20050420-cmm-branch/util/cm2mlb/cm2mlb.sml	2006-07-03 21:18:36 UTC (rev 4671)
@@ -175,6 +175,16 @@
                                then case String.fields (fn #"/" => true | _ => false) cmLibDescr of
                                        "$" :: (arcs as (arc0 :: _)) => 
                                           doitAnchoredPath (("$" ^ arc0) :: arcs)
+                                     | arc0 :: arcs =>
+                                          let
+                                             val arc0 =
+                                                case CharVector.findi (fn (_, #"(") => true | _ => false) arc0 of
+                                                   SOME (i, _) => 
+                                                      String.extract (arc0, i + 2, SOME (String.size arc0 - i - 3))
+                                                 | NONE => arc0
+                                          in 
+                                             doitAnchoredPath (arc0 :: arcs)
+                                          end
                                      | arcs => doitAnchoredPath arcs
                                else concat ["(* ", cmLibOSString, " ===> *) ", mlbLibDef ()]
                       in