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 removeDupletsId( 〈hd idl〉 getIdListIdList(tl idl, ids, typings)) end end, /∗**** TYPINGS map ****∗/ overrideTYPINGS : TYPINGS × TYPINGS → TYPINGS overrideTYPINGS(t1, t2) ≡ if getTYPINGSMapEntranceList(t1) = 〈〉 then t2 else if isinId( getTypeIdTYPINGS( hd getTYPINGSMapEntranceList(t1)), domainTYPINGS(t2)) then overrideTYPINGS( mk_TYPINGS(tl getTYPINGSMapEntranceList(t1)), t2) else overrideTYPINGS( mk_TYPINGS(tl getTYPINGSMapEntranceList(t1)), mk_TYPINGS( getTYPINGSMapEntranceList(t2) 〈hd getTYPINGSMapEntranceList(t1)〉)) end end, getMapValueTYPINGS : TYPINGS × Id → Id ∗ getMapValueTYPINGS(typings, id) ≡ if getTextId( getTypeIdTYPINGS( hd getTYPINGSMapEntranceList(typings))) = getTextId(id) then getTypeListTYPINGS( hd getTYPINGSMapEntranceList(typings)) else getMapValueTYPINGS( mk_TYPINGS( tl getTYPINGSMapEntranceList(typings)), id) 454
D.2. FORMAL SPECIFICATION OF THE TRANSFORMER IN RSL1 end, domainTYPINGS : TYPINGS → Id ∗ domainTYPINGS(typings) ≡ if getTYPINGSMapEntranceList(typings) = 〈〉 then 〈〉 else 〈getTypeIdTYPINGS( hd getTYPINGSMapEntranceList(typings))〉 domainTYPINGS( mk_TYPINGS( tl getTYPINGSMapEntranceList(typings))) end, getTypeIdTYPINGS : TYPINGSMapEntrance → Id getTypeIdTYPINGS(te) ≡ type_id(te), getTypeListTYPINGS : TYPINGSMapEntrance → Id ∗ getTypeListTYPINGS(te) ≡ id_list(te), getTYPINGSMapEntranceList : TYPINGS → TYPINGSMapEntrance ∗ getTYPINGSMapEntranceList(typings) ≡ map(typings), /∗**** TYPINGS end ****∗/ /∗**** FUNC ****∗/ establishFuncMap : Decl ∗ × TRANS → FUNC establishFuncMap(dl, trans) ≡ expandFuncMap( getValueDecl(dl), makeFuncMap( getValueDecl(dl), mk_FUNC(〈〉), trans), trans), getValueDecl : Decl ∗ → ValueDef ∗ getValueDecl(dl) ≡ if dl = 〈〉 then 〈〉 else case hd dl of ValueDecl(vdl) → vdl getValueDecl(tl dl), → getValueDecl(tl dl) end end, 455
- Page 420 and 421: APPENDIX D. SPECIFICATION OF TRANSF
- 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 472 and 473: 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
APPENDIX D. SPECIFICATION OF TRANSFORMER IN RSL1<br />
removeDupletsId(<br />
〈hd idl〉 <br />
getIdListIdList(tl idl, ids, typings))<br />
end<br />
end,<br />
/∗**** TYPINGS map ****∗/<br />
overrideTYPINGS : TYPINGS × TYPINGS → TYPINGS<br />
overrideTYPINGS(t1, t2) ≡<br />
if getTYPINGSMapEntranceList(t1) = 〈〉 then t2<br />
else<br />
if<br />
isinId(<br />
getTypeIdTYPINGS(<br />
hd getTYPINGSMapEntranceList(t1)),<br />
domainTYPINGS(t2))<br />
then<br />
overrideTYPINGS(<br />
mk_TYPINGS(tl getTYPINGSMapEntranceList(t1)),<br />
t2)<br />
else<br />
overrideTYPINGS(<br />
mk_TYPINGS(tl getTYPINGSMapEntranceList(t1)),<br />
mk_TYPINGS(<br />
getTYPINGSMapEntranceList(t2) <br />
〈hd getTYPINGSMapEntranceList(t1)〉))<br />
end<br />
end,<br />
getMapValueTYPINGS : TYPINGS × Id → Id ∗<br />
getMapValueTYPINGS(typings, id) ≡<br />
if<br />
getTextId(<br />
getTypeIdTYPINGS(<br />
hd getTYPINGSMapEntranceList(typings))) =<br />
getTextId(id)<br />
then<br />
getTypeListTYPINGS(<br />
hd getTYPINGSMapEntranceList(typings))<br />
else<br />
getMapValueTYPINGS(<br />
mk_TYPINGS(<br />
tl getTYPINGSMapEntranceList(typings)), id)<br />
454