388 |
| pat BAR or_pat_list (pat :: or_pat_list) |
| pat BAR or_pat_list (pat :: or_pat_list) |
389 |
|
|
390 |
vb : vb AND vb (vb1 @ vb2) |
vb : vb AND vb (vb1 @ vb2) |
391 |
| LAZY pat EQUALOP exp ([MarkVb(LVb{exp=exp, pat=pat}, (patleft,expright))]) |
| LAZY pat EQUALOP exp ([MarkVb(Vb{exp=exp, pat=pat, lazyp=true}, |
392 |
| pat EQUALOP exp ([MarkVb(Vb{exp=exp, pat=pat}, (patleft,expright))]) |
(patleft,expright))]) |
393 |
|
| pat EQUALOP exp ([MarkVb(Vb{exp=exp, pat=pat, lazyp=false}, |
394 |
|
(patleft,expright))]) |
395 |
|
|
396 |
constraint : (NONE) |
constraint : (NONE) |
397 |
| COLON ty (SOME ty) |
| COLON ty (SOME ty) |
400 |
(let val (v,f) = var'n'fix id |
(let val (v,f) = var'n'fix id |
401 |
in [MarkRvb(Rvb{var=v,fixity=SOME(f,(idleft,idright)), |
in [MarkRvb(Rvb{var=v,fixity=SOME(f,(idleft,idright)), |
402 |
resultty=constraint, |
resultty=constraint, |
403 |
exp=exp},(idleft,expright))] end) |
exp=exp,lazyp=false}, |
404 |
|
(idleft,expright))] |
405 |
|
end) |
406 |
| OP id constraint EQUALOP exp |
| OP id constraint EQUALOP exp |
407 |
([MarkRvb(Rvb{var=varSymbol id,fixity=NONE, |
([MarkRvb(Rvb{var=varSymbol id,fixity=NONE, |
408 |
resultty=constraint, |
resultty=constraint, |
409 |
exp=exp},(OPleft,expright))]) |
exp=exp,lazyp=false}, |
410 |
|
(OPleft,expright))]) |
411 |
| rvb AND rvb (rvb1 @ rvb2) |
| rvb AND rvb (rvb1 @ rvb2) |
412 |
| LAZY id constraint EQUALOP exp |
| LAZY id constraint EQUALOP exp |
413 |
(let val (v,f) = var'n'fix id |
(let val (v,f) = var'n'fix id |
414 |
in [MarkRvb(LRvb{var=v,fixity=SOME(f,(idleft,idright)), |
in [MarkRvb(Rvb{var=v,fixity=SOME(f,(idleft,idright)), |
415 |
resultty=constraint, |
resultty=constraint, |
416 |
exp=exp},(idleft,expright))] end) |
exp=exp,lazyp=true}, |
417 |
|
(idleft,expright))] |
418 |
|
end) |
419 |
| LAZY OP id constraint EQUALOP exp |
| LAZY OP id constraint EQUALOP exp |
420 |
([MarkRvb(LRvb{var=varSymbol id,fixity=NONE, |
([MarkRvb(Rvb{var=varSymbol id,fixity=NONE, |
421 |
resultty=constraint, |
resultty=constraint, |
422 |
exp=exp},(OPleft,expright))]) |
exp=exp,lazyp=true}, |
423 |
|
(OPleft,expright))]) |
424 |
|
|
425 |
|
|
426 |
fb' : clause ([clause]) |
fb' : clause ([clause]) |
427 |
| clause BAR fb' (clause :: fb') |
| clause BAR fb' (clause :: fb') |
428 |
|
|
429 |
fb : fb' ([MarkFb(Fb fb', (fb'left,fb'right))]) |
fb : fb' ([MarkFb(Fb(fb',false), (fb'left,fb'right))]) |
430 |
| LAZY fb' ([MarkFb(LFb fb', (fb'left,fb'right))]) |
| LAZY fb' ([MarkFb(Fb(fb',true), (fb'left,fb'right))]) |
431 |
| fb' AND fb (MarkFb(Fb fb', (fb'left,fb'right)) :: fb) |
| fb' AND fb (MarkFb(Fb(fb',false), (fb'left,fb'right)) :: fb) |
432 |
| LAZY fb' AND fb (MarkFb(LFb fb', (fb'left,fb'right)) :: fb) |
| LAZY fb' AND fb (MarkFb(Fb(fb',true), (fb'left,fb'right)) :: fb) |
433 |
|
|
434 |
apats : apat ([apat]) |
apats : apat ([apat]) |
435 |
| apat apats (apat :: apats) |
| apat apats (apat :: apats) |
462 |
db : db AND db (db1 @ db2) |
db : db AND db (db1 @ db2) |
463 |
| tyvars ident EQUALOP dbrhs ([Db{tyc=tycSymbol ident, |
| tyvars ident EQUALOP dbrhs ([Db{tyc=tycSymbol ident, |
464 |
tyvars=tyvars, |
tyvars=tyvars, |
465 |
rhs=dbrhs}]) |
rhs=dbrhs,lazyp=false}]) |
466 |
| LAZY tyvars ident EQUALOP dbrhs ([LDb{tyc=tycSymbol ident, |
| LAZY tyvars ident EQUALOP dbrhs |
467 |
|
([Db{tyc=tycSymbol ident, |
468 |
tyvars=tyvars, |
tyvars=tyvars, |
469 |
rhs=dbrhs}]) |
rhs=dbrhs,lazyp=true}]) |
470 |
|
|
471 |
dbrhs : constrs (Constrs constrs) |
dbrhs : constrs (Constrs constrs) |
472 |
| DATATYPE tycon (Repl tycon) |
| DATATYPE tycon (Repl tycon) |
541 |
| EQTYPE tyspec ([TycSpec(tyspec,true)]) |
| EQTYPE tyspec ([TycSpec(tyspec,true)]) |
542 |
| VAL valspec ([ValSpec valspec]) |
| VAL valspec ([ValSpec valspec]) |
543 |
| EXCEPTION exnspec ([ExceSpec exnspec]) |
| EXCEPTION exnspec ([ExceSpec exnspec]) |
|
| fixity ops ([FixSpec {fixity=fixity, ops=ops}]) |
|
544 |
| SHARING sharespec (sharespec) |
| SHARING sharespec (sharespec) |
545 |
| INCLUDE sign ([IncludeSpec sign]) |
| INCLUDE sign ([IncludeSpec sign]) |
546 |
| INCLUDE ident idents (IncludeSpec(VarSig(FastSymbol.sigSymbol ident)) |
| INCLUDE ident idents (IncludeSpec(VarSig(FastSymbol.sigSymbol ident)) |
700 |
|
|
701 |
interdec: sdecs' (markdec(sdecs',sdecs'left,sdecs'right)) |
interdec: sdecs' (markdec(sdecs',sdecs'left,sdecs'right)) |
702 |
|
|
703 |
| exp (markdec(ValDec([Vb{exp=exp,pat=VarPat itsym}],nil), |
| exp (markdec(ValDec([Vb{exp=exp,pat=VarPat itsym,lazyp=false}],nil), |
704 |
expleft,expright)) |
expleft,expright)) |
705 |
|
|
706 |
(* |
(* |
707 |
* $Log: ml.grm,v $ |
* $Log: ml.grm,v $ |
708 |
|
* Revision 1.3 1998/05/15 14:01:15 dbm |
709 |
|
* Replaced lazy field name by lazyp in Vb, Rbv, Db args. |
710 |
|
* |
711 |
|
* Revision 1.2 1998/05/15 03:27:06 dbm |
712 |
|
* Revised parsing of lazy keyword. Use lazyp instead of LVb, etc. |
713 |
|
* |
714 |
* Revision 1.1.1.1 1998/04/08 18:39:19 george |
* Revision 1.1.1.1 1998/04/08 18:39:19 george |
715 |
* Version 110.5 |
* Version 110.5 |
716 |
* |
* |