Transformation of Applicative Specifications into Imperative ...
Transformation of Applicative Specifications into Imperative ... Transformation of Applicative Specifications into Imperative ...
APPENDIX D. SPECIFICATION OF TRANSFORMER IN RSL1 makeFuncMap : ValueDef ∗ × FUNC × TRANS → FUNC makeFuncMap(vdl, func, trans) ≡ if vdl = 〈〉 then func else makeFuncMap( tl vdl, overrideFUNC( func, getMapEntrance(hd vdl, trans)), trans) end, getMapEntrance : ValueDef × TRANS → FUNC getMapEntrance(vd, trans) ≡ case vd of ExplicitValueDef(st, ve) → if includesTRANSName( Known(type_expr(st)), domainTRANS(trans)) then case binding(st) of IdBinding(id) → mk_FUNC( 〈mk_FUNCMapEntrance( id, mk_FuncSpec( FunctionTypeExpr( TypeLiteral(UNIT), TOTAL_FUNCTION_ARROW, mk_ResultDesc( NoReadAccessMode, NoWriteAccessMode, type_expr(st))), ve, 〈〉, 〈〉))〉), Make_ProductBinding(pb) → mk_FUNC(〈〉) end else mk_FUNC(〈〉) end, ExplicitFunctionDef(st, ffa, ve, precond) → case binding(st) of IdBinding(id) → mk_FUNC( 〈mk_FUNCMapEntrance( id, mk_FuncSpec( 456
D.2. FORMAL SPECIFICATION OF THE TRANSFORMER IN RSL1 end, end type_expr(st), ve, 〈〉, 〈〉))〉) expandFuncMap : ValueDef ∗ × FUNC × TRANS → FUNC expandFuncMap(vdl, func, trans) ≡ if vdl = 〈〉 then func else expandFuncMap( tl vdl, overrideFUNC( func, expandMapEntrance(hd vdl, func, trans)), trans) end, expandMapEntrance : ValueDef × FUNC × TRANS → FUNC expandMapEntrance(vd, func, trans) ≡ case vd of ExplicitValueDef(st, ve) → if includesTRANSName( Known(type_expr(st)), domainTRANS(trans)) then case binding(st) of IdBinding(id) → mk_FUNC( 〈mk_FUNCMapEntrance( id, mk_FuncSpec( FunctionTypeExpr( TypeLiteral(UNIT), TOTAL_FUNCTION_ARROW, mk_ResultDesc( NoReadAccessMode, NoWriteAccessMode, type_expr(st))), ve, 〈〉, removeDuplets( getAccess( type_expr(st), trans) accessList( getAccessGen( 〈id〉, ve, Known(type_expr(st)), 457
- Page 422 and 423: APPENDIX D. SPECIFICATION OF TRANSF
- Page 424 and 425: APPENDIX D. SPECIFICATION OF TRANSF
- Page 426 and 427: APPENDIX D. SPECIFICATION OF TRANSF
- Page 428 and 429: APPENDIX D. SPECIFICATION OF TRANSF
- Page 430 and 431: APPENDIX D. SPECIFICATION OF TRANSF
- Page 432 and 433: APPENDIX D. SPECIFICATION OF TRANSF
- Page 434 and 435: APPENDIX D. SPECIFICATION OF TRANSF
- Page 436 and 437: APPENDIX D. SPECIFICATION OF TRANSF
- Page 438 and 439: APPENDIX D. SPECIFICATION OF TRANSF
- Page 440 and 441: APPENDIX D. SPECIFICATION OF TRANSF
- Page 442 and 443: APPENDIX D. SPECIFICATION OF TRANSF
- Page 444 and 445: APPENDIX D. SPECIFICATION OF TRANSF
- Page 446 and 447: APPENDIX D. SPECIFICATION OF TRANSF
- Page 448 and 449: APPENDIX D. SPECIFICATION OF TRANSF
- Page 450 and 451: APPENDIX D. SPECIFICATION OF TRANSF
- Page 452 and 453: APPENDIX D. SPECIFICATION OF TRANSF
- Page 454 and 455: APPENDIX D. SPECIFICATION OF TRANSF
- Page 456 and 457: APPENDIX D. SPECIFICATION OF TRANSF
- Page 458 and 459: APPENDIX D. SPECIFICATION OF TRANSF
- Page 460 and 461: APPENDIX D. SPECIFICATION OF TRANSF
- Page 462 and 463: APPENDIX D. SPECIFICATION OF TRANSF
- Page 464 and 465: APPENDIX D. SPECIFICATION OF TRANSF
- Page 466 and 467: APPENDIX D. SPECIFICATION OF TRANSF
- Page 468 and 469: APPENDIX D. SPECIFICATION OF TRANSF
- Page 470 and 471: APPENDIX D. SPECIFICATION OF TRANSF
- Page 474 and 475: APPENDIX D. SPECIFICATION OF TRANSF
- Page 476 and 477: APPENDIX D. SPECIFICATION OF TRANSF
- Page 478 and 479: APPENDIX D. SPECIFICATION OF TRANSF
- Page 480 and 481: APPENDIX D. SPECIFICATION OF TRANSF
- Page 482 and 483: APPENDIX D. SPECIFICATION OF TRANSF
- Page 484 and 485: APPENDIX D. SPECIFICATION OF TRANSF
- Page 486 and 487: APPENDIX D. SPECIFICATION OF TRANSF
- Page 488 and 489: APPENDIX D. SPECIFICATION OF TRANSF
- Page 490 and 491: APPENDIX D. SPECIFICATION OF TRANSF
- Page 492 and 493: APPENDIX E. ANTLR GRAMMAR END = "en
- Page 494 and 495: APPENDIX E. ANTLR GRAMMAR ; d = d e
- Page 496 and 497: APPENDIX E. ANTLR GRAMMAR ; } ( com
- Page 498 and 499: APPENDIX E. ANTLR GRAMMAR ; ) ∗ }
- Page 500 and 501: APPENDIX E. ANTLR GRAMMAR ; } else
- Page 502 and 503: APPENDIX E. ANTLR GRAMMAR prod_bind
- Page 504 and 505: APPENDIX E. ANTLR GRAMMAR ; | | | |
- Page 506 and 507: APPENDIX E. ANTLR GRAMMAR ; | NAT {
- Page 508 and 509: APPENDIX E. ANTLR GRAMMAR ; { ve3 =
- Page 510 and 511: APPENDIX E. ANTLR GRAMMAR ( | RPARE
- Page 512 and 513: APPENDIX E. ANTLR GRAMMAR | { optio
- Page 514 and 515: APPENDIX E. ANTLR GRAMMAR new RSLLi
- Page 516 and 517: APPENDIX E. ANTLR GRAMMAR infix_op_
- Page 518 and 519: APPENDIX E. ANTLR GRAMMAR : v l = v
- Page 520 and 521: APPENDIX E. ANTLR GRAMMAR } t e s t
APPENDIX D. SPECIFICATION OF TRANSFORMER IN RSL1<br />
makeFuncMap : ValueDef ∗ × FUNC × TRANS → FUNC<br />
makeFuncMap(vdl, func, trans) ≡<br />
if vdl = 〈〉 then func<br />
else<br />
makeFuncMap(<br />
tl vdl,<br />
overrideFUNC(<br />
func, getMapEntrance(hd vdl, trans)), trans)<br />
end,<br />
getMapEntrance : ValueDef × TRANS → FUNC<br />
getMapEntrance(vd, trans) ≡<br />
case vd <strong>of</strong><br />
ExplicitValueDef(st, ve) →<br />
if<br />
includesTRANSName(<br />
Known(type_expr(st)), domainTRANS(trans))<br />
then<br />
case binding(st) <strong>of</strong><br />
IdBinding(id) →<br />
mk_FUNC(<br />
〈mk_FUNCMapEntrance(<br />
id,<br />
mk_FuncSpec(<br />
FunctionTypeExpr(<br />
TypeLiteral(UNIT),<br />
TOTAL_FUNCTION_ARROW,<br />
mk_ResultDesc(<br />
NoReadAccessMode,<br />
NoWriteAccessMode,<br />
type_expr(st))), ve,<br />
〈〉, 〈〉))〉),<br />
Make_ProductBinding(pb) → mk_FUNC(〈〉)<br />
end<br />
else mk_FUNC(〈〉)<br />
end,<br />
ExplicitFunctionDef(st, ffa, ve, precond) →<br />
case binding(st) <strong>of</strong><br />
IdBinding(id) →<br />
mk_FUNC(<br />
〈mk_FUNCMapEntrance(<br />
id,<br />
mk_FuncSpec(<br />
456