[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