1(* First, a number of bogus declarations *)
2
3type info = unit;
4type scon = unit
5type longid = unit
6type tycon = unit
7type longtycon = unit
8type longstrid = unit
9type id = unit
10type funid = unit
11type strid = unit
12type sigid = unit
13
14datatype 'a op_opt = OP_OPT of 'a * bool
15datatype 'a WithInfo = WITH_INFO of info * 'a
16
17  datatype atexp =
18	SCONatexp of info * scon |
19	IDENTatexp of info * longid op_opt |
20	RECORDatexp of info * exprow option |
21	LETatexp of info * dec * exp |
22	PARatexp of info * exp
23
24  and opid = OPID of longid * bool
25
26  and exprow =
27	EXPROW of info * lab * exp * exprow option
28
29  and exp =
30	ATEXPexp of info * atexp |
31	APPexp of info * exp * atexp |
32	TYPEDexp of info * exp * ty |
33	HANDLEexp of info * exp * match |
34        RAISEexp of info * exp |
35	FNexp of info * match |
36	UNRES_INFIXexp of info * atexp list
37
38  and match =
39        MATCH of info * mrule * match option
40
41  and mrule =
42        MRULE of info * pat * exp
43
44  and dec =
45	VALdec of info * tyvar list * valbind |
46	UNRES_FUNdec of info * tyvar list * FValBind |
47	TYPEdec of info * typbind |
48	DATATYPEdec of info * datbind |
49	DATATYPE_REPLICATIONdec of info * tycon * longtycon |
50	ABSTYPEdec of info * datbind * dec |
51	EXCEPTIONdec of info * exbind |
52	LOCALdec of info * dec * dec |
53	OPENdec of info * longstrid WithInfo list |
54	SEQdec of info * dec * dec |
55	INFIXdec of info * int option * id list |
56	INFIXRdec of info * int option * id list |
57	NONFIXdec of info * id list |
58	EMPTYdec of info
59
60  and valbind =
61	PLAINvalbind of info * pat * exp * valbind option |
62	RECvalbind of info * valbind
63
64  and FValBind = FVALBIND of info * FClause * FValBind option
65  and FClause = FCLAUSE of info * atpat list * ty option * exp * FClause option
66
67  and typbind =
68        TYPBIND of info * tyvar list * tycon * ty * typbind option
69
70  and datbind =
71        DATBIND of info * tyvar list * tycon * conbind * datbind option
72
73  and conbind =
74        CONBIND of info * id op_opt * ty option * conbind option
75
76  and exbind =
77        EXBIND of info * id op_opt * ty option * exbind option |
78        EXEQUAL of info * id op_opt * longid op_opt * exbind option
79
80  and atpat =
81        WILDCARDatpat of info |
82	SCONatpat of info * scon |
83	LONGIDatpat of info * longid op_opt |
84	RECORDatpat of info * patrow option |
85	PARatpat of info * pat
86
87  and patrow =
88        DOTDOTDOT of info |
89        PATROW of info * lab * pat * patrow option
90
91  and pat =
92        ATPATpat of info * atpat |
93        CONSpat of info * longid op_opt * atpat |
94        TYPEDpat of info * pat * ty |
95        LAYEREDpat of info * id op_opt * ty option * pat |
96	UNRES_INFIXpat of info * atpat list
97
98  and ty =
99        TYVARty of info * tyvar |
100        RECORDty of info * tyrow option |
101        CONty of info * ty list * longtycon |
102        FNty of info * ty * ty |
103        PARty of info * ty
104
105  and tyrow =
106        TYROW of info * lab * ty * tyrow option
107
108    datatype strexp =
109      STRUCTstrexp of info * strdec |
110      LONGSTRIDstrexp of info * longstrid |
111      TRANSPARENT_CONSTRAINTstrexp of info * strexp * sigexp |
112      OPAQUE_CONSTRAINTstrexp of info * strexp * sigexp |
113      APPstrexp of info * funid * strexp |
114      LETstrexp of info * strdec * strexp
115
116    and strdec =
117      DECstrdec of info * dec |
118      STRUCTUREstrdec of info * strbind |
119      LOCALstrdec of info * strdec * strdec |
120      EMPTYstrdec of info |
121      SEQstrdec of info * strdec * strdec
122
123    and strbind =
124      STRBIND of info * strid * strexp * strbind option
125
126    and sigexp =
127      SIGsigexp of info * spec |
128      SIGIDsigexp of info * sigid |
129      WHERE_TYPEsigexp of info * sigexp * tyvar list * longtycon * ty
130
131
132    and sigdec =
133      SIGNATUREsigdec of info * sigbind
134
135    and sigbind =
136      SIGBIND of info * sigid * sigexp * sigbind option
137
138			    (* Figure 7 *)
139
140    and spec =
141      VALspec of info * valdesc |
142      TYPEspec of info * typdesc |
143      EQTYPEspec of info * typdesc |
144      DATATYPEspec of info * datdesc |
145      DATATYPE_REPLICATIONspec of info * tycon * longtycon |
146      EXCEPTIONspec of info * exdesc |
147      STRUCTUREspec of info * strdesc |
148      INCLUDEspec of info * sigexp |
149      SHARING_TYPEspec of info * spec * longtycon WithInfo list |
150      SHARINGspec of info * spec * longstrid WithInfo list |
151      EMPTYspec of info |
152      SEQspec of info * spec * spec
153
154    and valdesc =
155      VALDESC of info * id * ty * valdesc option
156
157    and typdesc =
158      TYPDESC of info * tyvar list * tycon * typdesc option
159
160    and datdesc =
161      DATDESC of info * tyvar list * tycon * condesc * datdesc option
162
163    and condesc =
164      CONDESC of info * id * ty option * condesc option
165
166    and exdesc =
167      EXDESC of info * id * ty option * exdesc option
168
169    and strdesc =
170      STRDESC of info * strid * sigexp * strdesc option
171
172			    (* Figure 8 *)
173
174    and fundec =
175      FUNCTORfundec of info * funbind
176
177    and funbind =
178      FUNBIND of info * funid * strid * sigexp * strexp * funbind option
179
180    and topdec =
181      STRtopdec of info * strdec * topdec option |
182      SIGtopdec of info * sigdec * topdec option |
183      FUNtopdec of info * fundec * topdec option
184
185fun mk_IdentLab _ = let fun loop () = loop () in loop () end;
186fun mk_IntegerLab _ = let fun loop () = loop () in loop () end;
187fun PP _ = let fun loop () = loop () in loop () end;
188fun topdecOfExp _ = let fun loop () = loop () in loop () end;
189fun rightmost _ = let fun loop () = loop () in loop () end;
190fun mk_FunId _ = let fun loop () = loop () in loop () end;
191
192
193type pos = int;
194
195structure MlyValue =
196struct
197datatype svalue = VOID | ntVOID of unit ->  unit
198 | TYVAR of unit ->  (string) | ID of unit ->  (string)
199 | STRING of unit ->  (string) | REAL of unit ->  (string option)
200 | WORD of unit ->  (int option) | DIGIT of unit ->  (int)
201 | HEXINTEGER of unit ->  (int option)
202 | DECNEGINTEGER of unit ->  (int option)
203 | DECPOSINTEGER of unit ->  (int option)
204 | QUAL_STAR of unit ->  (string list)
205 | QUAL_ID of unit ->  (string list) | Char of unit ->  (int)
206 | Integer of unit ->  (int) | DecPosInteger of unit ->  (int)
207 | Label of unit ->  (lab)
208 | LongOpEqIdent of unit ->  (string list op_opt)
209 | LongOpIdent of unit ->  (string list op_opt)
210 | LongIdent of unit ->  (string list)
211 | LongTypeIdent of unit ->  (string list)
212 | TypeIdent of unit ->  (string) | EqIdent of unit ->  (string)
213 | OpIdent of unit ->  (string op_opt) | Ident of unit ->  (string)
214 | OneDec_sans_LOCAL of unit ->  (dec) | OneDec of unit ->  (dec)
215 | DIGIT_opt of unit ->  (int option)
216 | LongTypeIdentEq_seq2 of unit ->  (string list WithInfo list)
217 | LongIdentEq_seq2 of unit ->  (string list WithInfo list)
218 | LongIdent_seq1 of unit ->  (string list WithInfo list)
219 | EqIdent_seq1 of unit ->  (string list)
220 | Ident_seq2 of unit ->  (string WithInfo list)
221 | NonEmptyDec of unit ->  (dec)
222 | OneDec_or_SEMICOLON of unit ->  (dec option)
223 | TyComma_seq2 of unit ->  (ty list)
224 | TyVarComma_seq1 of unit ->  (tyvar list)
225 | TyVarSeq1 of unit ->  (tyvar list)
226 | ExpSemicolon_seq2 of unit ->  (exp list)
227 | AtPat_seq1 of unit ->  (atpat list)
228 | AtPat_seq2 of unit ->  (atpat list)
229 | AtExp_seq1 of unit ->  (atexp list)
230 | PatComma_seq2 of unit ->  (pat list)
231 | PatComma_seq1 of unit ->  (pat list)
232 | PatComma_seq0 of unit ->  (pat list)
233 | ExpComma_seq2 of unit ->  (exp list)
234 | ExpComma_seq1 of unit ->  (exp list)
235 | ExpComma_seq0 of unit ->  (exp list)
236 | OfTy_opt of unit ->  (ty option)
237 | CommaTyRow_opt of unit ->  (tyrow option)
238 | TyRow_opt of unit ->  (tyrow option)
239 | ColonTy_seq1 of unit ->  ( ( ty * pos )  list)
240 | ColonTy_opt of unit ->  (ty option)
241 | CommaPatRow_opt of unit ->  (patrow option)
242 | AsPat_opt of unit ->  (pat option)
243 | PatRow_opt of unit ->  (patrow option)
244 | ExpRow_opt of unit ->  (exprow option)
245 | AndExBind_opt of unit ->  (exbind option)
246 | BarMatch_opt of unit ->  (match option)
247 | BarConBind_opt of unit ->  (conbind option)
248 | AndDatBind_opt of unit ->  (datbind option)
249 | AndTypBind_opt of unit ->  (typbind option)
250 | BarFClause_opt of unit ->  (FClause option)
251 | AndFValBind_opt of unit ->  (FValBind option)
252 | AndFnValBind_opt of unit ->  (valbind option)
253 | AndValBind_opt of unit ->  (valbind option)
254 | CommaExpRow_opt of unit ->  (exprow option)
255 | FClause of unit ->  (FClause) | AtExp of unit ->  (atexp)
256 | ExpRow of unit ->  (exprow) | Match_ of unit ->  (match)
257 | Exp_ of unit ->  (exp) | MRule of unit ->  (mrule)
258 | Dec of unit ->  (dec) | FValBind of unit ->  (FValBind)
259 | FnValBind of unit ->  (valbind) | ValBind of unit ->  (valbind)
260 | TypBind of unit ->  (typbind)
261 | DatBind_nonzero_arity of unit ->  (datbind)
262 | DatBind_zero_arity of unit ->  (datbind)
263 | DatBind of unit ->  (datbind) | ConBind of unit ->  (conbind)
264 | ExBind of unit ->  (exbind) | AtPat of unit ->  (atpat)
265 | PatRow of unit ->  (patrow) | Pat of unit ->  (pat)
266 | SCon of unit ->  (scon) | TyVarSeq of unit ->  (tyvar list)
267 | AtomicTy of unit ->  (ty) | Ty_sans_STAR of unit ->  (ty)
268 | TupleTy of unit ->  (ty list) | Ty of unit ->  (ty)
269 | TyRow of unit ->  (tyrow)
270 | AndWhereDesc_opt of unit ->  ( ( pos * sigexp -> sigexp )  option)
271 | WhereDesc of unit ->  (pos*sigexp -> sigexp)
272 | NonEmptyStrDec of unit ->  (strdec)
273 | OneStrDec_or_SEMICOLON of unit ->  (strdec option)
274 | NonEmptySpec' of unit ->  (spec)
275 | Spec_sans_SHARING of unit ->  (spec)
276 | NonEmptySpec of unit ->  (spec)
277 | OneSpec_or_SEMICOLON of unit ->  (spec option)
278 | SEMICOLON_opt of unit ->  (unit)
279 | AndValDesc_opt of unit ->  (valdesc option)
280 | TypAbbreviationAND_seq1 of unit ->  ( ( tyvar list * tycon * ty * info * info )  list)
281 | AndTypDesc_opt of unit ->  (typdesc option)
282 | AndDatDesc_opt of unit ->  (datdesc option)
283 | BarConDesc_opt of unit ->  (condesc option)
284 | AndExDesc_opt of unit ->  (exdesc option)
285 | AndStrDesc_opt of unit ->  (strdesc option)
286 | AndSigBind_opt of unit ->  (sigbind option)
287 | AndStrBind_opt of unit ->  (strbind option)
288 | AndFunBind_opt of unit ->  (funbind option)
289 | SigExp_constraint_maybe of unit ->  (pos -> strexp -> strexp)
290 | SigExp_constraint of unit ->  (pos -> strexp -> strexp)
291 | StrExp of unit ->  (strexp) | StrDec of unit ->  (strdec)
292 | StrBind of unit ->  (strbind) | SigExp of unit ->  (sigexp)
293 | SigBind of unit ->  (sigbind) | OneSpec of unit ->  (spec)
294 | Spec of unit ->  (spec) | ValDesc of unit ->  (valdesc)
295 | TypAbbreviation of unit ->  (tyvar list*tycon*ty*info*info)
296 | TypDesc of unit ->  (typdesc)
297 | DatDesc_nonzero_arity of unit ->  (datdesc)
298 | DatDesc_zero_arity of unit ->  (datdesc)
299 | DatDesc of unit ->  (datdesc) | ConDesc of unit ->  (condesc)
300 | ExDesc of unit ->  (exdesc) | StrDesc of unit ->  (strdesc)
301 | FunBind of unit ->  (funbind) | OneStrDec of unit ->  (strdec)
302 | FunDec of unit ->  (fundec)
303 | StrDec_sans_SEMICOLON of unit ->  (strdec)
304 | SigDec of unit ->  (sigdec)
305 | TopDec_opt of unit ->  (topdec option)
306 | TopDec_ of unit ->  (topdec) | TopDec of unit ->  (topdec)
307end
308
309
310structure LrTable = struct
311   datatype t = NT of int
312end
313
314structure Actions =
315struct
316exception mlyAction of int
317
318
319(* cvr: begin *)
320local in
321val actions =
322fn (i392,defaultPos,stack,
323    (())) =>
324case (i392,stack)
325of (0,(_,(MlyValue.ID ID1,ID1left,ID1right))::rest671) => let val
326result=MlyValue.Ident(fn _ => let val ID as ID1=ID1 ()
327 in ( ID ) end
328)
329 in (LrTable.NT 113,(result,ID1left,ID1right),rest671) end
330| (1,(_,(_,STAR1left,STAR1right))::rest671) => let val result=
331MlyValue.Ident(fn _ => ( "*" ))
332 in (LrTable.NT 113,(result,STAR1left,STAR1right),rest671) end
333| (2,(_,(MlyValue.Ident Ident1,Ident1left,Ident1right))::rest671) =>
334let val result=MlyValue.OpIdent(fn _ => let val Ident as Ident1=Ident1
335 ()
336 in ( OP_OPT(Ident, false) ) end
337)
338 in (LrTable.NT 114,(result,Ident1left,Ident1right),rest671) end
339| (3,(_,(MlyValue.Ident Ident1,_,Ident1right))::(_,(_,OP1left,_))::
340rest671) => let val result=MlyValue.OpIdent(fn _ => let val Ident as
341Ident1=Ident1 ()
342 in ( OP_OPT(Ident, true) ) end
343)
344 in (LrTable.NT 114,(result,OP1left,Ident1right),rest671) end
345| (4,(_,(MlyValue.Ident Ident1,Ident1left,Ident1right))::rest671) =>
346let val result=MlyValue.EqIdent(fn _ => let val Ident as Ident1=Ident1
347 ()
348 in ( Ident ) end
349)
350 in (LrTable.NT 115,(result,Ident1left,Ident1right),rest671) end
351| (5,(_,(_,EQUALS1left,EQUALS1right))::rest671) => let val result=
352MlyValue.EqIdent(fn _ => ( "=" ))
353 in (LrTable.NT 115,(result,EQUALS1left,EQUALS1right),rest671) end
354| (6,(_,(MlyValue.ID ID1,ID1left,ID1right))::rest671) => let val
355result=MlyValue.TypeIdent(fn _ => let val ID as ID1=ID1 ()
356 in ( ID ) end
357)
358 in (LrTable.NT 116,(result,ID1left,ID1right),rest671) end
359| (7,(_,(MlyValue.TypeIdent TypeIdent1,TypeIdent1left,TypeIdent1right)
360)::rest671) => let val result=MlyValue.LongTypeIdent(fn _ => let val
361TypeIdent as TypeIdent1=TypeIdent1 ()
362 in ( [TypeIdent] ) end
363)
364 in (LrTable.NT 117,(result,TypeIdent1left,TypeIdent1right),rest671)
365 end
366| (8,(_,(MlyValue.QUAL_ID QUAL_ID1,QUAL_ID1left,QUAL_ID1right))::
367rest671) => let val result=MlyValue.LongTypeIdent(fn _ => let val
368QUAL_ID as QUAL_ID1=QUAL_ID1 ()
369 in ( QUAL_ID ) end
370)
371 in (LrTable.NT 117,(result,QUAL_ID1left,QUAL_ID1right),rest671) end
372| (9,(_,(MlyValue.Ident Ident1,Ident1left,Ident1right))::rest671) =>
373let val result=MlyValue.LongIdent(fn _ => let val Ident as Ident1=
374Ident1 ()
375 in ( [Ident] ) end
376)
377 in (LrTable.NT 118,(result,Ident1left,Ident1right),rest671) end
378| (10,(_,(MlyValue.QUAL_ID QUAL_ID1,QUAL_ID1left,QUAL_ID1right))::
379rest671) => let val result=MlyValue.LongIdent(fn _ => let val QUAL_ID
380 as QUAL_ID1=QUAL_ID1 ()
381 in ( QUAL_ID ) end
382)
383 in (LrTable.NT 118,(result,QUAL_ID1left,QUAL_ID1right),rest671) end
384| (11,(_,(MlyValue.QUAL_STAR QUAL_STAR1,QUAL_STAR1left,QUAL_STAR1right
385))::rest671) => let val result=MlyValue.LongIdent(fn _ => let val
386QUAL_STAR as QUAL_STAR1=QUAL_STAR1 ()
387 in ( QUAL_STAR ) end
388)
389 in (LrTable.NT 118,(result,QUAL_STAR1left,QUAL_STAR1right),rest671)
390 end
391| (12,(_,(MlyValue.LongIdent LongIdent1,LongIdent1left,LongIdent1right
392))::rest671) => let val result=MlyValue.LongOpIdent(fn _ => let val
393LongIdent as LongIdent1=LongIdent1 ()
394 in ( OP_OPT(LongIdent, false) ) end
395)
396 in (LrTable.NT 119,(result,LongIdent1left,LongIdent1right),rest671)
397 end
398| (13,(_,(MlyValue.LongIdent LongIdent1,_,LongIdent1right))::(_,(_,
399OP1left,_))::rest671) => let val result=MlyValue.LongOpIdent(fn _ =>
400let val LongIdent as LongIdent1=LongIdent1 ()
401 in ( OP_OPT(LongIdent, true) ) end
402)
403 in (LrTable.NT 119,(result,OP1left,LongIdent1right),rest671) end
404| (14,(_,(MlyValue.LongOpIdent LongOpIdent1,LongOpIdent1left,
405LongOpIdent1right))::rest671) => let val result=MlyValue.LongOpEqIdent
406(fn _ => let val LongOpIdent as LongOpIdent1=LongOpIdent1 ()
407 in ( LongOpIdent ) end
408)
409 in (LrTable.NT 120,(result,LongOpIdent1left,LongOpIdent1right),
410rest671) end
411| (15,(_,(_,EQUALS1left,EQUALS1right))::rest671) => let val result=
412MlyValue.LongOpEqIdent(fn _ => ( OP_OPT(["="], false) ))
413 in (LrTable.NT 120,(result,EQUALS1left,EQUALS1right),rest671) end
414| (16,(_,(_,_,EQUALS1right))::(_,(_,OP1left,_))::rest671) => let val
415result=MlyValue.LongOpEqIdent(fn _ => ( OP_OPT(["="], true) ))
416 in (LrTable.NT 120,(result,OP1left,EQUALS1right),rest671) end
417| (17,(_,(MlyValue.DIGIT DIGIT1,DIGIT1left,DIGIT1right))::rest671) =>
418let val result=MlyValue.DIGIT_opt(fn _ => let val DIGIT as DIGIT1=
419DIGIT1 ()
420 in ( SOME DIGIT ) end
421)
422 in (LrTable.NT 110,(result,DIGIT1left,DIGIT1right),rest671) end
423| (18,rest671) => let val result=MlyValue.DIGIT_opt(fn _ => ( NONE ))
424 in (LrTable.NT 110,(result,defaultPos,defaultPos),rest671) end
425| (19,(_,(MlyValue.DECPOSINTEGER DECPOSINTEGER1,DECPOSINTEGERleft as
426DECPOSINTEGER1left,DECPOSINTEGER1right))::rest671) => let val result=
427MlyValue.DecPosInteger(fn _ => let val DECPOSINTEGER as DECPOSINTEGER1
428=DECPOSINTEGER1 ()
429 in (
430 (* raise_lexical_error_if_none *)
431			    DECPOSINTEGERleft; DECPOSINTEGER; raise Fail "bogus")
432 end
433)
434 in (LrTable.NT 122,(result,DECPOSINTEGER1left,DECPOSINTEGER1right),
435rest671) end
436| (20,(_,(MlyValue.DIGIT DIGIT1,DIGIT1left,DIGIT1right))::rest671) =>
437let val result=MlyValue.DecPosInteger(fn _ => let val DIGIT as DIGIT1=
438DIGIT1 ()
439 in ( DIGIT ) end
440)
441 in (LrTable.NT 122,(result,DIGIT1left,DIGIT1right),rest671) end
442| (21,(_,(MlyValue.Ident Ident1,Ident1left,Ident1right))::rest671) =>
443let val result=MlyValue.Label(fn _ => let val Ident as Ident1=Ident1
444()
445 in ( mk_IdentLab Ident ) end
446)
447 in (LrTable.NT 121,(result,Ident1left,Ident1right),rest671) end
448| (22,(_,(MlyValue.DecPosInteger DecPosInteger1,DecPosInteger1left,
449DecPosInteger1right))::rest671) => let val result=MlyValue.Label(fn _
450 => let val DecPosInteger as DecPosInteger1=DecPosInteger1 ()
451 in ( mk_IntegerLab DecPosInteger ) end
452)
453 in (LrTable.NT 121,(result,DecPosInteger1left,DecPosInteger1right),
454rest671) end
455| (23,(_,(MlyValue.Ident_seq2 Ident_seq21,_,Ident_seq21right))::(_,(
456MlyValue.Ident Ident1,Identleft as Ident1left,Identright))::rest671)
457 => let val result=MlyValue.Ident_seq2(fn _ => let val Ident as Ident1
458=Ident1 ()
459val Ident_seq2 as Ident_seq21=Ident_seq21 ()
460 in (
461 WITH_INFO(PP Identleft Identright, Ident)
462                          :: Ident_seq2
463
464) end
465)
466 in (LrTable.NT 105,(result,Ident1left,Ident_seq21right),rest671) end
467| (24,(_,(MlyValue.Ident Ident2,Ident2left,Ident2right))::(_,(
468MlyValue.Ident Ident1,Ident1left,Ident1right))::rest671) => let val
469result=MlyValue.Ident_seq2(fn _ => let val Ident1=Ident1 ()
470val Ident2=Ident2 ()
471 in (
472 [WITH_INFO(PP Ident1left Ident1right, Ident1),
473			   WITH_INFO(PP Ident2left Ident2right, Ident2)]
474) end
475)
476 in (LrTable.NT 105,(result,Ident1left,Ident2right),rest671) end
477| (25,(_,(MlyValue.EqIdent_seq1 EqIdent_seq11,_,EqIdent_seq11right))::
478(_,(MlyValue.EqIdent EqIdent1,EqIdent1left,_))::rest671) => let val
479result=MlyValue.EqIdent_seq1(fn _ => let val EqIdent as EqIdent1=
480EqIdent1 ()
481val EqIdent_seq1 as EqIdent_seq11=EqIdent_seq11 ()
482 in ( EqIdent :: EqIdent_seq1 ) end
483)
484 in (LrTable.NT 106,(result,EqIdent1left,EqIdent_seq11right),rest671)
485 end
486| (26,(_,(MlyValue.EqIdent EqIdent1,EqIdent1left,EqIdent1right))::
487rest671) => let val result=MlyValue.EqIdent_seq1(fn _ => let val
488EqIdent as EqIdent1=EqIdent1 ()
489 in ( [EqIdent] ) end
490)
491 in (LrTable.NT 106,(result,EqIdent1left,EqIdent1right),rest671) end
492| (27,(_,(MlyValue.LongIdent_seq1 LongIdent_seq11,_,
493LongIdent_seq11right))::(_,(MlyValue.LongIdent LongIdent1,
494LongIdentleft as LongIdent1left,LongIdentright))::rest671) => let val
495result=MlyValue.LongIdent_seq1(fn _ => let val LongIdent as LongIdent1
496=LongIdent1 ()
497val LongIdent_seq1 as LongIdent_seq11=LongIdent_seq11 ()
498 in (
499 WITH_INFO(PP LongIdentleft LongIdentright,
500                                    LongIdent
501                                   ) :: LongIdent_seq1
502
503) end
504)
505 in (LrTable.NT 107,(result,LongIdent1left,LongIdent_seq11right),
506rest671) end
507| (28,(_,(MlyValue.LongIdent LongIdent1,LongIdentleft as
508LongIdent1left,LongIdentright as LongIdent1right))::rest671) => let
509val result=MlyValue.LongIdent_seq1(fn _ => let val LongIdent as
510LongIdent1=LongIdent1 ()
511 in (
512 [WITH_INFO(PP LongIdentleft LongIdentright,
513                                     LongIdent
514                                    )
515                          ]
516
517) end
518)
519 in (LrTable.NT 107,(result,LongIdent1left,LongIdent1right),rest671)
520 end
521| (29,(_,(MlyValue.LongIdentEq_seq2 LongIdentEq_seq21,_,
522LongIdentEq_seq21right))::_::(_,(MlyValue.LongIdent LongIdent1,
523LongIdentleft as LongIdent1left,LongIdentright))::rest671) => let val
524result=MlyValue.LongIdentEq_seq2(fn _ => let val LongIdent as
525LongIdent1=LongIdent1 ()
526val LongIdentEq_seq2 as LongIdentEq_seq21=LongIdentEq_seq21 ()
527 in (
528 WITH_INFO(PP LongIdentleft LongIdentright, LongIdent)
529                          :: LongIdentEq_seq2
530
531) end
532)
533 in (LrTable.NT 108,(result,LongIdent1left,LongIdentEq_seq21right),
534rest671) end
535| (30,(_,(MlyValue.LongIdent LongIdent2,LongIdent2left,LongIdent2right
536))::_::(_,(MlyValue.LongIdent LongIdent1,LongIdent1left,
537LongIdent1right))::rest671) => let val result=
538MlyValue.LongIdentEq_seq2(fn _ => let val LongIdent1=LongIdent1 ()
539val LongIdent2=LongIdent2 ()
540 in (
541 [WITH_INFO(PP LongIdent1left LongIdent1right,
542                                     LongIdent1
543                                    ),
544                           WITH_INFO(PP LongIdent2left LongIdent2right,
545                                     LongIdent2
546                                    )
547                          ]
548
549) end
550)
551 in (LrTable.NT 108,(result,LongIdent1left,LongIdent2right),rest671)
552 end
553| (31,(_,(MlyValue.LongTypeIdentEq_seq2 LongTypeIdentEq_seq21,_,
554LongTypeIdentEq_seq21right))::_::(_,(MlyValue.LongTypeIdent
555LongTypeIdent1,LongTypeIdentleft as LongTypeIdent1left,
556LongTypeIdentright))::rest671) => let val result=
557MlyValue.LongTypeIdentEq_seq2(fn _ => let val LongTypeIdent as
558LongTypeIdent1=LongTypeIdent1 ()
559val LongTypeIdentEq_seq2 as LongTypeIdentEq_seq21=
560LongTypeIdentEq_seq21 ()
561 in (
562 WITH_INFO(PP LongTypeIdentleft LongTypeIdentright,
563                                    LongTypeIdent
564                                   )
565                          :: LongTypeIdentEq_seq2
566
567) end
568)
569 in (LrTable.NT 109,(result,LongTypeIdent1left,
570LongTypeIdentEq_seq21right),rest671) end
571| (32,(_,(MlyValue.LongTypeIdent LongTypeIdent2,LongTypeIdent2left,
572LongTypeIdent2right))::_::(_,(MlyValue.LongTypeIdent LongTypeIdent1,
573LongTypeIdent1left,LongTypeIdent1right))::rest671) => let val result=
574MlyValue.LongTypeIdentEq_seq2(fn _ => let val LongTypeIdent1=
575LongTypeIdent1 ()
576val LongTypeIdent2=LongTypeIdent2 ()
577 in (
578 [WITH_INFO(PP LongTypeIdent1left LongTypeIdent1right,
579                                     LongTypeIdent1
580                                    ),
581                           WITH_INFO(PP LongTypeIdent2left LongTypeIdent2right,
582                                     LongTypeIdent2
583                                    )
584                          ]
585
586) end
587)
588 in (LrTable.NT 109,(result,LongTypeIdent1left,LongTypeIdent2right),
589rest671) end
590| (33,(_,(MlyValue.TopDec_ TopDec_1,TopDec_1left,TopDec_1right))::
591rest671) => let val result=MlyValue.TopDec(fn _ => let val TopDec_ as
592TopDec_1=TopDec_1 ()
593 in ( TopDec_ ) end
594)
595 in (LrTable.NT 0,(result,TopDec_1left,TopDec_1right),rest671) end
596| (34,(_,(MlyValue.Exp_ Exp_1,Exp_1left,Exp_1right))::rest671) => let
597val result=MlyValue.TopDec(fn _ => let val Exp_ as Exp_1=Exp_1 ()
598 in ( topdecOfExp Exp_ ) end
599)
600 in (LrTable.NT 0,(result,Exp_1left,Exp_1right),rest671) end
601| (35,rest671) => let val result=MlyValue.TopDec(fn _ => (
602 STRtopdec(PP defaultPos defaultPos,
603				    EMPTYstrdec(PP defaultPos defaultPos), NONE)
604))
605 in (LrTable.NT 0,(result,defaultPos,defaultPos),rest671) end
606| (36,(_,(MlyValue.TopDec_opt TopDec_opt1,_,TopDec_opt1right))::(_,(
607MlyValue.OneStrDec OneStrDec1,OneStrDecleft as OneStrDec1left,_))::
608rest671) => let val result=MlyValue.TopDec_(fn _ => let val OneStrDec
609 as OneStrDec1=OneStrDec1 ()
610val TopDec_opt as TopDec_opt1=TopDec_opt1 ()
611 in (
612 STRtopdec (PP OneStrDecleft
613				       (rightmost  OneStrDec
614				                   TopDec_opt),
615				     OneStrDec, TopDec_opt)
616) end
617)
618 in (LrTable.NT 1,(result,OneStrDec1left,TopDec_opt1right),rest671)
619 end
620| (37,(_,(MlyValue.TopDec_opt TopDec_opt1,_,TopDec_opt1right))::(_,(
621MlyValue.SigDec SigDec1,SigDecleft as SigDec1left,_))::rest671) =>
622let val result=MlyValue.TopDec_(fn _ => let val SigDec as SigDec1=
623SigDec1 ()
624val TopDec_opt as TopDec_opt1=TopDec_opt1 ()
625 in (
626 SIGtopdec (PP SigDecleft
627				       (rightmost  SigDec
628				                   TopDec_opt),
629				     SigDec, TopDec_opt)
630) end
631)
632 in (LrTable.NT 1,(result,SigDec1left,TopDec_opt1right),rest671) end
633| (38,(_,(MlyValue.TopDec_opt TopDec_opt1,_,TopDec_opt1right))::(_,(
634MlyValue.FunDec FunDec1,FunDecleft as FunDec1left,_))::rest671) =>
635let val result=MlyValue.TopDec_(fn _ => let val FunDec as FunDec1=
636FunDec1 ()
637val TopDec_opt as TopDec_opt1=TopDec_opt1 ()
638 in (
639 FUNtopdec (PP FunDecleft
640				       (rightmost  FunDec
641				                   TopDec_opt),
642				     FunDec, TopDec_opt)
643) end
644)
645 in (LrTable.NT 1,(result,FunDec1left,TopDec_opt1right),rest671) end
646| (39,(_,(MlyValue.TopDec_ TopDec_1,TopDec_1left,TopDec_1right))::
647rest671) => let val result=MlyValue.TopDec_opt(fn _ => let val TopDec_
648 as TopDec_1=TopDec_1 ()
649 in ( SOME TopDec_ ) end
650)
651 in (LrTable.NT 2,(result,TopDec_1left,TopDec_1right),rest671) end
652| (40,rest671) => let val result=MlyValue.TopDec_opt(fn _ => ( NONE ))
653 in (LrTable.NT 2,(result,defaultPos,defaultPos),rest671) end
654| (41,(_,(MlyValue.AndFunBind_opt AndFunBind_opt1,_,
655AndFunBind_opt1right))::(_,(MlyValue.StrExp StrExp1,_,StrExpright))::_
656::(_,(MlyValue.SigExp_constraint_maybe SigExp_constraint_maybe1,
657SigExp_constraint_maybeleft,_))::_::(_,(MlyValue.SigExp SigExp1,_,_))
658::_::(_,(MlyValue.Ident Ident2,_,_))::_::(_,(MlyValue.Ident Ident1,
659Ident1left,_))::rest671) => let val result=MlyValue.FunBind(fn _ =>
660let val Ident1=Ident1 ()
661val Ident2=Ident2 ()
662val SigExp as SigExp1=SigExp1 ()
663val SigExp_constraint_maybe as SigExp_constraint_maybe1=
664SigExp_constraint_maybe1 ()
665val StrExp as StrExp1=StrExp1 ()
666val AndFunBind_opt as AndFunBind_opt1=AndFunBind_opt1 ()
667 in (
668 let val i_body = PP SigExp_constraint_maybeleft StrExpright
669                              val empty_strdec = EMPTYstrdec (PP defaultPos defaultPos)
670                          in
671                             FUNBIND (PP Ident1left
672				     (rightmost  StrExp
673				                 AndFunBind_opt),
674                                   mk_FunId Ident1, mk_StrId Ident2, SigExp,
675                                   LETstrexp(i_body, empty_strdec,
676                                             SigExp_constraint_maybe SigExp_constraint_maybeleft StrExp),
677                                   AndFunBind_opt)
678                          end
679) end
680)
681 in (LrTable.NT 7,(result,Ident1left,AndFunBind_opt1right),rest671)
682 end
683| (42,(_,(MlyValue.AndFunBind_opt AndFunBind_opt1,_,
684AndFunBind_opt1right))::(_,(MlyValue.StrExp StrExp1,_,StrExpright))::_
685::(_,(MlyValue.SigExp_constraint_maybe SigExp_constraint_maybe1,
686SigExp_constraint_maybeleft,_))::_::(_,(MlyValue.Spec Spec1,_,_))::_::
687(_,(MlyValue.Ident Ident1,Ident1left,_))::rest671) => let val result=
688MlyValue.FunBind(fn _ => let val Ident as Ident1=Ident1 ()
689val Spec as Spec1=Spec1 ()
690val SigExp_constraint_maybe as SigExp_constraint_maybe1=
691SigExp_constraint_maybe1 ()
692val StrExp as StrExp1=StrExp1 ()
693val AndFunBind_opt as AndFunBind_opt1=AndFunBind_opt1 ()
694 in (
695 let val strid_nu = inventStrId ()
696			      val i_body = PP SigExp_constraint_maybeleft StrExpright
697			      val i_spec =  Spec
698                          in FUNBIND
699			       (PP Ident1left
700				  (rightmost  StrExp
701				              AndFunBind_opt),
702				mk_FunId Ident, strid_nu,
703				SIGsigexp (i_spec, Spec),
704				LETstrexp
705				  (i_body,
706				   DECstrdec
707				     (i_spec,
708				      OPENdec (i_spec,
709					       [WITH_INFO (i_spec, longStrIdOfStrId strid_nu)])),
710				   SigExp_constraint_maybe SigExp_constraint_maybeleft StrExp),
711				AndFunBind_opt)
712                          end
713) end
714)
715 in (LrTable.NT 7,(result,Ident1left,AndFunBind_opt1right),rest671)
716 end
717| (43,(_,(MlyValue.SigExp_constraint SigExp_constraint1,
718SigExp_constraint1left,SigExp_constraint1right))::rest671) => let val
719result=MlyValue.SigExp_constraint_maybe(fn _ => let val
720SigExp_constraint as SigExp_constraint1=SigExp_constraint1 ()
721 in ( SigExp_constraint ) end
722)
723 in (LrTable.NT 25,(result,SigExp_constraint1left,
724SigExp_constraint1right),rest671) end
725| (44,rest671) => let val result=MlyValue.SigExp_constraint_maybe(fn _
726 => ( (fn _ => fn strexp => strexp) ))
727 in (LrTable.NT 25,(result,defaultPos,defaultPos),rest671) end
728| (45,(_,(MlyValue.SigExp SigExp1,_,SigExpright as SigExp1right))::(_,
729(_,COLON1left,_))::rest671) => let val result=
730MlyValue.SigExp_constraint(fn _ => let val SigExp as SigExp1=SigExp1
731()
732 in (
733 (fn leftpos => fn strexp =>
734			   TRANSPARENT_CONSTRAINTstrexp
735			     (PP leftpos SigExpright, strexp, SigExp))
736) end
737)
738 in (LrTable.NT 24,(result,COLON1left,SigExp1right),rest671) end
739| (46,(_,(MlyValue.SigExp SigExp1,_,SigExpright as SigExp1right))::(_,
740(_,COLONGREATER1left,_))::rest671) => let val result=
741MlyValue.SigExp_constraint(fn _ => let val SigExp as SigExp1=SigExp1
742()
743 in (
744 (fn leftpos => fn strexp =>
745			   OPAQUE_CONSTRAINTstrexp
746			     (PP leftpos SigExpright, strexp, SigExp))
747) end
748)
749 in (LrTable.NT 24,(result,COLONGREATER1left,SigExp1right),rest671)
750 end
751| (47,(_,(MlyValue.FunBind FunBind1,_,FunBind1right))::(_,(_,AND1left,
752_))::rest671) => let val result=MlyValue.AndFunBind_opt(fn _ => let
753val FunBind as FunBind1=FunBind1 ()
754 in ( SOME FunBind ) end
755)
756 in (LrTable.NT 26,(result,AND1left,FunBind1right),rest671) end
757| (48,rest671) => let val result=MlyValue.AndFunBind_opt(fn _ => (
758 NONE ))
759 in (LrTable.NT 26,(result,defaultPos,defaultPos),rest671) end
760| (49,(_,(MlyValue.FunBind FunBind1,_,FunBind1right))::(_,(_,
761FUNCTORleft as FUNCTOR1left,_))::rest671) => let val result=
762MlyValue.FunDec(fn _ => let val FunBind as FunBind1=FunBind1 ()
763 in (
764 FUNCTORfundec (PP FUNCTORleft (right (info_on_funbind FunBind)),
765					 FunBind)
766) end
767)
768 in (LrTable.NT 5,(result,FUNCTOR1left,FunBind1right),rest671) end
769| (50,(_,(MlyValue.AndStrDesc_opt AndStrDesc_opt1,_,
770AndStrDesc_opt1right))::(_,(MlyValue.SigExp SigExp1,_,_))::_::(_,(
771MlyValue.Ident Ident1,Identleft as Ident1left,_))::rest671) => let
772val result=MlyValue.StrDesc(fn _ => let val Ident as Ident1=Ident1 ()
773val SigExp as SigExp1=SigExp1 ()
774val AndStrDesc_opt as AndStrDesc_opt1=AndStrDesc_opt1 ()
775 in (
776 STRDESC (PP Identleft
777				     (rightmost info_on_sigexp SigExp
778				                info_on_strdesc AndStrDesc_opt),
779				   mk_StrId Ident, SigExp, AndStrDesc_opt)
780) end
781)
782 in (LrTable.NT 8,(result,Ident1left,AndStrDesc_opt1right),rest671)
783 end
784| (51,(_,(MlyValue.StrDesc StrDesc1,_,StrDesc1right))::(_,(_,AND1left,
785_))::rest671) => let val result=MlyValue.AndStrDesc_opt(fn _ => let
786val StrDesc as StrDesc1=StrDesc1 ()
787 in ( SOME StrDesc ) end
788)
789 in (LrTable.NT 29,(result,AND1left,StrDesc1right),rest671) end
790| (52,rest671) => let val result=MlyValue.AndStrDesc_opt(fn _ => (
791 NONE ))
792 in (LrTable.NT 29,(result,defaultPos,defaultPos),rest671) end
793| (53,(_,(MlyValue.AndExDesc_opt AndExDesc_opt1,_,AndExDesc_opt1right)
794)::(_,(MlyValue.OfTy_opt OfTy_opt1,_,_))::(_,(MlyValue.Ident Ident1,
795Identleft as Ident1left,Identright))::rest671) => let val result=
796MlyValue.ExDesc(fn _ => let val Ident as Ident1=Ident1 ()
797val OfTy_opt as OfTy_opt1=OfTy_opt1 ()
798val AndExDesc_opt as AndExDesc_opt1=AndExDesc_opt1 ()
799 in (
800 EXDESC (PP Identleft
801				    (rightmost_of_three  Identright
802				                get_info_ty OfTy_opt
803						info_on_exdesc AndExDesc_opt),
804				  mk_Id Ident, OfTy_opt, AndExDesc_opt)
805) end
806)
807 in (LrTable.NT 9,(result,Ident1left,AndExDesc_opt1right),rest671) end
808| (54,(_,(MlyValue.ExDesc ExDesc1,_,ExDesc1right))::(_,(_,AND1left,_))
809::rest671) => let val result=MlyValue.AndExDesc_opt(fn _ => let val
810ExDesc as ExDesc1=ExDesc1 ()
811 in ( SOME ExDesc ) end
812)
813 in (LrTable.NT 30,(result,AND1left,ExDesc1right),rest671) end
814| (55,rest671) => let val result=MlyValue.AndExDesc_opt(fn _ => (
815 NONE ))
816 in (LrTable.NT 30,(result,defaultPos,defaultPos),rest671) end
817| (56,(_,(MlyValue.BarConDesc_opt BarConDesc_opt1,_,
818BarConDesc_opt1right))::(_,(MlyValue.OfTy_opt OfTy_opt1,_,_))::(_,(
819MlyValue.OpIdent OpIdent1,OpIdentleft as OpIdent1left,OpIdentright))::
820rest671) => let val result=MlyValue.ConDesc(fn _ => let val OpIdent
821 as OpIdent1=OpIdent1 ()
822val OfTy_opt as OfTy_opt1=OfTy_opt1 ()
823val BarConDesc_opt as BarConDesc_opt1=BarConDesc_opt1 ()
824 in (
825 let val OP_OPT (id, _) = OpIdent
826                          in CONDESC
827			       (PP OpIdentleft
828				  (rightmost_of_three OpIdentright
829				              get_info_ty OfTy_opt
830					      info_on_condesc BarConDesc_opt),
831				mk_Id id, OfTy_opt, BarConDesc_opt)
832                          end
833) end
834)
835 in (LrTable.NT 10,(result,OpIdent1left,BarConDesc_opt1right),rest671)
836 end
837| (57,(_,(MlyValue.ConDesc ConDesc1,_,ConDesc1right))::(_,(_,BAR1left,
838_))::rest671) => let val result=MlyValue.BarConDesc_opt(fn _ => let
839val ConDesc as ConDesc1=ConDesc1 ()
840 in ( SOME ConDesc ) end
841)
842 in (LrTable.NT 31,(result,BAR1left,ConDesc1right),rest671) end
843| (58,rest671) => let val result=MlyValue.BarConDesc_opt(fn _ => (
844 NONE ))
845 in (LrTable.NT 31,(result,defaultPos,defaultPos),rest671) end
846| (59,(_,(MlyValue.AndDatDesc_opt AndDatDesc_opt1,_,
847AndDatDesc_opt1right))::(_,(MlyValue.ConDesc ConDesc1,_,_))::_::(_,(
848MlyValue.TypeIdent TypeIdent1,_,_))::(_,(MlyValue.TyVarSeq TyVarSeq1,
849TyVarSeqleft as TyVarSeq1left,_))::rest671) => let val result=
850MlyValue.DatDesc(fn _ => let val TyVarSeq as TyVarSeq1=TyVarSeq1 ()
851val TypeIdent as TypeIdent1=TypeIdent1 ()
852val ConDesc as ConDesc1=ConDesc1 ()
853val AndDatDesc_opt as AndDatDesc_opt1=AndDatDesc_opt1 ()
854 in (
855 DATDESC (PP TyVarSeqleft
856				     (rightmost info_on_condesc ConDesc
857				                info_on_datdesc AndDatDesc_opt),
858				   TyVarSeq, mk_TyCon TypeIdent,
859				   ConDesc, AndDatDesc_opt)
860) end
861)
862 in (LrTable.NT 11,(result,TyVarSeq1left,AndDatDesc_opt1right),rest671
863) end
864| (60,(_,(MlyValue.AndDatDesc_opt AndDatDesc_opt1,_,
865AndDatDesc_opt1right))::(_,(MlyValue.ConDesc ConDesc1,_,_))::_::(_,(
866MlyValue.TypeIdent TypeIdent1,TypeIdentleft as TypeIdent1left,_))::
867rest671) => let val result=MlyValue.DatDesc_zero_arity(fn _ => let
868val TypeIdent as TypeIdent1=TypeIdent1 ()
869val ConDesc as ConDesc1=ConDesc1 ()
870val AndDatDesc_opt as AndDatDesc_opt1=AndDatDesc_opt1 ()
871 in (
872 DATDESC (PP TypeIdentleft
873				     (rightmost info_on_condesc ConDesc
874				                info_on_datdesc AndDatDesc_opt),
875				   [], mk_TyCon TypeIdent,
876				   ConDesc, AndDatDesc_opt)
877) end
878)
879 in (LrTable.NT 12,(result,TypeIdent1left,AndDatDesc_opt1right),
880rest671) end
881| (61,(_,(MlyValue.AndDatDesc_opt AndDatDesc_opt1,_,
882AndDatDesc_opt1right))::(_,(MlyValue.ConDesc ConDesc1,_,_))::_::(_,(
883MlyValue.TypeIdent TypeIdent1,_,_))::(_,(MlyValue.TyVarSeq1 TyVarSeq11
884,TyVarSeq1left as TyVarSeq11left,_))::rest671) => let val result=
885MlyValue.DatDesc_nonzero_arity(fn _ => let val TyVarSeq1 as TyVarSeq11
886=TyVarSeq11 ()
887val TypeIdent as TypeIdent1=TypeIdent1 ()
888val ConDesc as ConDesc1=ConDesc1 ()
889val AndDatDesc_opt as AndDatDesc_opt1=AndDatDesc_opt1 ()
890 in (
891 DATDESC (PP TyVarSeq1left
892				     (rightmost info_on_condesc ConDesc
893				                info_on_datdesc AndDatDesc_opt),
894				   TyVarSeq1, mk_TyCon TypeIdent,
895				   ConDesc, AndDatDesc_opt)
896) end
897)
898 in (LrTable.NT 13,(result,TyVarSeq11left,AndDatDesc_opt1right),
899rest671) end
900| (62,(_,(MlyValue.DatDesc DatDesc1,_,DatDesc1right))::(_,(_,AND1left,
901_))::rest671) => let val result=MlyValue.AndDatDesc_opt(fn _ => let
902val DatDesc as DatDesc1=DatDesc1 ()
903 in ( SOME DatDesc ) end
904)
905 in (LrTable.NT 32,(result,AND1left,DatDesc1right),rest671) end
906| (63,rest671) => let val result=MlyValue.AndDatDesc_opt(fn _ => (
907 NONE ))
908 in (LrTable.NT 32,(result,defaultPos,defaultPos),rest671) end
909| (64,(_,(MlyValue.AndTypDesc_opt AndTypDesc_opt1,_,
910AndTypDesc_opt1right))::(_,(MlyValue.TypeIdent TypeIdent1,_,
911TypeIdentright))::(_,(MlyValue.TyVarSeq TyVarSeq1,TyVarSeqleft as
912TyVarSeq1left,_))::rest671) => let val result=MlyValue.TypDesc(fn _
913 => let val TyVarSeq as TyVarSeq1=TyVarSeq1 ()
914val TypeIdent as TypeIdent1=TypeIdent1 ()
915val AndTypDesc_opt as AndTypDesc_opt1=AndTypDesc_opt1 ()
916 in (
917 TYPDESC (PP TyVarSeqleft
918				     (rightmost' TypeIdentright info_on_typdesc AndTypDesc_opt),
919				   TyVarSeq, mk_TyCon TypeIdent, AndTypDesc_opt)
920) end
921)
922 in (LrTable.NT 14,(result,TyVarSeq1left,AndTypDesc_opt1right),rest671
923) end
924| (65,(_,(MlyValue.TypDesc TypDesc1,_,TypDesc1right))::(_,(_,AND1left,
925_))::rest671) => let val result=MlyValue.AndTypDesc_opt(fn _ => let
926val TypDesc as TypDesc1=TypDesc1 ()
927 in ( SOME TypDesc ) end
928)
929 in (LrTable.NT 33,(result,AND1left,TypDesc1right),rest671) end
930| (66,rest671) => let val result=MlyValue.AndTypDesc_opt(fn _ => (
931 NONE ))
932 in (LrTable.NT 33,(result,defaultPos,defaultPos),rest671) end
933| (67,(_,(MlyValue.TypAbbreviationAND_seq1 TypAbbreviationAND_seq11,_,
934TypAbbreviationAND_seq11right))::_::(_,(MlyValue.TypAbbreviation
935TypAbbreviation1,TypAbbreviation1left,_))::rest671) => let val result=
936MlyValue.TypAbbreviationAND_seq1(fn _ => let val TypAbbreviation as
937TypAbbreviation1=TypAbbreviation1 ()
938val TypAbbreviationAND_seq1 as TypAbbreviationAND_seq11=
939TypAbbreviationAND_seq11 ()
940 in ( TypAbbreviation :: TypAbbreviationAND_seq1 ) end
941)
942 in (LrTable.NT 34,(result,TypAbbreviation1left,
943TypAbbreviationAND_seq11right),rest671) end
944| (68,(_,(MlyValue.TypAbbreviation TypAbbreviation1,
945TypAbbreviation1left,TypAbbreviation1right))::rest671) => let val
946result=MlyValue.TypAbbreviationAND_seq1(fn _ => let val
947TypAbbreviation as TypAbbreviation1=TypAbbreviation1 ()
948 in ( [TypAbbreviation] ) end
949)
950 in (LrTable.NT 34,(result,TypAbbreviation1left,TypAbbreviation1right)
951,rest671) end
952| (69,(_,(MlyValue.Ty Ty1,_,Tyright as Ty1right))::_::(_,(
953MlyValue.TypeIdent TypeIdent1,_,TypeIdentright))::(_,(
954MlyValue.TyVarSeq TyVarSeq1,TyVarSeqleft as TyVarSeq1left,_))::rest671
955) => let val result=MlyValue.TypAbbreviation(fn _ => let val TyVarSeq
956 as TyVarSeq1=TyVarSeq1 ()
957val TypeIdent as TypeIdent1=TypeIdent1 ()
958val Ty as Ty1=Ty1 ()
959 in (
960 (TyVarSeq, mk_TyCon TypeIdent, Ty,
961			   PP TyVarSeqleft Tyright, PP TyVarSeqleft TypeIdentright)
962) end
963)
964 in (LrTable.NT 15,(result,TyVarSeq1left,Ty1right),rest671) end
965| (70,(_,(MlyValue.AndValDesc_opt AndValDesc_opt1,_,
966AndValDesc_opt1right))::(_,(MlyValue.Ty Ty1,_,Tyright))::_::(_,(
967MlyValue.EqIdent EqIdent1,EqIdentleft as EqIdent1left,_))::rest671)
968 => let val result=MlyValue.ValDesc(fn _ => let val EqIdent as
969EqIdent1=EqIdent1 ()
970val Ty as Ty1=Ty1 ()
971val AndValDesc_opt as AndValDesc_opt1=AndValDesc_opt1 ()
972 in (
973 VALDESC (PP EqIdentleft
974				     (rightmost' Tyright info_on_valdesc AndValDesc_opt),
975				   mk_Id EqIdent, Ty, AndValDesc_opt)
976) end
977)
978 in (LrTable.NT 16,(result,EqIdent1left,AndValDesc_opt1right),rest671)
979 end
980| (71,(_,(MlyValue.ValDesc ValDesc1,_,ValDesc1right))::(_,(_,AND1left,
981_))::rest671) => let val result=MlyValue.AndValDesc_opt(fn _ => let
982val ValDesc as ValDesc1=ValDesc1 ()
983 in ( SOME ValDesc ) end
984)
985 in (LrTable.NT 35,(result,AND1left,ValDesc1right),rest671) end
986| (72,rest671) => let val result=MlyValue.AndValDesc_opt(fn _ => (
987 NONE ))
988 in (LrTable.NT 35,(result,defaultPos,defaultPos),rest671) end
989| (73,(_,(MlyValue.ValDesc ValDesc1,_,ValDesc1right))::(_,(_,VALleft
990 as VAL1left,_))::rest671) => let val result=MlyValue.OneSpec(fn _ =>
991let val ValDesc as ValDesc1=ValDesc1 ()
992 in (
993 VALspec (PP VALleft (right (info_on_valdesc ValDesc)),
994				   ValDesc)
995) end
996)
997 in (LrTable.NT 18,(result,VAL1left,ValDesc1right),rest671) end
998| (74,(_,(MlyValue.TypDesc TypDesc1,_,TypDesc1right))::(_,(_,TYPEleft
999 as TYPE1left,_))::rest671) => let val result=MlyValue.OneSpec(fn _
1000 => let val TypDesc as TypDesc1=TypDesc1 ()
1001 in (
1002 TYPEspec (PP TYPEleft (right (info_on_typdesc TypDesc)),
1003				    TypDesc)
1004) end
1005)
1006 in (LrTable.NT 18,(result,TYPE1left,TypDesc1right),rest671) end
1007| (75,(_,(MlyValue.TypDesc TypDesc1,_,TypDesc1right))::(_,(_,
1008EQTYPEleft as EQTYPE1left,_))::rest671) => let val result=
1009MlyValue.OneSpec(fn _ => let val TypDesc as TypDesc1=TypDesc1 ()
1010 in (
1011 EQTYPEspec (PP EQTYPEleft (right (info_on_typdesc TypDesc)),
1012				      TypDesc)
1013) end
1014)
1015 in (LrTable.NT 18,(result,EQTYPE1left,TypDesc1right),rest671) end
1016| (76,(_,(MlyValue.DatDesc_zero_arity DatDesc_zero_arity1,_,
1017DatDesc_zero_arity1right))::(_,(_,DATATYPEleft as DATATYPE1left,_))::
1018rest671) => let val result=MlyValue.OneSpec(fn _ => let val
1019DatDesc_zero_arity as DatDesc_zero_arity1=DatDesc_zero_arity1 ()
1020 in (
1021 DATATYPEspec (PP DATATYPEleft
1022					  (right (info_on_datdesc DatDesc_zero_arity)),
1023				        DatDesc_zero_arity)
1024) end
1025)
1026 in (LrTable.NT 18,(result,DATATYPE1left,DatDesc_zero_arity1right),
1027rest671) end
1028| (77,(_,(MlyValue.DatDesc_nonzero_arity DatDesc_nonzero_arity1,_,
1029DatDesc_nonzero_arity1right))::(_,(_,DATATYPEleft as DATATYPE1left,_))
1030::rest671) => let val result=MlyValue.OneSpec(fn _ => let val
1031DatDesc_nonzero_arity as DatDesc_nonzero_arity1=DatDesc_nonzero_arity1
1032 ()
1033 in (
1034 DATATYPEspec (PP DATATYPEleft
1035					  (right (info_on_datdesc DatDesc_nonzero_arity)),
1036					DatDesc_nonzero_arity)
1037) end
1038)
1039 in (LrTable.NT 18,(result,DATATYPE1left,DatDesc_nonzero_arity1right),
1040rest671) end
1041| (78,(_,(MlyValue.LongTypeIdent LongTypeIdent1,_,LongTypeIdentright
1042 as LongTypeIdent1right))::_::_::(_,(MlyValue.TypeIdent TypeIdent1,_,_
1043))::(_,(_,DATATYPE1left,_))::rest671) => let val result=
1044MlyValue.OneSpec(fn _ => let val TypeIdent as TypeIdent1=TypeIdent1 ()
1045val LongTypeIdent as LongTypeIdent1=LongTypeIdent1 ()
1046 in (
1047 DATATYPE_REPLICATIONspec
1048			    (PP DATATYPE1left LongTypeIdentright,
1049			     mk_TyCon TypeIdent, mk_LongTyCon LongTypeIdent)
1050) end
1051)
1052 in (LrTable.NT 18,(result,DATATYPE1left,LongTypeIdent1right),rest671)
1053 end
1054| (79,(_,(MlyValue.ExDesc ExDesc1,_,ExDesc1right))::(_,(_,
1055EXCEPTIONleft as EXCEPTION1left,_))::rest671) => let val result=
1056MlyValue.OneSpec(fn _ => let val ExDesc as ExDesc1=ExDesc1 ()
1057 in (
1058 EXCEPTIONspec (PP EXCEPTIONleft (right (info_on_exdesc ExDesc)),
1059					 ExDesc)
1060) end
1061)
1062 in (LrTable.NT 18,(result,EXCEPTION1left,ExDesc1right),rest671) end
1063| (80,(_,(MlyValue.StrDesc StrDesc1,_,StrDesc1right))::(_,(_,
1064STRUCTUREleft as STRUCTURE1left,_))::rest671) => let val result=
1065MlyValue.OneSpec(fn _ => let val StrDesc as StrDesc1=StrDesc1 ()
1066 in (
1067 STRUCTUREspec (PP STRUCTUREleft (right (info_on_strdesc StrDesc)),
1068					 StrDesc)
1069) end
1070)
1071 in (LrTable.NT 18,(result,STRUCTURE1left,StrDesc1right),rest671) end
1072| (81,(_,(MlyValue.SigExp SigExp1,_,SigExpright as SigExp1right))::(_,
1073(_,INCLUDEleft as INCLUDE1left,_))::rest671) => let val result=
1074MlyValue.OneSpec(fn _ => let val SigExp as SigExp1=SigExp1 ()
1075 in ( INCLUDEspec (PP INCLUDEleft SigExpright, SigExp) ) end
1076)
1077 in (LrTable.NT 18,(result,INCLUDE1left,SigExp1right),rest671) end
1078| (82,(_,(MlyValue.TypAbbreviationAND_seq1 TypAbbreviationAND_seq11,_,
1079TypAbbreviationAND_seq11right))::(_,(_,TYPE1left,_))::rest671) => let
1080val result=MlyValue.OneSpec(fn _ => let val TypAbbreviationAND_seq1
1081 as TypAbbreviationAND_seq11=TypAbbreviationAND_seq11 ()
1082 in (
1083 fold_specs_to_spec
1084			    (map rewrite_type_abbreviation_spec TypAbbreviationAND_seq1)
1085) end
1086)
1087 in (LrTable.NT 18,(result,TYPE1left,TypAbbreviationAND_seq11right),
1088rest671) end
1089| (83,(_,(MlyValue.Ident_seq2 Ident_seq21,_,Ident_seq21right))::(_,(_,
1090INCLUDE1left,_))::rest671) => let val result=MlyValue.OneSpec(fn _ =>
1091let val Ident_seq2 as Ident_seq21=Ident_seq21 ()
1092 in (
1093 fold_specs_to_spec
1094			    (map (fn WITH_INFO (i, Ident) =>
1095				      (i, INCLUDEspec (i, SIGIDsigexp (i, mk_SigId Ident))))
1096			       Ident_seq2)
1097) end
1098)
1099 in (LrTable.NT 18,(result,INCLUDE1left,Ident_seq21right),rest671) end
1100| (84,(_,(MlyValue.OneSpec OneSpec1,_,OneSpec1right))::(_,(
1101MlyValue.Spec Spec1,Specleft as Spec1left,_))::rest671) => let val
1102result=MlyValue.Spec(fn _ => let val Spec as Spec1=Spec1 ()
1103val OneSpec as OneSpec1=OneSpec1 ()
1104 in (
1105 composeSpec (PP Specleft (right (info_on_spec OneSpec)),
1106				       Spec, OneSpec)
1107) end
1108)
1109 in (LrTable.NT 17,(result,Spec1left,OneSpec1right),rest671) end
1110| (85,(_,(MlyValue.LongTypeIdentEq_seq2 LongTypeIdentEq_seq21,_,
1111LongTypeIdentEq_seq2right as LongTypeIdentEq_seq21right))::_::_::(_,(
1112MlyValue.Spec Spec1,Specleft as Spec1left,_))::rest671) => let val
1113result=MlyValue.Spec(fn _ => let val Spec as Spec1=Spec1 ()
1114val LongTypeIdentEq_seq2 as LongTypeIdentEq_seq21=
1115LongTypeIdentEq_seq21 ()
1116 in (
1117 SHARING_TYPEspec (PP Specleft LongTypeIdentEq_seq2right,
1118					    Spec,
1119					    wi_Convert mk_LongTyCon LongTypeIdentEq_seq2)
1120) end
1121)
1122 in (LrTable.NT 17,(result,Spec1left,LongTypeIdentEq_seq21right),
1123rest671) end
1124| (86,(_,(MlyValue.LongIdentEq_seq2 LongIdentEq_seq21,_,
1125LongIdentEq_seq2right as LongIdentEq_seq21right))::_::(_,(
1126MlyValue.Spec Spec1,Specleft as Spec1left,_))::rest671) => let val
1127result=MlyValue.Spec(fn _ => let val Spec as Spec1=Spec1 ()
1128val LongIdentEq_seq2 as LongIdentEq_seq21=LongIdentEq_seq21 ()
1129 in (
1130 SHARINGspec (PP Specleft LongIdentEq_seq2right,
1131				       Spec, wi_Convert mk_LongStrId LongIdentEq_seq2)
1132) end
1133)
1134 in (LrTable.NT 17,(result,Spec1left,LongIdentEq_seq21right),rest671)
1135 end
1136| (87,(_,(_,_,SEMICOLON1right))::(_,(MlyValue.Spec Spec1,Spec1left,_))
1137::rest671) => let val result=MlyValue.Spec(fn _ => let val Spec as
1138Spec1=Spec1 ()
1139 in ( Spec ) end
1140)
1141 in (LrTable.NT 17,(result,Spec1left,SEMICOLON1right),rest671) end
1142| (88,rest671) => let val result=MlyValue.Spec(fn _ => (
1143 EMPTYspec (PP defaultPos defaultPos) ))
1144 in (LrTable.NT 17,(result,defaultPos,defaultPos),rest671) end
1145| (89,(_,(_,_,ENDright as END1right))::(_,(MlyValue.StrDec StrDec1,_,_
1146))::(_,(_,STRUCTleft as STRUCT1left,_))::rest671) => let val result=
1147MlyValue.StrExp(fn _ => let val StrDec as StrDec1=StrDec1 ()
1148 in ( STRUCTstrexp (PP STRUCTleft ENDright, StrDec) ) end
1149)
1150 in (LrTable.NT 23,(result,STRUCT1left,END1right),rest671) end
1151| (90,(_,(MlyValue.LongIdent LongIdent1,LongIdentleft as
1152LongIdent1left,LongIdentright as LongIdent1right))::rest671) => let
1153val result=MlyValue.StrExp(fn _ => let val LongIdent as LongIdent1=
1154LongIdent1 ()
1155 in (
1156 LONGSTRIDstrexp (PP LongIdentleft LongIdentright,
1157					   mk_LongStrId LongIdent)
1158) end
1159)
1160 in (LrTable.NT 23,(result,LongIdent1left,LongIdent1right),rest671)
1161 end
1162| (91,(_,(MlyValue.SigExp_constraint SigExp_constraint1,_,
1163SigExp_constraint1right))::(_,(MlyValue.StrExp StrExp1,StrExpleft as
1164StrExp1left,_))::rest671) => let val result=MlyValue.StrExp(fn _ =>
1165let val StrExp as StrExp1=StrExp1 ()
1166val SigExp_constraint as SigExp_constraint1=SigExp_constraint1 ()
1167 in ( SigExp_constraint StrExpleft StrExp ) end
1168)
1169 in (LrTable.NT 23,(result,StrExp1left,SigExp_constraint1right),
1170rest671) end
1171| (92,(_,(_,_,RPARENright as RPAREN1right))::(_,(MlyValue.StrExp
1172StrExp1,_,_))::_::(_,(MlyValue.Ident Ident1,Identleft as Ident1left,_)
1173)::rest671) => let val result=MlyValue.StrExp(fn _ => let val Ident
1174 as Ident1=Ident1 ()
1175val StrExp as StrExp1=StrExp1 ()
1176 in (
1177 APPstrexp (PP Identleft RPARENright,
1178				     mk_FunId Ident, StrExp)
1179) end
1180)
1181 in (LrTable.NT 23,(result,Ident1left,RPAREN1right),rest671) end
1182| (93,(_,(_,_,ENDright as END1right))::(_,(MlyValue.StrExp StrExp1,_,_
1183))::_::(_,(MlyValue.StrDec StrDec1,_,_))::(_,(_,LETleft as LET1left,_)
1184)::rest671) => let val result=MlyValue.StrExp(fn _ => let val StrDec
1185 as StrDec1=StrDec1 ()
1186val StrExp as StrExp1=StrExp1 ()
1187 in ( LETstrexp (PP LETleft ENDright, StrDec, StrExp) ) end
1188)
1189 in (LrTable.NT 23,(result,LET1left,END1right),rest671) end
1190| (94,(_,(_,_,RPARENright as RPAREN1right))::(_,(MlyValue.StrDec
1191StrDec1,StrDecleft,_))::_::(_,(MlyValue.Ident Ident1,Identleft as
1192Ident1left,_))::rest671) => let val result=MlyValue.StrExp(fn _ =>
1193let val Ident as Ident1=Ident1 ()
1194val StrDec as StrDec1=StrDec1 ()
1195 in (
1196 APPstrexp (PP Identleft RPARENright, mk_FunId Ident,
1197				     STRUCTstrexp
1198				       (PP StrDecleft (right (info_on_strdec StrDec)),
1199					StrDec))
1200) end
1201)
1202 in (LrTable.NT 23,(result,Ident1left,RPAREN1right),rest671) end
1203| (95,(_,(MlyValue.OneStrDec_or_SEMICOLON OneStrDec_or_SEMICOLON1,_,
1204OneStrDec_or_SEMICOLON1right))::(_,(MlyValue.NonEmptyStrDec
1205NonEmptyStrDec1,NonEmptyStrDecleft as NonEmptyStrDec1left,_))::rest671
1206) => let val result=MlyValue.NonEmptyStrDec(fn _ => let val
1207NonEmptyStrDec as NonEmptyStrDec1=NonEmptyStrDec1 ()
1208val OneStrDec_or_SEMICOLON as OneStrDec_or_SEMICOLON1=
1209OneStrDec_or_SEMICOLON1 ()
1210 in (
1211 (case OneStrDec_or_SEMICOLON of
1212			     SOME strdec =>
1213			       composeStrDec (PP NonEmptyStrDecleft
1214					        (right (info_on_strdec strdec)),
1215					      NonEmptyStrDec, strdec)
1216			   | NONE =>
1217			       NonEmptyStrDec)
1218) end
1219)
1220 in (LrTable.NT 42,(result,NonEmptyStrDec1left,
1221OneStrDec_or_SEMICOLON1right),rest671) end
1222| (96,(_,(MlyValue.OneStrDec_or_SEMICOLON OneStrDec_or_SEMICOLON1,
1223OneStrDec_or_SEMICOLON1left,OneStrDec_or_SEMICOLON1right))::rest671)
1224 => let val result=MlyValue.NonEmptyStrDec(fn _ => let val
1225OneStrDec_or_SEMICOLON as OneStrDec_or_SEMICOLON1=
1226OneStrDec_or_SEMICOLON1 ()
1227 in (
1228 (case OneStrDec_or_SEMICOLON of
1229			     SOME strdec => strdec
1230			   | NONE => EMPTYstrdec (PP defaultPos defaultPos))
1231) end
1232)
1233 in (LrTable.NT 42,(result,OneStrDec_or_SEMICOLON1left,
1234OneStrDec_or_SEMICOLON1right),rest671) end
1235| (97,(_,(MlyValue.NonEmptyStrDec NonEmptyStrDec1,NonEmptyStrDec1left,
1236NonEmptyStrDec1right))::rest671) => let val result=MlyValue.StrDec(fn
1237_ => let val NonEmptyStrDec as NonEmptyStrDec1=NonEmptyStrDec1 ()
1238 in ( NonEmptyStrDec ) end
1239)
1240 in (LrTable.NT 22,(result,NonEmptyStrDec1left,NonEmptyStrDec1right),
1241rest671) end
1242| (98,rest671) => let val result=MlyValue.StrDec(fn _ => (
1243 EMPTYstrdec (PP defaultPos defaultPos) ))
1244 in (LrTable.NT 22,(result,defaultPos,defaultPos),rest671) end
1245| (99,(_,(MlyValue.OneStrDec OneStrDec1,OneStrDec1left,OneStrDec1right
1246))::rest671) => let val result=MlyValue.OneStrDec_or_SEMICOLON(fn _
1247 => let val OneStrDec as OneStrDec1=OneStrDec1 ()
1248 in ( SOME OneStrDec ) end
1249)
1250 in (LrTable.NT 41,(result,OneStrDec1left,OneStrDec1right),rest671)
1251 end
1252| (100,(_,(_,SEMICOLON1left,SEMICOLON1right))::rest671) => let val
1253result=MlyValue.OneStrDec_or_SEMICOLON(fn _ => ( NONE ))
1254 in (LrTable.NT 41,(result,SEMICOLON1left,SEMICOLON1right),rest671)
1255 end
1256| (101,(_,(MlyValue.OneDec_sans_LOCAL OneDec_sans_LOCAL1,
1257OneDec_sans_LOCALleft as OneDec_sans_LOCAL1left,
1258OneDec_sans_LOCAL1right))::rest671) => let val result=
1259MlyValue.OneStrDec(fn _ => let val OneDec_sans_LOCAL as
1260OneDec_sans_LOCAL1=OneDec_sans_LOCAL1 ()
1261 in (
1262 DECstrdec (PP OneDec_sans_LOCALleft
1263                                        (right (get_info_dec OneDec_sans_LOCAL)),
1264                                     OneDec_sans_LOCAL)
1265) end
1266)
1267 in (LrTable.NT 6,(result,OneDec_sans_LOCAL1left,
1268OneDec_sans_LOCAL1right),rest671) end
1269| (102,(_,(MlyValue.StrBind StrBind1,_,StrBind1right))::(_,(_,
1270STRUCTUREleft as STRUCTURE1left,_))::rest671) => let val result=
1271MlyValue.OneStrDec(fn _ => let val StrBind as StrBind1=StrBind1 ()
1272 in (
1273 STRUCTUREstrdec (PP STRUCTUREleft
1274					     (right (info_on_strbind StrBind)),
1275					   StrBind)
1276) end
1277)
1278 in (LrTable.NT 6,(result,STRUCTURE1left,StrBind1right),rest671) end
1279| (103,(_,(_,_,ENDright as END1right))::(_,(MlyValue.StrDec StrDec2,_,
1280_))::_::(_,(MlyValue.StrDec StrDec1,_,_))::(_,(_,LOCALleft as
1281LOCAL1left,_))::rest671) => let val result=MlyValue.OneStrDec(fn _ =>
1282let val StrDec1=StrDec1 ()
1283val StrDec2=StrDec2 ()
1284 in ( LOCALstrdec (PP LOCALleft ENDright, StrDec1, StrDec2) ) end
1285)
1286 in (LrTable.NT 6,(result,LOCAL1left,END1right),rest671) end
1287| (104,(_,(MlyValue.AndStrBind_opt AndStrBind_opt1,_,
1288AndStrBind_opt1right))::(_,(MlyValue.StrExp StrExp1,_,_))::_::(_,(
1289MlyValue.SigExp_constraint_maybe SigExp_constraint_maybe1,
1290SigExp_constraint_maybeleft,_))::(_,(MlyValue.Ident Ident1,Identleft
1291 as Ident1left,_))::rest671) => let val result=MlyValue.StrBind(fn _
1292 => let val Ident as Ident1=Ident1 ()
1293val SigExp_constraint_maybe as SigExp_constraint_maybe1=
1294SigExp_constraint_maybe1 ()
1295val StrExp as StrExp1=StrExp1 ()
1296val AndStrBind_opt as AndStrBind_opt1=AndStrBind_opt1 ()
1297 in (
1298 STRBIND (PP Identleft
1299				     (rightmost info_on_strexp StrExp
1300				                info_on_strbind AndStrBind_opt),
1301				   mk_StrId Ident, SigExp_constraint_maybe SigExp_constraint_maybeleft StrExp,
1302				   AndStrBind_opt)
1303) end
1304)
1305 in (LrTable.NT 21,(result,Ident1left,AndStrBind_opt1right),rest671)
1306 end
1307| (105,(_,(MlyValue.StrBind StrBind1,_,StrBind1right))::(_,(_,AND1left
1308,_))::rest671) => let val result=MlyValue.AndStrBind_opt(fn _ => let
1309val StrBind as StrBind1=StrBind1 ()
1310 in ( SOME StrBind ) end
1311)
1312 in (LrTable.NT 27,(result,AND1left,StrBind1right),rest671) end
1313| (106,rest671) => let val result=MlyValue.AndStrBind_opt(fn _ => (
1314 NONE ))
1315 in (LrTable.NT 27,(result,defaultPos,defaultPos),rest671) end
1316| (107,(_,(_,_,ENDright as END1right))::(_,(MlyValue.Spec Spec1,_,_))
1317::(_,(_,SIGleft as SIG1left,_))::rest671) => let val result=
1318MlyValue.SigExp(fn _ => let val Spec as Spec1=Spec1 ()
1319 in ( SIGsigexp (PP SIGleft ENDright, Spec) ) end
1320)
1321 in (LrTable.NT 20,(result,SIG1left,END1right),rest671) end
1322| (108,(_,(MlyValue.Ident Ident1,Identleft as Ident1left,Identright
1323 as Ident1right))::rest671) => let val result=MlyValue.SigExp(fn _ =>
1324let val Ident as Ident1=Ident1 ()
1325 in ( SIGIDsigexp (PP Identleft Identright, mk_SigId Ident) ) end
1326)
1327 in (LrTable.NT 20,(result,Ident1left,Ident1right),rest671) end
1328| (109,(_,(MlyValue.WhereDesc WhereDesc1,_,WhereDesc1right))::_::(_,(
1329MlyValue.SigExp SigExp1,SigExpleft as SigExp1left,_))::rest671) =>
1330let val result=MlyValue.SigExp(fn _ => let val SigExp as SigExp1=
1331SigExp1 ()
1332val WhereDesc as WhereDesc1=WhereDesc1 ()
1333 in ( WhereDesc(SigExpleft,SigExp) ) end
1334)
1335 in (LrTable.NT 20,(result,SigExp1left,WhereDesc1right),rest671) end
1336| (110,(_,(MlyValue.AndWhereDesc_opt AndWhereDesc_opt1,_,
1337AndWhereDesc_opt1right))::(_,(MlyValue.Ty Ty1,_,Tyright))::_::(_,(
1338MlyValue.LongTypeIdent LongTypeIdent1,_,_))::(_,(MlyValue.TyVarSeq
1339TyVarSeq1,_,_))::(_,(_,TYPE1left,_))::rest671) => let val result=
1340MlyValue.WhereDesc(fn _ => let val TyVarSeq as TyVarSeq1=TyVarSeq1 ()
1341val LongTypeIdent as LongTypeIdent1=LongTypeIdent1 ()
1342val Ty as Ty1=Ty1 ()
1343val AndWhereDesc_opt as AndWhereDesc_opt1=AndWhereDesc_opt1 ()
1344 in (
1345 fn (sigexpleft,sigexp) =>
1346                             case AndWhereDesc_opt
1347                               of SOME f => f (sigexpleft, WHERE_TYPEsigexp (PP sigexpleft Tyright,
1348					                                     sigexp, TyVarSeq,
1349					                                     mk_LongTyCon LongTypeIdent, Ty))
1350                                | NONE => WHERE_TYPEsigexp (PP sigexpleft Tyright,
1351					                    sigexp, TyVarSeq,
1352					                    mk_LongTyCon LongTypeIdent, Ty)
1353) end
1354)
1355 in (LrTable.NT 43,(result,TYPE1left,AndWhereDesc_opt1right),rest671)
1356 end
1357| (111,(_,(MlyValue.WhereDesc WhereDesc1,_,WhereDesc1right))::(_,(_,
1358AND1left,_))::rest671) => let val result=MlyValue.AndWhereDesc_opt(fn
1359_ => let val WhereDesc as WhereDesc1=WhereDesc1 ()
1360 in ( SOME WhereDesc ) end
1361)
1362 in (LrTable.NT 44,(result,AND1left,WhereDesc1right),rest671) end
1363| (112,rest671) => let val result=MlyValue.AndWhereDesc_opt(fn _ => (
1364 NONE ))
1365 in (LrTable.NT 44,(result,defaultPos,defaultPos),rest671) end
1366| (113,(_,(MlyValue.SigBind SigBind1,_,SigBind1right))::(_,(_,
1367SIGNATUREleft as SIGNATURE1left,_))::rest671) => let val result=
1368MlyValue.SigDec(fn _ => let val SigBind as SigBind1=SigBind1 ()
1369 in (
1370 SIGNATUREsigdec
1371			    (PP SIGNATUREleft (right (info_on_sigbind SigBind)),
1372			     SigBind)
1373) end
1374)
1375 in (LrTable.NT 3,(result,SIGNATURE1left,SigBind1right),rest671) end
1376| (114,(_,(MlyValue.AndSigBind_opt AndSigBind_opt1,_,
1377AndSigBind_opt1right))::(_,(MlyValue.SigExp SigExp1,_,_))::_::(_,(
1378MlyValue.Ident Ident1,Identleft as Ident1left,_))::rest671) => let
1379val result=MlyValue.SigBind(fn _ => let val Ident as Ident1=Ident1 ()
1380val SigExp as SigExp1=SigExp1 ()
1381val AndSigBind_opt as AndSigBind_opt1=AndSigBind_opt1 ()
1382 in (
1383 SIGBIND (PP Identleft
1384				     (rightmost info_on_sigexp SigExp
1385				                info_on_sigbind AndSigBind_opt),
1386                                   mk_SigId Ident, SigExp, AndSigBind_opt)
1387) end
1388)
1389 in (LrTable.NT 19,(result,Ident1left,AndSigBind_opt1right),rest671)
1390 end
1391| (115,(_,(MlyValue.SigBind SigBind1,_,SigBind1right))::(_,(_,AND1left
1392,_))::rest671) => let val result=MlyValue.AndSigBind_opt(fn _ => let
1393val SigBind as SigBind1=SigBind1 ()
1394 in ( SOME SigBind ) end
1395)
1396 in (LrTable.NT 28,(result,AND1left,SigBind1right),rest671) end
1397| (116,rest671) => let val result=MlyValue.AndSigBind_opt(fn _ => (
1398 NONE ))
1399 in (LrTable.NT 28,(result,defaultPos,defaultPos),rest671) end
1400| (117,(_,(MlyValue.SCon SCon1,SConleft as SCon1left,SConright as
1401SCon1right))::rest671) => let val result=MlyValue.AtExp(fn _ => let
1402val SCon as SCon1=SCon1 ()
1403 in ( SCONatexp (PP SConleft SConright, SCon) ) end
1404)
1405 in (LrTable.NT 69,(result,SCon1left,SCon1right),rest671) end
1406| (118,(_,(MlyValue.LongOpEqIdent LongOpEqIdent1,LongOpEqIdentleft as
1407LongOpEqIdent1left,LongOpEqIdentright as LongOpEqIdent1right))::
1408rest671) => let val result=MlyValue.AtExp(fn _ => let val
1409LongOpEqIdent as LongOpEqIdent1=LongOpEqIdent1 ()
1410 in (
1411 let val OP_OPT (id, withOp) = LongOpEqIdent
1412                          in
1413			    IDENTatexp (PP LongOpEqIdentleft LongOpEqIdentright,
1414					OP_OPT (mk_LongId id, withOp))
1415                          end
1416) end
1417)
1418 in (LrTable.NT 69,(result,LongOpEqIdent1left,LongOpEqIdent1right),
1419rest671) end
1420| (119,(_,(_,_,RBRACEright as RBRACE1right))::(_,(MlyValue.ExpRow_opt
1421ExpRow_opt1,_,_))::(_,(_,LBRACEleft as LBRACE1left,_))::rest671) =>
1422let val result=MlyValue.AtExp(fn _ => let val ExpRow_opt as
1423ExpRow_opt1=ExpRow_opt1 ()
1424 in ( RECORDatexp (PP LBRACEleft RBRACEright, ExpRow_opt) ) end
1425)
1426 in (LrTable.NT 69,(result,LBRACE1left,RBRACE1right),rest671) end
1427| (120,(_,(_,_,ENDright as END1right))::(_,(MlyValue.Exp_ Exp_1,_,_))
1428::_::(_,(MlyValue.Dec Dec1,_,_))::(_,(_,LETleft as LET1left,_))::
1429rest671) => let val result=MlyValue.AtExp(fn _ => let val Dec as Dec1=
1430Dec1 ()
1431val Exp_ as Exp_1=Exp_1 ()
1432 in ( LETatexp (PP LETleft ENDright, Dec, Exp_) ) end
1433)
1434 in (LrTable.NT 69,(result,LET1left,END1right),rest671) end
1435| (121,(_,(_,_,RPARENright as RPAREN1right))::(_,(MlyValue.Exp_ Exp_1,
1436_,_))::(_,(_,LPARENleft as LPAREN1left,_))::rest671) => let val result
1437=MlyValue.AtExp(fn _ => let val Exp_ as Exp_1=Exp_1 ()
1438 in ( PARatexp (PP LPARENleft RPARENright, Exp_) ) end
1439)
1440 in (LrTable.NT 69,(result,LPAREN1left,RPAREN1right),rest671) end
1441| (122,(_,(_,_,RPARENright as RPAREN1right))::(_,(_,LPARENleft as
1442LPAREN1left,_))::rest671) => let val result=MlyValue.AtExp(fn _ => (
1443 RECORDatexp (PP LPARENleft RPARENright, NONE) ))
1444 in (LrTable.NT 69,(result,LPAREN1left,RPAREN1right),rest671) end
1445| (123,(_,(_,_,RPARENright as RPAREN1right))::(_,(
1446MlyValue.ExpComma_seq2 ExpComma_seq21,_,_))::(_,(_,LPARENleft as
1447LPAREN1left,_))::rest671) => let val result=MlyValue.AtExp(fn _ =>
1448let val ExpComma_seq2 as ExpComma_seq21=ExpComma_seq21 ()
1449 in ( tuple_atexp_with_info (PP LPARENleft RPARENright) ExpComma_seq2
1450) end
1451)
1452 in (LrTable.NT 69,(result,LPAREN1left,RPAREN1right),rest671) end
1453| (124,(_,(MlyValue.Label Label1,_,Labelright as Label1right))::(_,(_,
1454HASHleft as HASH1left,_))::rest671) => let val result=MlyValue.AtExp(
1455fn _ => let val Label as Label1=Label1 ()
1456 in ( hash (PP HASHleft Labelright) Label ) end
1457)
1458 in (LrTable.NT 69,(result,HASH1left,Label1right),rest671) end
1459| (125,(_,(_,_,RPARENright as RPAREN1right))::(_,(
1460MlyValue.ExpSemicolon_seq2 ExpSemicolon_seq21,_,_))::(_,(_,LPARENleft
1461 as LPAREN1left,_))::rest671) => let val result=MlyValue.AtExp(fn _
1462 => let val ExpSemicolon_seq2 as ExpSemicolon_seq21=ExpSemicolon_seq21
1463 ()
1464 in (
1465 PARatexp (PP LPARENleft RPARENright,
1466                                   sequenceExp ExpSemicolon_seq2)
1467) end
1468)
1469 in (LrTable.NT 69,(result,LPAREN1left,RPAREN1right),rest671) end
1470| (126,(_,(_,_,ENDright as END1right))::(_,(MlyValue.ExpSemicolon_seq2
1471 ExpSemicolon_seq21,_,_))::_::(_,(MlyValue.Dec Dec1,_,_))::(_,(_,
1472LETleft as LET1left,_))::rest671) => let val result=MlyValue.AtExp(fn
1473_ => let val Dec as Dec1=Dec1 ()
1474val ExpSemicolon_seq2 as ExpSemicolon_seq21=ExpSemicolon_seq21 ()
1475 in (
1476 LETatexp (PP LETleft ENDright,
1477				    Dec, sequenceExp ExpSemicolon_seq2)
1478) end
1479)
1480 in (LrTable.NT 69,(result,LET1left,END1right),rest671) end
1481| (127,(_,(_,_,RBRACKETright as RBRACKET1right))::(_,(
1482MlyValue.ExpComma_seq0 ExpComma_seq01,_,_))::(_,(_,LBRACKETleft as
1483LBRACKET1left,_))::rest671) => let val result=MlyValue.AtExp(fn _ =>
1484let val ExpComma_seq0 as ExpComma_seq01=ExpComma_seq01 ()
1485 in ( list_atexp (PP LBRACKETleft RBRACKETright) ExpComma_seq0 ) end
1486)
1487 in (LrTable.NT 69,(result,LBRACKET1left,RBRACKET1right),rest671) end
1488| (128,(_,(MlyValue.AtExp_seq1 AtExp_seq11,_,AtExp_seq11right))::(_,(
1489MlyValue.AtExp AtExp1,AtExp1left,_))::rest671) => let val result=
1490MlyValue.AtExp_seq1(fn _ => let val AtExp as AtExp1=AtExp1 ()
1491val AtExp_seq1 as AtExp_seq11=AtExp_seq11 ()
1492 in ( AtExp :: AtExp_seq1 ) end
1493)
1494 in (LrTable.NT 96,(result,AtExp1left,AtExp_seq11right),rest671) end
1495| (129,(_,(MlyValue.AtExp AtExp1,AtExp1left,AtExp1right))::rest671)
1496 => let val result=MlyValue.AtExp_seq1(fn _ => let val AtExp as AtExp1
1497=AtExp1 ()
1498 in ( [AtExp] ) end
1499)
1500 in (LrTable.NT 96,(result,AtExp1left,AtExp1right),rest671) end
1501| (130,(_,(MlyValue.CommaExpRow_opt CommaExpRow_opt1,_,
1502CommaExpRow_opt1right))::(_,(MlyValue.Exp_ Exp_1,_,_))::_::(_,(
1503MlyValue.Label Label1,Labelleft as Label1left,_))::rest671) => let
1504val result=MlyValue.ExpRow(fn _ => let val Label as Label1=Label1 ()
1505val Exp_ as Exp_1=Exp_1 ()
1506val CommaExpRow_opt as CommaExpRow_opt1=CommaExpRow_opt1 ()
1507 in (
1508 EXPROW (PP Labelleft
1509				    (rightmost get_info_exp Exp_
1510				               get_info_exprow CommaExpRow_opt),
1511				  Label, Exp_, CommaExpRow_opt)
1512) end
1513)
1514 in (LrTable.NT 68,(result,Label1left,CommaExpRow_opt1right),rest671)
1515 end
1516| (131,(_,(MlyValue.ExpRow ExpRow1,ExpRow1left,ExpRow1right))::rest671
1517) => let val result=MlyValue.ExpRow_opt(fn _ => let val ExpRow as
1518ExpRow1=ExpRow1 ()
1519 in ( SOME ExpRow ) end
1520)
1521 in (LrTable.NT 81,(result,ExpRow1left,ExpRow1right),rest671) end
1522| (132,rest671) => let val result=MlyValue.ExpRow_opt(fn _ => ( NONE )
1523)
1524 in (LrTable.NT 81,(result,defaultPos,defaultPos),rest671) end
1525| (133,(_,(MlyValue.ExpRow ExpRow1,_,ExpRow1right))::(_,(_,COMMA1left,
1526_))::rest671) => let val result=MlyValue.CommaExpRow_opt(fn _ => let
1527val ExpRow as ExpRow1=ExpRow1 ()
1528 in ( SOME ExpRow ) end
1529)
1530 in (LrTable.NT 71,(result,COMMA1left,ExpRow1right),rest671) end
1531| (134,rest671) => let val result=MlyValue.CommaExpRow_opt(fn _ => (
1532 NONE ))
1533 in (LrTable.NT 71,(result,defaultPos,defaultPos),rest671) end
1534| (135,(_,(MlyValue.ExpComma_seq1 ExpComma_seq11,ExpComma_seq11left,
1535ExpComma_seq11right))::rest671) => let val result=
1536MlyValue.ExpComma_seq0(fn _ => let val ExpComma_seq1 as ExpComma_seq11
1537=ExpComma_seq11 ()
1538 in ( ExpComma_seq1 ) end
1539)
1540 in (LrTable.NT 90,(result,ExpComma_seq11left,ExpComma_seq11right),
1541rest671) end
1542| (136,rest671) => let val result=MlyValue.ExpComma_seq0(fn _ => (
1543 nil ))
1544 in (LrTable.NT 90,(result,defaultPos,defaultPos),rest671) end
1545| (137,(_,(MlyValue.ExpComma_seq1 ExpComma_seq11,_,ExpComma_seq11right
1546))::_::(_,(MlyValue.Exp_ Exp_1,Exp_1left,_))::rest671) => let val
1547result=MlyValue.ExpComma_seq1(fn _ => let val Exp_ as Exp_1=Exp_1 ()
1548val ExpComma_seq1 as ExpComma_seq11=ExpComma_seq11 ()
1549 in ( Exp_ :: ExpComma_seq1 ) end
1550)
1551 in (LrTable.NT 91,(result,Exp_1left,ExpComma_seq11right),rest671) end
1552| (138,(_,(MlyValue.Exp_ Exp_1,Exp_1left,Exp_1right))::rest671) =>
1553let val result=MlyValue.ExpComma_seq1(fn _ => let val Exp_ as Exp_1=
1554Exp_1 ()
1555 in ( [Exp_] ) end
1556)
1557 in (LrTable.NT 91,(result,Exp_1left,Exp_1right),rest671) end
1558| (139,(_,(MlyValue.ExpComma_seq1 ExpComma_seq11,_,ExpComma_seq11right
1559))::_::(_,(MlyValue.Exp_ Exp_1,Exp_1left,_))::rest671) => let val
1560result=MlyValue.ExpComma_seq2(fn _ => let val Exp_ as Exp_1=Exp_1 ()
1561val ExpComma_seq1 as ExpComma_seq11=ExpComma_seq11 ()
1562 in ( Exp_ :: ExpComma_seq1 ) end
1563)
1564 in (LrTable.NT 92,(result,Exp_1left,ExpComma_seq11right),rest671) end
1565| (140,(_,(MlyValue.ExpSemicolon_seq2 ExpSemicolon_seq21,_,
1566ExpSemicolon_seq21right))::_::(_,(MlyValue.Exp_ Exp_1,Exp_1left,_))::
1567rest671) => let val result=MlyValue.ExpSemicolon_seq2(fn _ => let val
1568Exp_ as Exp_1=Exp_1 ()
1569val ExpSemicolon_seq2 as ExpSemicolon_seq21=ExpSemicolon_seq21 ()
1570 in ( Exp_ :: ExpSemicolon_seq2) end
1571)
1572 in (LrTable.NT 99,(result,Exp_1left,ExpSemicolon_seq21right),rest671)
1573 end
1574| (141,(_,(MlyValue.Exp_ Exp_2,_,Exp_2right))::_::(_,(MlyValue.Exp_
1575Exp_1,Exp_1left,_))::rest671) => let val result=
1576MlyValue.ExpSemicolon_seq2(fn _ => let val Exp_1=Exp_1 ()
1577val Exp_2=Exp_2 ()
1578 in ( [Exp_1, Exp_2] ) end
1579)
1580 in (LrTable.NT 99,(result,Exp_1left,Exp_2right),rest671) end
1581| (142,(_,(MlyValue.AtExp_seq1 AtExp_seq11,AtExp_seq1left as
1582AtExp_seq11left,AtExp_seq1right as AtExp_seq11right))::rest671) =>
1583let val result=MlyValue.Exp_(fn _ => let val AtExp_seq1 as AtExp_seq11
1584=AtExp_seq11 ()
1585 in ( UNRES_INFIXexp (PP AtExp_seq1left AtExp_seq1right, AtExp_seq1) )
1586 end
1587)
1588 in (LrTable.NT 66,(result,AtExp_seq11left,AtExp_seq11right),rest671)
1589 end
1590| (143,(_,(MlyValue.Ty Ty1,_,Tyright as Ty1right))::_::(_,(
1591MlyValue.Exp_ Exp_1,Exp_left as Exp_1left,_))::rest671) => let val
1592result=MlyValue.Exp_(fn _ => let val Exp_ as Exp_1=Exp_1 ()
1593val Ty as Ty1=Ty1 ()
1594 in ( TYPEDexp (PP Exp_left Tyright, Exp_, Ty) ) end
1595)
1596 in (LrTable.NT 66,(result,Exp_1left,Ty1right),rest671) end
1597| (144,(_,(MlyValue.Match_ Match_1,_,Match_1right))::_::(_,(
1598MlyValue.Exp_ Exp_1,Exp_left as Exp_1left,_))::rest671) => let val
1599result=MlyValue.Exp_(fn _ => let val Exp_ as Exp_1=Exp_1 ()
1600val Match_ as Match_1=Match_1 ()
1601 in (
1602 HANDLEexp (PP Exp_left (right (get_info_match Match_)),
1603				     Exp_, Match_)
1604) end
1605)
1606 in (LrTable.NT 66,(result,Exp_1left,Match_1right),rest671) end
1607| (145,(_,(MlyValue.Exp_ Exp_1,_,Exp_1right))::(_,(_,RAISEleft as
1608RAISE1left,_))::rest671) => let val result=MlyValue.Exp_(fn _ => let
1609val Exp_ as Exp_1=Exp_1 ()
1610 in ( RAISEexp (PP RAISEleft (right (get_info_exp Exp_)), Exp_) ) end
1611)
1612 in (LrTable.NT 66,(result,RAISE1left,Exp_1right),rest671) end
1613| (146,(_,(MlyValue.Match_ Match_1,_,Match_1right))::(_,(_,FNleft as
1614FN1left,_))::rest671) => let val result=MlyValue.Exp_(fn _ => let val
1615Match_ as Match_1=Match_1 ()
1616 in ( FNexp (PP FNleft (right (get_info_match Match_)), Match_) ) end
1617)
1618 in (LrTable.NT 66,(result,FN1left,Match_1right),rest671) end
1619| (147,(_,(MlyValue.Match_ Match_1,_,Match_1right))::_::(_,(
1620MlyValue.Exp_ Exp_1,_,_))::(_,(_,CASEleft as CASE1left,_))::rest671)
1621 => let val result=MlyValue.Exp_(fn _ => let val Exp_ as Exp_1=Exp_1
1622()
1623val Match_ as Match_1=Match_1 ()
1624 in (
1625 case_exp (PP CASEleft (right (get_info_match Match_)))
1626			    (Exp_, Match_)
1627) end
1628)
1629 in (LrTable.NT 66,(result,CASE1left,Match_1right),rest671) end
1630| (148,(_,(MlyValue.Exp_ Exp_3,_,Exp_3right))::_::(_,(MlyValue.Exp_
1631Exp_2,_,_))::_::(_,(MlyValue.Exp_ Exp_1,_,_))::(_,(_,IFleft as IF1left
1632,_))::rest671) => let val result=MlyValue.Exp_(fn _ => let val Exp_1=
1633Exp_1 ()
1634val Exp_2=Exp_2 ()
1635val Exp_3=Exp_3 ()
1636 in (
1637 if_then_else_exp (PP IFleft (right (get_info_exp Exp_3)))
1638			    (Exp_1, Exp_2, Exp_3)
1639) end
1640)
1641 in (LrTable.NT 66,(result,IF1left,Exp_3right),rest671) end
1642| (149,(_,(MlyValue.Exp_ Exp_2,_,Exp_2right))::_::(_,(MlyValue.Exp_
1643Exp_1,Exp_1left,_))::rest671) => let val result=MlyValue.Exp_(fn _ =>
1644let val Exp_1=Exp_1 ()
1645val Exp_2=Exp_2 ()
1646 in (
1647 let val info = PP Exp_1left (right (get_info_exp Exp_2))
1648			  in
1649			    if_then_else_exp info (Exp_1, exp_true info, Exp_2)
1650			  end
1651) end
1652)
1653 in (LrTable.NT 66,(result,Exp_1left,Exp_2right),rest671) end
1654| (150,(_,(MlyValue.Exp_ Exp_2,_,Exp_2right))::_::(_,(MlyValue.Exp_
1655Exp_1,Exp_1left,_))::rest671) => let val result=MlyValue.Exp_(fn _ =>
1656let val Exp_1=Exp_1 ()
1657val Exp_2=Exp_2 ()
1658 in (
1659 let val info = PP Exp_1left (right (get_info_exp Exp_2))
1660			  in
1661			    if_then_else_exp info (Exp_1, Exp_2, exp_false info)
1662			  end
1663) end
1664)
1665 in (LrTable.NT 66,(result,Exp_1left,Exp_2right),rest671) end
1666| (151,(_,(MlyValue.Exp_ Exp_2,_,Exp_2right))::_::(_,(MlyValue.Exp_
1667Exp_1,_,_))::(_,(_,WHILEleft as WHILE1left,_))::rest671) => let val
1668result=MlyValue.Exp_(fn _ => let val Exp_1=Exp_1 ()
1669val Exp_2=Exp_2 ()
1670 in (
1671 while_exp (PP WHILEleft (right (get_info_exp Exp_2)))
1672			    (Exp_1, Exp_2)
1673) end
1674)
1675 in (LrTable.NT 66,(result,WHILE1left,Exp_2right),rest671) end
1676| (152,(_,(MlyValue.BarMatch_opt BarMatch_opt1,_,BarMatch_opt1right))
1677::(_,(MlyValue.MRule MRule1,MRuleleft as MRule1left,_))::rest671) =>
1678let val result=MlyValue.Match_(fn _ => let val MRule as MRule1=MRule1
1679()
1680val BarMatch_opt as BarMatch_opt1=BarMatch_opt1 ()
1681 in (
1682 MATCH (PP MRuleleft
1683				   (rightmost get_info_mrule MRule
1684				              get_info_match BarMatch_opt),
1685				 MRule, BarMatch_opt)
1686) end
1687)
1688 in (LrTable.NT 67,(result,MRule1left,BarMatch_opt1right),rest671) end
1689| (153,(_,(MlyValue.Match_ Match_1,_,Match_1right))::(_,(_,BAR1left,_)
1690)::rest671) => let val result=MlyValue.BarMatch_opt(fn _ => let val
1691Match_ as Match_1=Match_1 ()
1692 in ( SOME Match_ ) end
1693)
1694 in (LrTable.NT 79,(result,BAR1left,Match_1right),rest671) end
1695| (154,rest671) => let val result=MlyValue.BarMatch_opt(fn _ => (
1696 NONE ))
1697 in (LrTable.NT 79,(result,defaultPos,defaultPos),rest671) end
1698| (155,(_,(MlyValue.Exp_ Exp_1,_,Exp_1right))::_::(_,(MlyValue.Pat
1699Pat1,Patleft as Pat1left,_))::rest671) => let val result=
1700MlyValue.MRule(fn _ => let val Pat as Pat1=Pat1 ()
1701val Exp_ as Exp_1=Exp_1 ()
1702 in ( MRULE (PP Patleft (right (get_info_exp Exp_)), Pat, Exp_) ) end
1703)
1704 in (LrTable.NT 65,(result,Pat1left,Exp_1right),rest671) end
1705| (156,(_,(MlyValue.ValBind ValBind1,_,ValBind1right))::(_,(_,VALleft
1706 as VAL1left,_))::rest671) => let val result=
1707MlyValue.OneDec_sans_LOCAL(fn _ => let val ValBind as ValBind1=
1708ValBind1 ()
1709 in (
1710 VALdec (PP VALleft (right (get_info_valbind ValBind)),
1711				  [], ValBind)
1712) end
1713)
1714 in (LrTable.NT 112,(result,VAL1left,ValBind1right),rest671) end
1715| (157,(_,(MlyValue.ValBind ValBind1,_,ValBind1right))::(_,(
1716MlyValue.TyVarSeq1 TyVarSeq11,_,_))::(_,(_,VALleft as VAL1left,_))::
1717rest671) => let val result=MlyValue.OneDec_sans_LOCAL(fn _ => let val
1718TyVarSeq1 as TyVarSeq11=TyVarSeq11 ()
1719val ValBind as ValBind1=ValBind1 ()
1720 in (
1721 VALdec (PP VALleft (right (get_info_valbind ValBind)),
1722				  TyVarSeq1, ValBind)
1723) end
1724)
1725 in (LrTable.NT 112,(result,VAL1left,ValBind1right),rest671) end
1726| (158,(_,(MlyValue.TypBind TypBind1,_,TypBind1right))::(_,(_,TYPEleft
1727 as TYPE1left,_))::rest671) => let val result=
1728MlyValue.OneDec_sans_LOCAL(fn _ => let val TypBind as TypBind1=
1729TypBind1 ()
1730 in (
1731 TYPEdec (PP TYPEleft (right (get_info_typbind TypBind)),
1732				   TypBind)
1733) end
1734)
1735 in (LrTable.NT 112,(result,TYPE1left,TypBind1right),rest671) end
1736| (159,(_,(MlyValue.DatBind_zero_arity DatBind_zero_arity1,_,
1737DatBind_zero_arity1right))::(_,(_,DATATYPEleft as DATATYPE1left,_))::
1738rest671) => let val result=MlyValue.OneDec_sans_LOCAL(fn _ => let val
1739DatBind_zero_arity as DatBind_zero_arity1=DatBind_zero_arity1 ()
1740 in (
1741 DATATYPEdec (PP DATATYPEleft
1742				         (right (get_info_datbind DatBind_zero_arity)),
1743				       DatBind_zero_arity)
1744) end
1745)
1746 in (LrTable.NT 112,(result,DATATYPE1left,DatBind_zero_arity1right),
1747rest671) end
1748| (160,(_,(MlyValue.DatBind_nonzero_arity DatBind_nonzero_arity1,_,
1749DatBind_nonzero_arity1right))::(_,(_,DATATYPEleft as DATATYPE1left,_))
1750::rest671) => let val result=MlyValue.OneDec_sans_LOCAL(fn _ => let
1751val DatBind_nonzero_arity as DatBind_nonzero_arity1=
1752DatBind_nonzero_arity1 ()
1753 in (
1754 DATATYPEdec(PP DATATYPEleft
1755				        (right (get_info_datbind DatBind_nonzero_arity)),
1756				      DatBind_nonzero_arity)
1757) end
1758)
1759 in (LrTable.NT 112,(result,DATATYPE1left,DatBind_nonzero_arity1right)
1760,rest671) end
1761| (161,(_,(MlyValue.LongTypeIdent LongTypeIdent1,_,LongTypeIdentright
1762 as LongTypeIdent1right))::_::_::(_,(MlyValue.TypeIdent TypeIdent1,_,_
1763))::(_,(_,DATATYPE1left,_))::rest671) => let val result=
1764MlyValue.OneDec_sans_LOCAL(fn _ => let val TypeIdent as TypeIdent1=
1765TypeIdent1 ()
1766val LongTypeIdent as LongTypeIdent1=LongTypeIdent1 ()
1767 in (
1768 DATATYPE_REPLICATIONdec
1769			    (PP DATATYPE1left LongTypeIdentright,
1770			     mk_TyCon TypeIdent, mk_LongTyCon LongTypeIdent)
1771) end
1772)
1773 in (LrTable.NT 112,(result,DATATYPE1left,LongTypeIdent1right),rest671
1774) end
1775| (162,(_,(_,_,ENDright as END1right))::(_,(MlyValue.Dec Dec1,_,_))::_
1776::(_,(MlyValue.DatBind DatBind1,_,_))::(_,(_,ABSTYPEleft as
1777ABSTYPE1left,_))::rest671) => let val result=
1778MlyValue.OneDec_sans_LOCAL(fn _ => let val DatBind as DatBind1=
1779DatBind1 ()
1780val Dec as Dec1=Dec1 ()
1781 in ( ABSTYPEdec (PP ABSTYPEleft ENDright, DatBind, Dec) ) end
1782)
1783 in (LrTable.NT 112,(result,ABSTYPE1left,END1right),rest671) end
1784| (163,(_,(MlyValue.ExBind ExBind1,_,ExBind1right))::(_,(_,
1785EXCEPTIONleft as EXCEPTION1left,_))::rest671) => let val result=
1786MlyValue.OneDec_sans_LOCAL(fn _ => let val ExBind as ExBind1=ExBind1
1787()
1788 in (
1789 EXCEPTIONdec (PP EXCEPTIONleft
1790					  (right (get_info_exbind ExBind)),
1791					ExBind)
1792) end
1793)
1794 in (LrTable.NT 112,(result,EXCEPTION1left,ExBind1right),rest671) end
1795| (164,(_,(MlyValue.LongIdent_seq1 LongIdent_seq11,_,
1796LongIdent_seq1right as LongIdent_seq11right))::(_,(_,OPENleft as
1797OPEN1left,_))::rest671) => let val result=MlyValue.OneDec_sans_LOCAL(
1798fn _ => let val LongIdent_seq1 as LongIdent_seq11=LongIdent_seq11 ()
1799 in (
1800 OPENdec (PP OPENleft LongIdent_seq1right,
1801				   wi_Convert mk_LongStrId LongIdent_seq1)
1802) end
1803)
1804 in (LrTable.NT 112,(result,OPEN1left,LongIdent_seq11right),rest671)
1805 end
1806| (165,(_,(MlyValue.EqIdent_seq1 EqIdent_seq11,_,EqIdent_seq1right as
1807EqIdent_seq11right))::(_,(MlyValue.DIGIT_opt DIGIT_opt1,_,_))::(_,(_,
1808INFIXleft as INFIX1left,_))::rest671) => let val result=
1809MlyValue.OneDec_sans_LOCAL(fn _ => let val DIGIT_opt as DIGIT_opt1=
1810DIGIT_opt1 ()
1811val EqIdent_seq1 as EqIdent_seq11=EqIdent_seq11 ()
1812 in (
1813 INFIXdec (PP INFIXleft EqIdent_seq1right,
1814				    DIGIT_opt, map mk_Id EqIdent_seq1)
1815) end
1816)
1817 in (LrTable.NT 112,(result,INFIX1left,EqIdent_seq11right),rest671)
1818 end
1819| (166,(_,(MlyValue.EqIdent_seq1 EqIdent_seq11,_,EqIdent_seq1right as
1820EqIdent_seq11right))::(_,(MlyValue.DIGIT_opt DIGIT_opt1,_,_))::(_,(_,
1821INFIXRleft as INFIXR1left,_))::rest671) => let val result=
1822MlyValue.OneDec_sans_LOCAL(fn _ => let val DIGIT_opt as DIGIT_opt1=
1823DIGIT_opt1 ()
1824val EqIdent_seq1 as EqIdent_seq11=EqIdent_seq11 ()
1825 in (
1826 INFIXRdec (PP INFIXRleft EqIdent_seq1right,
1827				     DIGIT_opt, map mk_Id EqIdent_seq1)
1828) end
1829)
1830 in (LrTable.NT 112,(result,INFIXR1left,EqIdent_seq11right),rest671)
1831 end
1832| (167,(_,(MlyValue.EqIdent_seq1 EqIdent_seq11,_,EqIdent_seq1right as
1833EqIdent_seq11right))::(_,(_,NONFIXleft as NONFIX1left,_))::rest671)
1834 => let val result=MlyValue.OneDec_sans_LOCAL(fn _ => let val
1835EqIdent_seq1 as EqIdent_seq11=EqIdent_seq11 ()
1836 in (
1837 NONFIXdec (PP NONFIXleft EqIdent_seq1right,
1838				     map mk_Id EqIdent_seq1)
1839) end
1840)
1841 in (LrTable.NT 112,(result,NONFIX1left,EqIdent_seq11right),rest671)
1842 end
1843| (168,(_,(MlyValue.TypBind TypBind1,_,TypBind1right))::_::(_,(
1844MlyValue.DatBind_zero_arity DatBind_zero_arity1,_,_))::(_,(_,
1845DATATYPEleft as DATATYPE1left,_))::rest671) => let val result=
1846MlyValue.OneDec_sans_LOCAL(fn _ => let val DatBind_zero_arity as
1847DatBind_zero_arity1=DatBind_zero_arity1 ()
1848val TypBind as TypBind1=TypBind1 ()
1849 in (
1850 let val db = rewriteDatBind (DatBind_zero_arity, TypBind)
1851                          in
1852                            SEQdec (PP DATATYPEleft (right (get_info_typbind TypBind)),
1853				    DATATYPEdec
1854				      (get_info_datbind DatBind_zero_arity, db),
1855				    TYPEdec (get_info_typbind TypBind, TypBind))
1856                          end
1857) end
1858)
1859 in (LrTable.NT 112,(result,DATATYPE1left,TypBind1right),rest671) end
1860| (169,(_,(MlyValue.TypBind TypBind1,_,TypBind1right))::_::(_,(
1861MlyValue.DatBind_nonzero_arity DatBind_nonzero_arity1,_,_))::(_,(_,
1862DATATYPEleft as DATATYPE1left,_))::rest671) => let val result=
1863MlyValue.OneDec_sans_LOCAL(fn _ => let val DatBind_nonzero_arity as
1864DatBind_nonzero_arity1=DatBind_nonzero_arity1 ()
1865val TypBind as TypBind1=TypBind1 ()
1866 in (
1867 let val db = rewriteDatBind (DatBind_nonzero_arity, TypBind)
1868                          in
1869                            SEQdec (PP DATATYPEleft (right (get_info_typbind TypBind)),
1870				    DATATYPEdec
1871				      (get_info_datbind DatBind_nonzero_arity, db),
1872				    TYPEdec (get_info_typbind TypBind, TypBind))
1873                          end
1874) end
1875)
1876 in (LrTable.NT 112,(result,DATATYPE1left,TypBind1right),rest671) end
1877| (170,(_,(_,_,ENDright as END1right))::(_,(MlyValue.Dec Dec1,_,_))::_
1878::(_,(MlyValue.TypBind TypBind1,TypBindleft,_))::_::(_,(
1879MlyValue.DatBind DatBind1,_,_))::(_,(_,ABSTYPEleft as ABSTYPE1left,_))
1880::rest671) => let val result=MlyValue.OneDec_sans_LOCAL(fn _ => let
1881val DatBind as DatBind1=DatBind1 ()
1882val TypBind as TypBind1=TypBind1 ()
1883val Dec as Dec1=Dec1 ()
1884 in (
1885 let val db = rewriteDatBind (DatBind, TypBind)
1886                          in
1887                            ABSTYPEdec
1888			      (PP ABSTYPEleft ENDright, db,
1889			       SEQdec (PP TypBindleft (right (get_info_dec Dec)),
1890				       TYPEdec (get_info_typbind TypBind, TypBind),
1891				       Dec))
1892                          end
1893) end
1894)
1895 in (LrTable.NT 112,(result,ABSTYPE1left,END1right),rest671) end
1896| (171,(_,(MlyValue.FValBind FValBind1,_,FValBind1right))::(_,(_,
1897FUNleft as FUN1left,_))::rest671) => let val result=
1898MlyValue.OneDec_sans_LOCAL(fn _ => let val FValBind as FValBind1=
1899FValBind1 ()
1900 in (
1901 UNRES_FUNdec (PP FUNleft (right (get_info_FValBind FValBind)),
1902					[], FValBind)
1903) end
1904)
1905 in (LrTable.NT 112,(result,FUN1left,FValBind1right),rest671) end
1906| (172,(_,(MlyValue.FValBind FValBind1,_,FValBind1right))::(_,(
1907MlyValue.TyVarSeq1 TyVarSeq11,_,_))::(_,(_,FUNleft as FUN1left,_))::
1908rest671) => let val result=MlyValue.OneDec_sans_LOCAL(fn _ => let val
1909TyVarSeq1 as TyVarSeq11=TyVarSeq11 ()
1910val FValBind as FValBind1=FValBind1 ()
1911 in (
1912 UNRES_FUNdec (PP FUNleft (right (get_info_FValBind FValBind)),
1913					TyVarSeq1, FValBind)
1914) end
1915)
1916 in (LrTable.NT 112,(result,FUN1left,FValBind1right),rest671) end
1917| (173,(_,(_,_,ENDright as END1right))::(_,(MlyValue.Dec Dec2,_,_))::_
1918::(_,(MlyValue.Dec Dec1,_,_))::(_,(_,LOCALleft as LOCAL1left,_))::
1919rest671) => let val result=MlyValue.OneDec(fn _ => let val Dec1=Dec1
1920()
1921val Dec2=Dec2 ()
1922 in ( LOCALdec (PP LOCALleft ENDright, Dec1, Dec2) ) end
1923)
1924 in (LrTable.NT 111,(result,LOCAL1left,END1right),rest671) end
1925| (174,(_,(MlyValue.OneDec_sans_LOCAL OneDec_sans_LOCAL1,
1926OneDec_sans_LOCAL1left,OneDec_sans_LOCAL1right))::rest671) => let val
1927result=MlyValue.OneDec(fn _ => let val OneDec_sans_LOCAL as
1928OneDec_sans_LOCAL1=OneDec_sans_LOCAL1 ()
1929 in ( OneDec_sans_LOCAL ) end
1930)
1931 in (LrTable.NT 111,(result,OneDec_sans_LOCAL1left,
1932OneDec_sans_LOCAL1right),rest671) end
1933| (175,(_,(MlyValue.OneDec OneDec1,OneDec1left,OneDec1right))::rest671
1934) => let val result=MlyValue.OneDec_or_SEMICOLON(fn _ => let val
1935OneDec as OneDec1=OneDec1 ()
1936 in ( SOME OneDec ) end
1937)
1938 in (LrTable.NT 103,(result,OneDec1left,OneDec1right),rest671) end
1939| (176,(_,(_,SEMICOLON1left,SEMICOLON1right))::rest671) => let val
1940result=MlyValue.OneDec_or_SEMICOLON(fn _ => ( NONE ))
1941 in (LrTable.NT 103,(result,SEMICOLON1left,SEMICOLON1right),rest671)
1942 end
1943| (177,(_,(MlyValue.OneDec_or_SEMICOLON OneDec_or_SEMICOLON1,_,
1944OneDec_or_SEMICOLON1right))::(_,(MlyValue.NonEmptyDec NonEmptyDec1,
1945NonEmptyDecleft as NonEmptyDec1left,_))::rest671) => let val result=
1946MlyValue.NonEmptyDec(fn _ => let val NonEmptyDec as NonEmptyDec1=
1947NonEmptyDec1 ()
1948val OneDec_or_SEMICOLON as OneDec_or_SEMICOLON1=OneDec_or_SEMICOLON1
1949()
1950 in (
1951 (case OneDec_or_SEMICOLON of
1952			     SOME dec =>
1953			       composeDec (PP NonEmptyDecleft
1954					     (right (get_info_dec dec)),
1955					   NonEmptyDec, dec)
1956			   | NONE => NonEmptyDec)
1957) end
1958)
1959 in (LrTable.NT 104,(result,NonEmptyDec1left,OneDec_or_SEMICOLON1right
1960),rest671) end
1961| (178,(_,(MlyValue.OneDec_or_SEMICOLON OneDec_or_SEMICOLON1,
1962OneDec_or_SEMICOLON1left,OneDec_or_SEMICOLON1right))::rest671) => let
1963val result=MlyValue.NonEmptyDec(fn _ => let val OneDec_or_SEMICOLON
1964 as OneDec_or_SEMICOLON1=OneDec_or_SEMICOLON1 ()
1965 in (
1966 (case OneDec_or_SEMICOLON of
1967			     SOME dec => dec
1968			   | NONE => EMPTYdec (PP defaultPos defaultPos))
1969) end
1970)
1971 in (LrTable.NT 104,(result,OneDec_or_SEMICOLON1left,
1972OneDec_or_SEMICOLON1right),rest671) end
1973| (179,(_,(MlyValue.NonEmptyDec NonEmptyDec1,NonEmptyDec1left,
1974NonEmptyDec1right))::rest671) => let val result=MlyValue.Dec(fn _ =>
1975let val NonEmptyDec as NonEmptyDec1=NonEmptyDec1 ()
1976 in ( NonEmptyDec ) end
1977)
1978 in (LrTable.NT 64,(result,NonEmptyDec1left,NonEmptyDec1right),rest671
1979) end
1980| (180,rest671) => let val result=MlyValue.Dec(fn _ => (
1981 EMPTYdec (PP defaultPos defaultPos) ))
1982 in (LrTable.NT 64,(result,defaultPos,defaultPos),rest671) end
1983| (181,(_,(MlyValue.AndValBind_opt AndValBind_opt1,_,
1984AndValBind_opt1right))::(_,(MlyValue.Exp_ Exp_1,_,_))::_::(_,(
1985MlyValue.Pat Pat1,Patleft as Pat1left,_))::rest671) => let val result=
1986MlyValue.ValBind(fn _ => let val Pat as Pat1=Pat1 ()
1987val Exp_ as Exp_1=Exp_1 ()
1988val AndValBind_opt as AndValBind_opt1=AndValBind_opt1 ()
1989 in (
1990 PLAINvalbind (PP Patleft
1991					  (rightmost get_info_exp Exp_
1992					             get_info_valbind AndValBind_opt),
1993					Pat, Exp_, AndValBind_opt)
1994) end
1995)
1996 in (LrTable.NT 61,(result,Pat1left,AndValBind_opt1right),rest671) end
1997| (182,(_,(MlyValue.FnValBind FnValBind1,_,FnValBind1right))::(_,(_,
1998RECleft as REC1left,_))::rest671) => let val result=MlyValue.ValBind(
1999fn _ => let val FnValBind as FnValBind1=FnValBind1 ()
2000 in (
2001 RECvalbind (PP RECleft
2002				        (right (get_info_valbind FnValBind)),
2003				      FnValBind)
2004) end
2005)
2006 in (LrTable.NT 61,(result,REC1left,FnValBind1right),rest671) end
2007| (183,(_,(MlyValue.ValBind ValBind1,_,ValBind1right))::(_,(_,AND1left
2008,_))::rest671) => let val result=MlyValue.AndValBind_opt(fn _ => let
2009val ValBind as ValBind1=ValBind1 ()
2010 in ( SOME ValBind ) end
2011)
2012 in (LrTable.NT 72,(result,AND1left,ValBind1right),rest671) end
2013| (184,rest671) => let val result=MlyValue.AndValBind_opt(fn _ => (
2014 NONE ))
2015 in (LrTable.NT 72,(result,defaultPos,defaultPos),rest671) end
2016| (185,(_,(MlyValue.AndFnValBind_opt AndFnValBind_opt1,_,
2017AndFnValBind_opt1right))::(_,(MlyValue.Match_ Match_1,_,_))::(_,(_,
2018FNleft,_))::_::(_,(MlyValue.Pat Pat1,Patleft as Pat1left,_))::rest671)
2019 => let val result=MlyValue.FnValBind(fn _ => let val Pat as Pat1=Pat1
2020 ()
2021val Match_ as Match_1=Match_1 ()
2022val AndFnValBind_opt as AndFnValBind_opt1=AndFnValBind_opt1 ()
2023 in (
2024 PLAINvalbind
2025			    (PP Patleft
2026			       (rightmost get_info_match Match_
2027				          get_info_valbind AndFnValBind_opt),
2028			       Pat,
2029			       FNexp (PP FNleft (right (get_info_match Match_)), Match_),
2030			       AndFnValBind_opt)
2031) end
2032)
2033 in (LrTable.NT 62,(result,Pat1left,AndFnValBind_opt1right),rest671)
2034 end
2035| (186,(_,(MlyValue.AndFnValBind_opt AndFnValBind_opt1,_,
2036AndFnValBind_opt1right))::(_,(MlyValue.ColonTy_seq1 ColonTy_seq11,_,
2037ColonTy_seq1right))::(_,(_,_,RPARENright))::(_,(MlyValue.Match_
2038Match_1,_,_))::(_,(_,FNleft,_))::(_,(_,LPARENleft,_))::_::(_,(
2039MlyValue.Pat Pat1,Patleft as Pat1left,_))::rest671) => let val result=
2040MlyValue.FnValBind(fn _ => let val Pat as Pat1=Pat1 ()
2041val Match_ as Match_1=Match_1 ()
2042val ColonTy_seq1 as ColonTy_seq11=ColonTy_seq11 ()
2043val AndFnValBind_opt as AndFnValBind_opt1=AndFnValBind_opt1 ()
2044 in (
2045 let
2046                            val fnExp =
2047			          FNexp (PP FNleft (right (get_info_match Match_)), Match_)
2048                            val parAtexp =
2049                                  PARatexp (PP LPARENleft RPARENright, fnExp)
2050                            val atexpExp =
2051                                  ATEXPexp (PP LPARENleft RPARENright, parAtexp)
2052
2053                            fun attachTypes (e, nil) = e
2054                              | attachTypes (e, (ty, p) :: rest) =
2055                                  attachTypes (TYPEDexp (PP FNleft p, e, ty), rest)
2056                          in
2057                            PLAINvalbind (PP Patleft
2058					    (rightmost' ColonTy_seq1right
2059					                get_info_valbind AndFnValBind_opt),
2060					  Pat,
2061					  attachTypes (atexpExp, ColonTy_seq1),
2062					  AndFnValBind_opt)
2063                          end
2064) end
2065)
2066 in (LrTable.NT 62,(result,Pat1left,AndFnValBind_opt1right),rest671)
2067 end
2068| (187,(_,(MlyValue.FnValBind FnValBind1,_,FnValBind1right))::(_,(_,
2069RECleft as REC1left,_))::rest671) => let val result=MlyValue.FnValBind
2070(fn _ => let val FnValBind as FnValBind1=FnValBind1 ()
2071 in (
2072 RECvalbind (PP RECleft
2073				        (right (get_info_valbind FnValBind)),
2074				      FnValBind)
2075) end
2076)
2077 in (LrTable.NT 62,(result,REC1left,FnValBind1right),rest671) end
2078| (188,(_,(MlyValue.ColonTy_seq1 ColonTy_seq11,_,ColonTy_seq11right))
2079::(_,(MlyValue.Ty Ty1,_,Tyright))::(_,(_,COLON1left,_))::rest671) =>
2080let val result=MlyValue.ColonTy_seq1(fn _ => let val Ty as Ty1=Ty1 ()
2081val ColonTy_seq1 as ColonTy_seq11=ColonTy_seq11 ()
2082 in ( (Ty, Tyright) :: ColonTy_seq1 ) end
2083)
2084 in (LrTable.NT 86,(result,COLON1left,ColonTy_seq11right),rest671) end
2085| (189,(_,(MlyValue.Ty Ty1,_,Tyright as Ty1right))::(_,(_,COLON1left,_
2086))::rest671) => let val result=MlyValue.ColonTy_seq1(fn _ => let val
2087Ty as Ty1=Ty1 ()
2088 in ( [(Ty, Tyright)] ) end
2089)
2090 in (LrTable.NT 86,(result,COLON1left,Ty1right),rest671) end
2091| (190,(_,(MlyValue.FnValBind FnValBind1,_,FnValBind1right))::(_,(_,
2092AND1left,_))::rest671) => let val result=MlyValue.AndFnValBind_opt(fn
2093_ => let val FnValBind as FnValBind1=FnValBind1 ()
2094 in ( SOME FnValBind ) end
2095)
2096 in (LrTable.NT 73,(result,AND1left,FnValBind1right),rest671) end
2097| (191,rest671) => let val result=MlyValue.AndFnValBind_opt(fn _ => (
2098 NONE ))
2099 in (LrTable.NT 73,(result,defaultPos,defaultPos),rest671) end
2100| (192,(_,(MlyValue.AndTypBind_opt AndTypBind_opt1,_,
2101AndTypBind_opt1right))::(_,(MlyValue.Ty Ty1,_,_))::_::(_,(
2102MlyValue.TypeIdent TypeIdent1,_,_))::(_,(MlyValue.TyVarSeq TyVarSeq1,
2103TyVarSeqleft as TyVarSeq1left,_))::rest671) => let val result=
2104MlyValue.TypBind(fn _ => let val TyVarSeq as TyVarSeq1=TyVarSeq1 ()
2105val TypeIdent as TypeIdent1=TypeIdent1 ()
2106val Ty as Ty1=Ty1 ()
2107val AndTypBind_opt as AndTypBind_opt1=AndTypBind_opt1 ()
2108 in (
2109 TYPBIND (PP TyVarSeqleft
2110				     (rightmost get_info_ty Ty
2111				                get_info_typbind AndTypBind_opt),
2112				   TyVarSeq, mk_TyCon TypeIdent, Ty, AndTypBind_opt)
2113) end
2114)
2115 in (LrTable.NT 60,(result,TyVarSeq1left,AndTypBind_opt1right),rest671
2116) end
2117| (193,(_,(MlyValue.TypBind TypBind1,_,TypBind1right))::(_,(_,AND1left
2118,_))::rest671) => let val result=MlyValue.AndTypBind_opt(fn _ => let
2119val TypBind as TypBind1=TypBind1 ()
2120 in ( SOME TypBind ) end
2121)
2122 in (LrTable.NT 76,(result,AND1left,TypBind1right),rest671) end
2123| (194,rest671) => let val result=MlyValue.AndTypBind_opt(fn _ => (
2124 NONE ))
2125 in (LrTable.NT 76,(result,defaultPos,defaultPos),rest671) end
2126| (195,(_,(MlyValue.AndDatBind_opt AndDatBind_opt1,_,
2127AndDatBind_opt1right))::(_,(MlyValue.ConBind ConBind1,_,_))::_::(_,(
2128MlyValue.TypeIdent TypeIdent1,_,_))::(_,(MlyValue.TyVarSeq TyVarSeq1,
2129TyVarSeqleft as TyVarSeq1left,_))::rest671) => let val result=
2130MlyValue.DatBind(fn _ => let val TyVarSeq as TyVarSeq1=TyVarSeq1 ()
2131val TypeIdent as TypeIdent1=TypeIdent1 ()
2132val ConBind as ConBind1=ConBind1 ()
2133val AndDatBind_opt as AndDatBind_opt1=AndDatBind_opt1 ()
2134 in (
2135 DATBIND (PP TyVarSeqleft
2136				     (rightmost get_info_conbind ConBind
2137				                get_info_datbind AndDatBind_opt),
2138				   TyVarSeq, mk_TyCon TypeIdent,
2139				   ConBind, AndDatBind_opt)
2140) end
2141)
2142 in (LrTable.NT 57,(result,TyVarSeq1left,AndDatBind_opt1right),rest671
2143) end
2144| (196,(_,(MlyValue.AndDatBind_opt AndDatBind_opt1,_,
2145AndDatBind_opt1right))::(_,(MlyValue.ConBind ConBind1,_,_))::_::(_,(
2146MlyValue.TypeIdent TypeIdent1,TypeIdentleft as TypeIdent1left,_))::
2147rest671) => let val result=MlyValue.DatBind_zero_arity(fn _ => let
2148val TypeIdent as TypeIdent1=TypeIdent1 ()
2149val ConBind as ConBind1=ConBind1 ()
2150val AndDatBind_opt as AndDatBind_opt1=AndDatBind_opt1 ()
2151 in (
2152 DATBIND (PP TypeIdentleft
2153				     (rightmost get_info_conbind ConBind
2154				                get_info_datbind AndDatBind_opt),
2155				   [], mk_TyCon TypeIdent,
2156				   ConBind, AndDatBind_opt)
2157) end
2158)
2159 in (LrTable.NT 58,(result,TypeIdent1left,AndDatBind_opt1right),
2160rest671) end
2161| (197,(_,(MlyValue.AndDatBind_opt AndDatBind_opt1,_,
2162AndDatBind_opt1right))::(_,(MlyValue.ConBind ConBind1,_,_))::_::(_,(
2163MlyValue.TypeIdent TypeIdent1,_,_))::(_,(MlyValue.TyVarSeq1 TyVarSeq11
2164,TyVarSeq1left as TyVarSeq11left,_))::rest671) => let val result=
2165MlyValue.DatBind_nonzero_arity(fn _ => let val TyVarSeq1 as TyVarSeq11
2166=TyVarSeq11 ()
2167val TypeIdent as TypeIdent1=TypeIdent1 ()
2168val ConBind as ConBind1=ConBind1 ()
2169val AndDatBind_opt as AndDatBind_opt1=AndDatBind_opt1 ()
2170 in (
2171 DATBIND (PP TyVarSeq1left
2172				     (rightmost get_info_conbind ConBind
2173				                get_info_datbind AndDatBind_opt),
2174				   TyVarSeq1, mk_TyCon TypeIdent,
2175				   ConBind, AndDatBind_opt)
2176) end
2177)
2178 in (LrTable.NT 59,(result,TyVarSeq11left,AndDatBind_opt1right),
2179rest671) end
2180| (198,(_,(MlyValue.DatBind DatBind1,_,DatBind1right))::(_,(_,AND1left
2181,_))::rest671) => let val result=MlyValue.AndDatBind_opt(fn _ => let
2182val DatBind as DatBind1=DatBind1 ()
2183 in ( SOME DatBind ) end
2184)
2185 in (LrTable.NT 77,(result,AND1left,DatBind1right),rest671) end
2186| (199,rest671) => let val result=MlyValue.AndDatBind_opt(fn _ => (
2187 NONE ))
2188 in (LrTable.NT 77,(result,defaultPos,defaultPos),rest671) end
2189| (200,(_,(MlyValue.BarConBind_opt BarConBind_opt1,_,
2190BarConBind_opt1right))::(_,(MlyValue.OfTy_opt OfTy_opt1,_,_))::(_,(
2191MlyValue.OpIdent OpIdent1,OpIdentleft as OpIdent1left,OpIdentright))::
2192rest671) => let val result=MlyValue.ConBind(fn _ => let val OpIdent
2193 as OpIdent1=OpIdent1 ()
2194val OfTy_opt as OfTy_opt1=OfTy_opt1 ()
2195val BarConBind_opt as BarConBind_opt1=BarConBind_opt1 ()
2196 in (
2197 let val OP_OPT (id, withOp) = OpIdent
2198                          in
2199                            CONBIND (PP OpIdentleft
2200				       (rightmost_of_three OpIdentright
2201					  get_info_ty OfTy_opt
2202					  get_info_conbind BarConBind_opt),
2203				     OP_OPT (mk_Id id, withOp),
2204				     OfTy_opt, BarConBind_opt)
2205                          end
2206) end
2207)
2208 in (LrTable.NT 56,(result,OpIdent1left,BarConBind_opt1right),rest671)
2209 end
2210| (201,(_,(MlyValue.ConBind ConBind1,_,ConBind1right))::(_,(_,BAR1left
2211,_))::rest671) => let val result=MlyValue.BarConBind_opt(fn _ => let
2212val ConBind as ConBind1=ConBind1 ()
2213 in ( SOME ConBind ) end
2214)
2215 in (LrTable.NT 78,(result,BAR1left,ConBind1right),rest671) end
2216| (202,rest671) => let val result=MlyValue.BarConBind_opt(fn _ => (
2217 NONE ))
2218 in (LrTable.NT 78,(result,defaultPos,defaultPos),rest671) end
2219| (203,(_,(MlyValue.AndExBind_opt AndExBind_opt1,_,AndExBind_opt1right
2220))::(_,(MlyValue.OfTy_opt OfTy_opt1,_,_))::(_,(MlyValue.OpIdent
2221OpIdent1,OpIdentleft as OpIdent1left,OpIdentright))::rest671) => let
2222val result=MlyValue.ExBind(fn _ => let val OpIdent as OpIdent1=
2223OpIdent1 ()
2224val OfTy_opt as OfTy_opt1=OfTy_opt1 ()
2225val AndExBind_opt as AndExBind_opt1=AndExBind_opt1 ()
2226 in (
2227 let val OP_OPT (id, withOp) = OpIdent
2228                          in
2229                            EXBIND (PP OpIdentleft
2230				      (rightmost_of_three OpIdentright
2231					  get_info_ty OfTy_opt
2232					  get_info_exbind AndExBind_opt),
2233				    OP_OPT (mk_Id id, withOp),
2234				    OfTy_opt, AndExBind_opt)
2235                          end
2236) end
2237)
2238 in (LrTable.NT 55,(result,OpIdent1left,AndExBind_opt1right),rest671)
2239 end
2240| (204,(_,(MlyValue.AndExBind_opt AndExBind_opt1,_,AndExBind_opt1right
2241))::(_,(MlyValue.LongOpEqIdent LongOpEqIdent1,_,LongOpEqIdentright))::
2242_::(_,(MlyValue.OpIdent OpIdent1,OpIdentleft as OpIdent1left,_))::
2243rest671) => let val result=MlyValue.ExBind(fn _ => let val OpIdent as
2244OpIdent1=OpIdent1 ()
2245val LongOpEqIdent as LongOpEqIdent1=LongOpEqIdent1 ()
2246val AndExBind_opt as AndExBind_opt1=AndExBind_opt1 ()
2247 in (
2248 let val OP_OPT (id1, withOp1) = OpIdent
2249			      val OP_OPT (id2, withOp2) = LongOpEqIdent
2250                          in
2251                            EXEQUAL (PP OpIdentleft
2252				       (rightmost' LongOpEqIdentright
2253					  get_info_exbind AndExBind_opt),
2254				     OP_OPT (mk_Id id1, withOp1),
2255				     OP_OPT (mk_LongId id2, withOp2),
2256				     AndExBind_opt)
2257                          end
2258) end
2259)
2260 in (LrTable.NT 55,(result,OpIdent1left,AndExBind_opt1right),rest671)
2261 end
2262| (205,(_,(MlyValue.ExBind ExBind1,_,ExBind1right))::(_,(_,AND1left,_)
2263)::rest671) => let val result=MlyValue.AndExBind_opt(fn _ => let val
2264ExBind as ExBind1=ExBind1 ()
2265 in ( SOME ExBind ) end
2266)
2267 in (LrTable.NT 80,(result,AND1left,ExBind1right),rest671) end
2268| (206,rest671) => let val result=MlyValue.AndExBind_opt(fn _ => (
2269 NONE ))
2270 in (LrTable.NT 80,(result,defaultPos,defaultPos),rest671) end
2271| (207,(_,(MlyValue.AndFValBind_opt AndFValBind_opt1,_,
2272AndFValBind_opt1right))::(_,(MlyValue.FClause FClause1,FClauseleft as
2273FClause1left,_))::rest671) => let val result=MlyValue.FValBind(fn _
2274 => let val FClause as FClause1=FClause1 ()
2275val AndFValBind_opt as AndFValBind_opt1=AndFValBind_opt1 ()
2276 in (
2277 FVALBIND (PP FClauseleft
2278				      (rightmost get_info_FClause FClause
2279				                 get_info_FValBind AndFValBind_opt),
2280				    FClause, AndFValBind_opt)
2281) end
2282)
2283 in (LrTable.NT 63,(result,FClause1left,AndFValBind_opt1right),rest671
2284) end
2285| (208,(_,(MlyValue.FValBind FValBind1,_,FValBind1right))::(_,(_,
2286AND1left,_))::rest671) => let val result=MlyValue.AndFValBind_opt(fn _
2287 => let val FValBind as FValBind1=FValBind1 ()
2288 in ( SOME FValBind ) end
2289)
2290 in (LrTable.NT 74,(result,AND1left,FValBind1right),rest671) end
2291| (209,rest671) => let val result=MlyValue.AndFValBind_opt(fn _ => (
2292 NONE ))
2293 in (LrTable.NT 74,(result,defaultPos,defaultPos),rest671) end
2294| (210,(_,(MlyValue.BarFClause_opt BarFClause_opt1,_,
2295BarFClause_opt1right))::(_,(MlyValue.Exp_ Exp_1,_,_))::_::(_,(
2296MlyValue.ColonTy_opt ColonTy_opt1,_,_))::(_,(MlyValue.AtPat_seq1
2297AtPat_seq11,AtPat_seq1left as AtPat_seq11left,_))::rest671) => let
2298val result=MlyValue.FClause(fn _ => let val AtPat_seq1 as AtPat_seq11=
2299AtPat_seq11 ()
2300val ColonTy_opt as ColonTy_opt1=ColonTy_opt1 ()
2301val Exp_ as Exp_1=Exp_1 ()
2302val BarFClause_opt as BarFClause_opt1=BarFClause_opt1 ()
2303 in (
2304 FCLAUSE (PP AtPat_seq1left
2305				     (rightmost get_info_exp Exp_
2306				                get_info_FClause BarFClause_opt),
2307				   AtPat_seq1, ColonTy_opt,
2308				   Exp_, BarFClause_opt)
2309) end
2310)
2311 in (LrTable.NT 70,(result,AtPat_seq11left,BarFClause_opt1right),
2312rest671) end
2313| (211,(_,(MlyValue.FClause FClause1,_,FClause1right))::(_,(_,BAR1left
2314,_))::rest671) => let val result=MlyValue.BarFClause_opt(fn _ => let
2315val FClause as FClause1=FClause1 ()
2316 in ( SOME FClause ) end
2317)
2318 in (LrTable.NT 75,(result,BAR1left,FClause1right),rest671) end
2319| (212,rest671) => let val result=MlyValue.BarFClause_opt(fn _ => (
2320 NONE ))
2321 in (LrTable.NT 75,(result,defaultPos,defaultPos),rest671) end
2322| (213,(_,(MlyValue.AtPat_seq1 AtPat_seq11,_,AtPat_seq11right))::(_,(
2323MlyValue.AtPat AtPat1,AtPat1left,_))::rest671) => let val result=
2324MlyValue.AtPat_seq2(fn _ => let val AtPat as AtPat1=AtPat1 ()
2325val AtPat_seq1 as AtPat_seq11=AtPat_seq11 ()
2326 in ( AtPat :: AtPat_seq1 ) end
2327)
2328 in (LrTable.NT 97,(result,AtPat1left,AtPat_seq11right),rest671) end
2329| (214,(_,(MlyValue.AtPat_seq1 AtPat_seq11,_,AtPat_seq11right))::(_,(
2330MlyValue.AtPat AtPat1,AtPat1left,_))::rest671) => let val result=
2331MlyValue.AtPat_seq1(fn _ => let val AtPat as AtPat1=AtPat1 ()
2332val AtPat_seq1 as AtPat_seq11=AtPat_seq11 ()
2333 in ( AtPat :: AtPat_seq1 ) end
2334)
2335 in (LrTable.NT 98,(result,AtPat1left,AtPat_seq11right),rest671) end
2336| (215,(_,(MlyValue.AtPat AtPat1,AtPat1left,AtPat1right))::rest671)
2337 => let val result=MlyValue.AtPat_seq1(fn _ => let val AtPat as AtPat1
2338=AtPat1 ()
2339 in ( [AtPat] ) end
2340)
2341 in (LrTable.NT 98,(result,AtPat1left,AtPat1right),rest671) end
2342| (216,(_,(MlyValue.Ty Ty1,_,Ty1right))::(_,(_,COLON1left,_))::rest671
2343) => let val result=MlyValue.ColonTy_opt(fn _ => let val Ty as Ty1=Ty1
2344 ()
2345 in ( SOME Ty ) end
2346)
2347 in (LrTable.NT 85,(result,COLON1left,Ty1right),rest671) end
2348| (217,rest671) => let val result=MlyValue.ColonTy_opt(fn _ => ( NONE
2349))
2350 in (LrTable.NT 85,(result,defaultPos,defaultPos),rest671) end
2351| (218,(_,(MlyValue.Ty Ty1,_,Ty1right))::(_,(_,OF1left,_))::rest671)
2352 => let val result=MlyValue.OfTy_opt(fn _ => let val Ty as Ty1=Ty1 ()
2353 in ( SOME Ty ) end
2354)
2355 in (LrTable.NT 89,(result,OF1left,Ty1right),rest671) end
2356| (219,rest671) => let val result=MlyValue.OfTy_opt(fn _ => ( NONE ))
2357 in (LrTable.NT 89,(result,defaultPos,defaultPos),rest671) end
2358| (220,(_,(_,UNDERBARleft as UNDERBAR1left,UNDERBARright as
2359UNDERBAR1right))::rest671) => let val result=MlyValue.AtPat(fn _ => (
2360 WILDCARDatpat (PP UNDERBARleft UNDERBARright) ))
2361 in (LrTable.NT 54,(result,UNDERBAR1left,UNDERBAR1right),rest671) end
2362| (221,(_,(MlyValue.SCon SCon1,SConleft as SCon1left,SConright as
2363SCon1right))::rest671) => let val result=MlyValue.AtPat(fn _ => let
2364val SCon as SCon1=SCon1 ()
2365 in ( SCONatpat (PP SConleft SConright, SCon) ) end
2366)
2367 in (LrTable.NT 54,(result,SCon1left,SCon1right),rest671) end
2368| (222,(_,(MlyValue.LongOpIdent LongOpIdent1,LongOpIdentleft as
2369LongOpIdent1left,LongOpIdentright as LongOpIdent1right))::rest671) =>
2370let val result=MlyValue.AtPat(fn _ => let val LongOpIdent as
2371LongOpIdent1=LongOpIdent1 ()
2372 in (
2373 let val OP_OPT (id, withOp) = LongOpIdent
2374                          in
2375                            LONGIDatpat (PP LongOpIdentleft LongOpIdentright,
2376					 OP_OPT (mk_LongId id, withOp))
2377                          end
2378) end
2379)
2380 in (LrTable.NT 54,(result,LongOpIdent1left,LongOpIdent1right),rest671
2381) end
2382| (223,(_,(_,_,EQUALSright as EQUALS1right))::(_,(_,OPleft as OP1left,
2383_))::rest671) => let val result=MlyValue.AtPat(fn _ => (
2384 LONGIDatpat (PP OPleft EQUALSright,
2385				       OP_OPT (mk_LongId ["="], true))
2386))
2387 in (LrTable.NT 54,(result,OP1left,EQUALS1right),rest671) end
2388| (224,(_,(_,_,RBRACEright as RBRACE1right))::(_,(MlyValue.PatRow_opt
2389PatRow_opt1,_,_))::(_,(_,LBRACEleft as LBRACE1left,_))::rest671) =>
2390let val result=MlyValue.AtPat(fn _ => let val PatRow_opt as
2391PatRow_opt1=PatRow_opt1 ()
2392 in ( RECORDatpat (PP LBRACEleft RBRACEright, PatRow_opt) ) end
2393)
2394 in (LrTable.NT 54,(result,LBRACE1left,RBRACE1right),rest671) end
2395| (225,(_,(_,_,RPARENright as RPAREN1right))::(_,(MlyValue.Pat Pat1,_,
2396_))::(_,(_,LPARENleft as LPAREN1left,_))::rest671) => let val result=
2397MlyValue.AtPat(fn _ => let val Pat as Pat1=Pat1 ()
2398 in ( PARatpat (PP LPARENleft RPARENright, Pat) ) end
2399)
2400 in (LrTable.NT 54,(result,LPAREN1left,RPAREN1right),rest671) end
2401| (226,(_,(_,_,RPARENright as RPAREN1right))::(_,(_,LPARENleft as
2402LPAREN1left,_))::rest671) => let val result=MlyValue.AtPat(fn _ => (
2403 RECORDatpat (PP LPARENleft RPARENright, NONE) ))
2404 in (LrTable.NT 54,(result,LPAREN1left,RPAREN1right),rest671) end
2405| (227,(_,(_,_,RPARENright as RPAREN1right))::(_,(
2406MlyValue.PatComma_seq2 PatComma_seq21,_,_))::(_,(_,LPARENleft as
2407LPAREN1left,_))::rest671) => let val result=MlyValue.AtPat(fn _ =>
2408let val PatComma_seq2 as PatComma_seq21=PatComma_seq21 ()
2409 in ( tuple_atpat_with_info (PP LPARENleft RPARENright) PatComma_seq2
2410) end
2411)
2412 in (LrTable.NT 54,(result,LPAREN1left,RPAREN1right),rest671) end
2413| (228,(_,(_,_,RBRACKETright as RBRACKET1right))::(_,(
2414MlyValue.PatComma_seq0 PatComma_seq01,_,_))::(_,(_,LBRACKETleft as
2415LBRACKET1left,_))::rest671) => let val result=MlyValue.AtPat(fn _ =>
2416let val PatComma_seq0 as PatComma_seq01=PatComma_seq01 ()
2417 in ( list_atpat (PP LBRACKETleft RBRACKETright) PatComma_seq0 ) end
2418)
2419 in (LrTable.NT 54,(result,LBRACKET1left,RBRACKET1right),rest671) end
2420| (229,(_,(MlyValue.PatRow PatRow1,PatRow1left,PatRow1right))::rest671
2421) => let val result=MlyValue.PatRow_opt(fn _ => let val PatRow as
2422PatRow1=PatRow1 ()
2423 in ( SOME PatRow ) end
2424)
2425 in (LrTable.NT 82,(result,PatRow1left,PatRow1right),rest671) end
2426| (230,rest671) => let val result=MlyValue.PatRow_opt(fn _ => ( NONE )
2427)
2428 in (LrTable.NT 82,(result,defaultPos,defaultPos),rest671) end
2429| (231,(_,(_,DOTDOTDOTleft as DOTDOTDOT1left,DOTDOTDOTright as
2430DOTDOTDOT1right))::rest671) => let val result=MlyValue.PatRow(fn _ =>
2431( DecGrammar.DOTDOTDOT (PP DOTDOTDOTleft DOTDOTDOTright) ))
2432 in (LrTable.NT 53,(result,DOTDOTDOT1left,DOTDOTDOT1right),rest671)
2433 end
2434| (232,(_,(MlyValue.CommaPatRow_opt CommaPatRow_opt1,_,
2435CommaPatRow_opt1right))::(_,(MlyValue.Pat Pat1,_,_))::_::(_,(
2436MlyValue.Label Label1,Labelleft as Label1left,_))::rest671) => let
2437val result=MlyValue.PatRow(fn _ => let val Label as Label1=Label1 ()
2438val Pat as Pat1=Pat1 ()
2439val CommaPatRow_opt as CommaPatRow_opt1=CommaPatRow_opt1 ()
2440 in (
2441 PATROW (PP Labelleft
2442				    (rightmost get_info_pat Pat
2443				               get_info_patrow CommaPatRow_opt),
2444				  Label, Pat, CommaPatRow_opt)
2445) end
2446)
2447 in (LrTable.NT 53,(result,Label1left,CommaPatRow_opt1right),rest671)
2448 end
2449| (233,(_,(MlyValue.CommaPatRow_opt CommaPatRow_opt1,_,
2450CommaPatRow_opt1right))::(_,(MlyValue.AsPat_opt AsPat_opt1,_,_))::(_,(
2451MlyValue.ColonTy_opt ColonTy_opt1,_,_))::(_,(MlyValue.Ident Ident1,
2452Identleft as Ident1left,Identright))::rest671) => let val result=
2453MlyValue.PatRow(fn _ => let val Ident as Ident1=Ident1 ()
2454val ColonTy_opt as ColonTy_opt1=ColonTy_opt1 ()
2455val AsPat_opt as AsPat_opt1=AsPat_opt1 ()
2456val CommaPatRow_opt as CommaPatRow_opt1=CommaPatRow_opt1 ()
2457 in (
2458 PATROW
2459			    (PP Identleft
2460			       (rightmost_of_four Identright
2461				  get_info_ty ColonTy_opt
2462				  get_info_pat AsPat_opt
2463				  get_info_patrow CommaPatRow_opt),
2464			     mk_IdentLab Ident,
2465			     let
2466			       val info_ident = PP Identleft Identright
2467			       val idPat =
2468				     ATPATpat
2469				       (info_ident,
2470					LONGIDatpat
2471					  (info_ident, OP_OPT (mk_LongId [Ident], false)))
2472			     in
2473			       case (ColonTy_opt, AsPat_opt) of
2474				 (_, SOME pat) =>
2475				   LAYEREDpat (PP Identleft (right (get_info_pat pat)),
2476					       OP_OPT (mk_Id Ident, false),
2477					       ColonTy_opt, pat)
2478			       | (SOME ty, NONE) =>
2479				   TYPEDpat (PP Identleft (right (get_info_ty ty)),
2480					     idPat, ty)
2481			       | (NONE, NONE) => idPat
2482			     end,
2483			     CommaPatRow_opt)
2484) end
2485)
2486 in (LrTable.NT 53,(result,Ident1left,CommaPatRow_opt1right),rest671)
2487 end
2488| (234,(_,(MlyValue.Pat Pat1,_,Pat1right))::(_,(_,AS1left,_))::rest671
2489) => let val result=MlyValue.AsPat_opt(fn _ => let val Pat as Pat1=
2490Pat1 ()
2491 in ( SOME Pat ) end
2492)
2493 in (LrTable.NT 83,(result,AS1left,Pat1right),rest671) end
2494| (235,rest671) => let val result=MlyValue.AsPat_opt(fn _ => ( NONE ))
2495 in (LrTable.NT 83,(result,defaultPos,defaultPos),rest671) end
2496| (236,(_,(MlyValue.PatRow PatRow1,_,PatRow1right))::(_,(_,COMMA1left,
2497_))::rest671) => let val result=MlyValue.CommaPatRow_opt(fn _ => let
2498val PatRow as PatRow1=PatRow1 ()
2499 in ( SOME PatRow ) end
2500)
2501 in (LrTable.NT 84,(result,COMMA1left,PatRow1right),rest671) end
2502| (237,rest671) => let val result=MlyValue.CommaPatRow_opt(fn _ => (
2503 NONE ))
2504 in (LrTable.NT 84,(result,defaultPos,defaultPos),rest671) end
2505| (238,(_,(MlyValue.PatComma_seq1 PatComma_seq11,PatComma_seq11left,
2506PatComma_seq11right))::rest671) => let val result=
2507MlyValue.PatComma_seq0(fn _ => let val PatComma_seq1 as PatComma_seq11
2508=PatComma_seq11 ()
2509 in ( PatComma_seq1 ) end
2510)
2511 in (LrTable.NT 93,(result,PatComma_seq11left,PatComma_seq11right),
2512rest671) end
2513| (239,rest671) => let val result=MlyValue.PatComma_seq0(fn _ => (
2514 nil ))
2515 in (LrTable.NT 93,(result,defaultPos,defaultPos),rest671) end
2516| (240,(_,(MlyValue.PatComma_seq1 PatComma_seq11,_,PatComma_seq11right
2517))::_::(_,(MlyValue.Pat Pat1,Pat1left,_))::rest671) => let val result=
2518MlyValue.PatComma_seq1(fn _ => let val Pat as Pat1=Pat1 ()
2519val PatComma_seq1 as PatComma_seq11=PatComma_seq11 ()
2520 in ( Pat :: PatComma_seq1 ) end
2521)
2522 in (LrTable.NT 94,(result,Pat1left,PatComma_seq11right),rest671) end
2523| (241,(_,(MlyValue.Pat Pat1,Pat1left,Pat1right))::rest671) => let
2524val result=MlyValue.PatComma_seq1(fn _ => let val Pat as Pat1=Pat1 ()
2525 in ( [Pat] ) end
2526)
2527 in (LrTable.NT 94,(result,Pat1left,Pat1right),rest671) end
2528| (242,(_,(MlyValue.PatComma_seq1 PatComma_seq11,_,PatComma_seq11right
2529))::_::(_,(MlyValue.Pat Pat1,Pat1left,_))::rest671) => let val result=
2530MlyValue.PatComma_seq2(fn _ => let val Pat as Pat1=Pat1 ()
2531val PatComma_seq1 as PatComma_seq11=PatComma_seq11 ()
2532 in ( Pat :: PatComma_seq1 ) end
2533)
2534 in (LrTable.NT 95,(result,Pat1left,PatComma_seq11right),rest671) end
2535| (243,(_,(MlyValue.AtPat AtPat1,AtPat1left,AtPat1right))::rest671)
2536 => let val result=MlyValue.Pat(fn _ => let val AtPat as AtPat1=AtPat1
2537 ()
2538 in ( ATPATpat (get_info_atpat AtPat, AtPat) ) end
2539)
2540 in (LrTable.NT 52,(result,AtPat1left,AtPat1right),rest671) end
2541| (244,(_,(MlyValue.AtPat_seq2 AtPat_seq21,AtPat_seq2left as
2542AtPat_seq21left,AtPat_seq2right as AtPat_seq21right))::rest671) =>
2543let val result=MlyValue.Pat(fn _ => let val AtPat_seq2 as AtPat_seq21=
2544AtPat_seq21 ()
2545 in (
2546 UNRES_INFIXpat (PP AtPat_seq2left AtPat_seq2right,
2547					  AtPat_seq2)
2548) end
2549)
2550 in (LrTable.NT 52,(result,AtPat_seq21left,AtPat_seq21right),rest671)
2551 end
2552| (245,(_,(MlyValue.Ty Ty1,_,Tyright as Ty1right))::_::(_,(
2553MlyValue.Pat Pat1,Patleft as Pat1left,_))::rest671) => let val result=
2554MlyValue.Pat(fn _ => let val Pat as Pat1=Pat1 ()
2555val Ty as Ty1=Ty1 ()
2556 in ( TYPEDpat (PP Patleft Tyright, Pat, Ty) ) end
2557)
2558 in (LrTable.NT 52,(result,Pat1left,Ty1right),rest671) end
2559| (246,(_,(MlyValue.Pat Pat2,_,Pat2right))::_::(_,(MlyValue.Pat Pat1,
2560Pat1left,_))::rest671) => let val result=MlyValue.Pat(fn _ => let val
2561Pat1=Pat1 ()
2562val Pat2=Pat2 ()
2563 in ( layeredPat (PP Pat1left Pat2right, Pat1, Pat2) ) end
2564)
2565 in (LrTable.NT 52,(result,Pat1left,Pat2right),rest671) end
2566| (247,(_,(MlyValue.Ty Ty1,_,Tyright as Ty1right))::_::(_,(
2567MlyValue.TupleTy TupleTy1,TupleTyleft as TupleTy1left,_))::rest671)
2568 => let val result=MlyValue.Ty(fn _ => let val TupleTy as TupleTy1=
2569TupleTy1 ()
2570val Ty as Ty1=Ty1 ()
2571 in (
2572 FNty (PP TupleTyleft Tyright,
2573				(case TupleTy of
2574				   [t] => t
2575				 | ts => tuple_type (PP TupleTyleft Tyright) ts),
2576				Ty)
2577) end
2578)
2579 in (LrTable.NT 46,(result,TupleTy1left,Ty1right),rest671) end
2580| (248,(_,(MlyValue.TupleTy TupleTy1,TupleTyleft as TupleTy1left,
2581TupleTyright as TupleTy1right))::rest671) => let val result=
2582MlyValue.Ty(fn _ => let val TupleTy as TupleTy1=TupleTy1 ()
2583 in (
2584 (case TupleTy of
2585			     [t] => t
2586			   | ts => tuple_type (PP TupleTyleft TupleTyright) ts)
2587) end
2588)
2589 in (LrTable.NT 46,(result,TupleTy1left,TupleTy1right),rest671) end
2590| (249,(_,(MlyValue.Ty_sans_STAR Ty_sans_STAR1,Ty_sans_STAR1left,
2591Ty_sans_STAR1right))::rest671) => let val result=MlyValue.TupleTy(fn _
2592 => let val Ty_sans_STAR as Ty_sans_STAR1=Ty_sans_STAR1 ()
2593 in ( [Ty_sans_STAR] ) end
2594)
2595 in (LrTable.NT 47,(result,Ty_sans_STAR1left,Ty_sans_STAR1right),
2596rest671) end
2597| (250,(_,(MlyValue.TupleTy TupleTy1,_,TupleTy1right))::_::(_,(
2598MlyValue.Ty_sans_STAR Ty_sans_STAR1,Ty_sans_STAR1left,_))::rest671)
2599 => let val result=MlyValue.TupleTy(fn _ => let val Ty_sans_STAR as
2600Ty_sans_STAR1=Ty_sans_STAR1 ()
2601val TupleTy as TupleTy1=TupleTy1 ()
2602 in ( Ty_sans_STAR :: TupleTy ) end
2603)
2604 in (LrTable.NT 47,(result,Ty_sans_STAR1left,TupleTy1right),rest671)
2605 end
2606| (251,(_,(MlyValue.LongTypeIdent LongTypeIdent1,_,LongTypeIdentright
2607 as LongTypeIdent1right))::_::(_,(MlyValue.TyComma_seq2 TyComma_seq21,
2608_,_))::(_,(_,LPARENleft as LPAREN1left,_))::rest671) => let val result
2609=MlyValue.Ty_sans_STAR(fn _ => let val TyComma_seq2 as TyComma_seq21=
2610TyComma_seq21 ()
2611val LongTypeIdent as LongTypeIdent1=LongTypeIdent1 ()
2612 in (
2613 CONty (PP LPARENleft LongTypeIdentright,
2614				 TyComma_seq2, mk_LongTyCon LongTypeIdent)
2615) end
2616)
2617 in (LrTable.NT 48,(result,LPAREN1left,LongTypeIdent1right),rest671)
2618 end
2619| (252,(_,(MlyValue.LongTypeIdent LongTypeIdent1,_,LongTypeIdentright
2620 as LongTypeIdent1right))::(_,(MlyValue.Ty_sans_STAR Ty_sans_STAR1,
2621Ty_sans_STARleft as Ty_sans_STAR1left,_))::rest671) => let val result=
2622MlyValue.Ty_sans_STAR(fn _ => let val Ty_sans_STAR as Ty_sans_STAR1=
2623Ty_sans_STAR1 ()
2624val LongTypeIdent as LongTypeIdent1=LongTypeIdent1 ()
2625 in (
2626 CONty (PP Ty_sans_STARleft LongTypeIdentright,
2627				 [Ty_sans_STAR], mk_LongTyCon LongTypeIdent)
2628) end
2629)
2630 in (LrTable.NT 48,(result,Ty_sans_STAR1left,LongTypeIdent1right),
2631rest671) end
2632| (253,(_,(MlyValue.AtomicTy AtomicTy1,AtomicTy1left,AtomicTy1right))
2633::rest671) => let val result=MlyValue.Ty_sans_STAR(fn _ => let val
2634AtomicTy as AtomicTy1=AtomicTy1 ()
2635 in ( AtomicTy ) end
2636)
2637 in (LrTable.NT 48,(result,AtomicTy1left,AtomicTy1right),rest671) end
2638| (254,(_,(MlyValue.TyComma_seq2 TyComma_seq21,_,TyComma_seq21right))
2639::_::(_,(MlyValue.Ty Ty1,Ty1left,_))::rest671) => let val result=
2640MlyValue.TyComma_seq2(fn _ => let val Ty as Ty1=Ty1 ()
2641val TyComma_seq2 as TyComma_seq21=TyComma_seq21 ()
2642 in ( Ty :: TyComma_seq2 ) end
2643)
2644 in (LrTable.NT 102,(result,Ty1left,TyComma_seq21right),rest671) end
2645| (255,(_,(MlyValue.Ty Ty2,_,Ty2right))::_::(_,(MlyValue.Ty Ty1,
2646Ty1left,_))::rest671) => let val result=MlyValue.TyComma_seq2(fn _ =>
2647let val Ty1=Ty1 ()
2648val Ty2=Ty2 ()
2649 in ( [Ty1, Ty2] ) end
2650)
2651 in (LrTable.NT 102,(result,Ty1left,Ty2right),rest671) end
2652| (256,(_,(MlyValue.LongTypeIdent LongTypeIdent1,LongTypeIdentleft as
2653LongTypeIdent1left,LongTypeIdentright as LongTypeIdent1right))::
2654rest671) => let val result=MlyValue.AtomicTy(fn _ => let val
2655LongTypeIdent as LongTypeIdent1=LongTypeIdent1 ()
2656 in (
2657 CONty (PP LongTypeIdentleft LongTypeIdentright,
2658				 [], mk_LongTyCon LongTypeIdent)
2659) end
2660)
2661 in (LrTable.NT 49,(result,LongTypeIdent1left,LongTypeIdent1right),
2662rest671) end
2663| (257,(_,(MlyValue.TYVAR TYVAR1,TYVARleft as TYVAR1left,TYVARright
2664 as TYVAR1right))::rest671) => let val result=MlyValue.AtomicTy(fn _
2665 => let val TYVAR as TYVAR1=TYVAR1 ()
2666 in ( TYVARty(PP TYVARleft TYVARright, mk_TyVar TYVAR) ) end
2667)
2668 in (LrTable.NT 49,(result,TYVAR1left,TYVAR1right),rest671) end
2669| (258,(_,(_,_,RBRACEright as RBRACE1right))::(_,(MlyValue.TyRow_opt
2670TyRow_opt1,_,_))::(_,(_,LBRACEleft as LBRACE1left,_))::rest671) =>
2671let val result=MlyValue.AtomicTy(fn _ => let val TyRow_opt as
2672TyRow_opt1=TyRow_opt1 ()
2673 in ( RECORDty (PP LBRACEleft RBRACEright, TyRow_opt) ) end
2674)
2675 in (LrTable.NT 49,(result,LBRACE1left,RBRACE1right),rest671) end
2676| (259,(_,(_,_,RPARENright as RPAREN1right))::(_,(MlyValue.Ty Ty1,_,_)
2677)::(_,(_,LPARENleft as LPAREN1left,_))::rest671) => let val result=
2678MlyValue.AtomicTy(fn _ => let val Ty as Ty1=Ty1 ()
2679 in ( PARty (PP LPARENleft RPARENright, Ty) ) end
2680)
2681 in (LrTable.NT 49,(result,LPAREN1left,RPAREN1right),rest671) end
2682| (260,(_,(MlyValue.TyRow TyRow1,TyRow1left,TyRow1right))::rest671)
2683 => let val result=MlyValue.TyRow_opt(fn _ => let val TyRow as TyRow1=
2684TyRow1 ()
2685 in ( SOME TyRow ) end
2686)
2687 in (LrTable.NT 87,(result,TyRow1left,TyRow1right),rest671) end
2688| (261,rest671) => let val result=MlyValue.TyRow_opt(fn _ => ( NONE ))
2689 in (LrTable.NT 87,(result,defaultPos,defaultPos),rest671) end
2690| (262,(_,(MlyValue.CommaTyRow_opt CommaTyRow_opt1,_,
2691CommaTyRow_opt1right))::(_,(MlyValue.Ty Ty1,_,_))::_::(_,(
2692MlyValue.Label Label1,Labelleft as Label1left,_))::rest671) => let
2693val result=MlyValue.TyRow(fn _ => let val Label as Label1=Label1 ()
2694val Ty as Ty1=Ty1 ()
2695val CommaTyRow_opt as CommaTyRow_opt1=CommaTyRow_opt1 ()
2696 in (
2697 TYROW (PP Labelleft
2698				   (rightmost get_info_ty Ty
2699				              get_info_tyrow CommaTyRow_opt),
2700				 Label, Ty, CommaTyRow_opt)
2701) end
2702)
2703 in (LrTable.NT 45,(result,Label1left,CommaTyRow_opt1right),rest671)
2704 end
2705| (263,(_,(MlyValue.TyRow TyRow1,_,TyRow1right))::(_,(_,COMMA1left,_))
2706::rest671) => let val result=MlyValue.CommaTyRow_opt(fn _ => let val
2707TyRow as TyRow1=TyRow1 ()
2708 in ( SOME TyRow ) end
2709)
2710 in (LrTable.NT 88,(result,COMMA1left,TyRow1right),rest671) end
2711| (264,rest671) => let val result=MlyValue.CommaTyRow_opt(fn _ => (
2712 NONE ))
2713 in (LrTable.NT 88,(result,defaultPos,defaultPos),rest671) end
2714| (265,(_,(MlyValue.DECPOSINTEGER DECPOSINTEGER1,DECPOSINTEGERleft as
2715DECPOSINTEGER1left,DECPOSINTEGER1right))::rest671) => let val result=
2716MlyValue.Integer(fn _ => let val DECPOSINTEGER as DECPOSINTEGER1=
2717DECPOSINTEGER1 ()
2718 in (
2719 raise_lexical_error_if_none
2720			    DECPOSINTEGERleft DECPOSINTEGER )
2721 end
2722)
2723 in (LrTable.NT 123,(result,DECPOSINTEGER1left,DECPOSINTEGER1right),
2724rest671) end
2725| (266,(_,(MlyValue.DECNEGINTEGER DECNEGINTEGER1,DECNEGINTEGERleft as
2726DECNEGINTEGER1left,DECNEGINTEGER1right))::rest671) => let val result=
2727MlyValue.Integer(fn _ => let val DECNEGINTEGER as DECNEGINTEGER1=
2728DECNEGINTEGER1 ()
2729 in (
2730 raise_lexical_error_if_none
2731			    DECNEGINTEGERleft DECNEGINTEGER )
2732 end
2733)
2734 in (LrTable.NT 123,(result,DECNEGINTEGER1left,DECNEGINTEGER1right),
2735rest671) end
2736| (267,(_,(MlyValue.HEXINTEGER HEXINTEGER1,HEXINTEGERleft as
2737HEXINTEGER1left,HEXINTEGER1right))::rest671) => let val result=
2738MlyValue.Integer(fn _ => let val HEXINTEGER as HEXINTEGER1=HEXINTEGER1
2739 ()
2740 in ( raise_lexical_error_if_none
2741			    HEXINTEGERleft HEXINTEGER )
2742 end
2743)
2744 in (LrTable.NT 123,(result,HEXINTEGER1left,HEXINTEGER1right),rest671)
2745 end
2746| (268,(_,(MlyValue.DIGIT DIGIT1,DIGIT1left,DIGIT1right))::rest671)
2747 => let val result=MlyValue.Integer(fn _ => let val DIGIT as DIGIT1=
2748DIGIT1 ()
2749 in ( DIGIT ) end
2750)
2751 in (LrTable.NT 123,(result,DIGIT1left,DIGIT1right),rest671) end
2752| (269,(_,(MlyValue.STRING STRING1,STRINGleft,STRING1right))::(_,(_,
2753HASH1left,_))::rest671) => let val result=MlyValue.Char(fn _ => let
2754val STRING as STRING1=STRING1 ()
2755 in (
2756 case explode STRING
2757                            of [c] => ord c
2758                             | _ => raise LEXICAL_ERROR (STRINGleft, "string must have length 1")
2759) end
2760)
2761 in (LrTable.NT 124,(result,HASH1left,STRING1right),rest671) end
2762| (270,(_,(MlyValue.Integer Integer1,Integer1left,Integer1right))::
2763rest671) => let val result=MlyValue.SCon(fn _ => let val Integer as
2764Integer1=Integer1 ()
2765 in ( mk_IntSCon Integer ) end
2766)
2767 in (LrTable.NT 51,(result,Integer1left,Integer1right),rest671) end
2768| (271,(_,(MlyValue.WORD WORD1,WORDleft as WORD1left,WORD1right))::
2769rest671) => let val result=MlyValue.SCon(fn _ => let val WORD as WORD1
2770=WORD1 ()
2771 in ( mk_WordSCon (raise_lexical_error_if_none WORDleft WORD) ) end
2772)
2773 in (LrTable.NT 51,(result,WORD1left,WORD1right),rest671) end
2774| (272,(_,(MlyValue.STRING STRING1,STRING1left,STRING1right))::rest671
2775) => let val result=MlyValue.SCon(fn _ => let val STRING as STRING1=
2776STRING1 ()
2777 in ( mk_StringSCon STRING ) end
2778)
2779 in (LrTable.NT 51,(result,STRING1left,STRING1right),rest671) end
2780| (273,(_,(MlyValue.Char Char1,Char1left,Char1right))::rest671) =>
2781let val result=MlyValue.SCon(fn _ => let val Char as Char1=Char1 ()
2782 in ( mk_CharSCon Char ) end
2783)
2784 in (LrTable.NT 51,(result,Char1left,Char1right),rest671) end
2785| (274,(_,(MlyValue.REAL REAL1,REALleft as REAL1left,REAL1right))::
2786rest671) => let val result=MlyValue.SCon(fn _ => let val REAL as REAL1
2787=REAL1 ()
2788 in ( mk_RealSCon (raise_lexical_error_if_none REALleft REAL) ) end
2789)
2790 in (LrTable.NT 51,(result,REAL1left,REAL1right),rest671) end
2791| (275,(_,(MlyValue.TyVarSeq1 TyVarSeq11,TyVarSeq11left,
2792TyVarSeq11right))::rest671) => let val result=MlyValue.TyVarSeq(fn _
2793 => let val TyVarSeq1 as TyVarSeq11=TyVarSeq11 ()
2794 in ( TyVarSeq1 ) end
2795)
2796 in (LrTable.NT 50,(result,TyVarSeq11left,TyVarSeq11right),rest671)
2797 end
2798| (276,rest671) => let val result=MlyValue.TyVarSeq(fn _ => ( [] ))
2799 in (LrTable.NT 50,(result,defaultPos,defaultPos),rest671) end
2800| (277,(_,(MlyValue.TYVAR TYVAR1,TYVAR1left,TYVAR1right))::rest671)
2801 => let val result=MlyValue.TyVarSeq1(fn _ => let val TYVAR as TYVAR1=
2802TYVAR1 ()
2803 in ( [mk_TyVar TYVAR] ) end
2804)
2805 in (LrTable.NT 100,(result,TYVAR1left,TYVAR1right),rest671) end
2806| (278,(_,(_,_,RPAREN1right))::(_,(MlyValue.TyVarComma_seq1
2807TyVarComma_seq11,_,_))::(_,(_,LPAREN1left,_))::rest671) => let val
2808result=MlyValue.TyVarSeq1(fn _ => let val TyVarComma_seq1 as
2809TyVarComma_seq11=TyVarComma_seq11 ()
2810 in ( TyVarComma_seq1 ) end
2811)
2812 in (LrTable.NT 100,(result,LPAREN1left,RPAREN1right),rest671) end
2813| (279,(_,(MlyValue.TyVarComma_seq1 TyVarComma_seq11,_,
2814TyVarComma_seq11right))::_::(_,(MlyValue.TYVAR TYVAR1,TYVAR1left,_))::
2815rest671) => let val result=MlyValue.TyVarComma_seq1(fn _ => let val
2816TYVAR as TYVAR1=TYVAR1 ()
2817val TyVarComma_seq1 as TyVarComma_seq11=TyVarComma_seq11 ()
2818 in ( mk_TyVar TYVAR :: TyVarComma_seq1 ) end
2819)
2820 in (LrTable.NT 101,(result,TYVAR1left,TyVarComma_seq11right),rest671)
2821 end
2822| (280,(_,(MlyValue.TYVAR TYVAR1,TYVAR1left,TYVAR1right))::rest671)
2823 => let val result=MlyValue.TyVarComma_seq1(fn _ => let val TYVAR as
2824TYVAR1=TYVAR1 ()
2825 in ( [mk_TyVar TYVAR] ) end
2826)
2827 in (LrTable.NT 101,(result,TYVAR1left,TYVAR1right),rest671) end
2828| _ => raise (mlyAction i392)
2829end
2830(* cvr: end *)
2831end
2832