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 getFirstFromPair : ValueExprPair → ValueExpr getFirstFromPair(vep) ≡ first(vep), getSecondFromPair : ValueExprPair → ValueExpr getSecondFromPair(vep) ≡ second(vep), getExpType : ExpType → ExpType getExpType(et) ≡ et, getAccessIdSet : AccessResult → Id ∗ getAccessIdSet(ar) ≡ accessIdSet(ar), ifExprToList : IfExpr → ValueExpr ∗ ifExprToList(ie) ≡ 〈getCondition(ie)〉 elsifToList(elsif_list(ie)) 〈getElseCase(ie)〉, getCondition : IfExpr → ValueExpr getCondition(ie) ≡ condition(ie), getElseCase : IfExpr → ValueExpr getElseCase(ie) ≡ else_case(ie), emptyVE : Unit → ValueExpr ∗ emptyVE() ≡ tl 〈Make_ValueLiteral(ValueLiteralInteger( ′′ 1 ′′ ))〉, getElsifCondition : Elsif → ValueExpr getElsifCondition(ei) ≡ condition(ei), getElsifCase : Elsif → ValueExpr getElsifCase(ei) ≡ elsif_case(ei), elementsId : Id ∗ → Id ∗ elementsId(idl) ≡ if idl = 〈〉 then idl else if isinId(getHeadId(idl), getTailId(idl)) then elementsId(getTailId(idl)) else 〈getHeadId(idl)〉 elementsId(getTailId(idl)) end end, 472
D.2. FORMAL SPECIFICATION OF THE TRANSFORMER IN RSL1 end interId : Id ∗ × Id ∗ → Id ∗ interId(idl1, idl2) ≡ if idl1 = 〈〉 then idl1 else if isinId(hd idl1, idl2) then 〈hd idl1〉 interId(tl idl1, idl2) else interId(tl idl1, idl2) end end, getHeadId : Id ∗ → Id getHeadId(idl) ≡ hd idl, getTailId : Id ∗ → Id ∗ getTailId(idl) ≡ tl idl, emptyId : Unit → Id ∗ emptyId() ≡ tl 〈mk_Id( ′′ DUMMY ′′ )〉, emptyList : Binding ∗ → Bool emptyList(bl) ≡ bl = 〈〉, getTextId : Id → Text getTextId(id) ≡ getText(id) 473
- 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 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 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
- Page 522 and 523: APPENDIX E. ANTLR GRAMMAR } : ’ .
- Page 524 and 525: APPENDIX E. ANTLR GRAMMAR 508
- Page 526 and 527: APPENDIX F. SOURCE CODE System . e
- Page 528 and 529: APPENDIX F. SOURCE CODE } } catch (
- Page 530 and 531: APPENDIX F. SOURCE CODE F.2 Visitor
- Page 532 and 533: APPENDIX F. SOURCE CODE public void
- Page 534 and 535: APPENDIX F. SOURCE CODE public void
- Page 536 and 537: APPENDIX F. SOURCE CODE public void
APPENDIX D. SPECIFICATION OF TRANSFORMER IN RSL1<br />
getFirstFromPair : ValueExprPair → ValueExpr<br />
getFirstFromPair(vep) ≡ first(vep),<br />
getSecondFromPair : ValueExprPair → ValueExpr<br />
getSecondFromPair(vep) ≡ second(vep),<br />
getExpType : ExpType → ExpType<br />
getExpType(et) ≡ et,<br />
getAccessIdSet : AccessResult → Id ∗<br />
getAccessIdSet(ar) ≡ accessIdSet(ar),<br />
ifExprToList : IfExpr → ValueExpr ∗<br />
ifExprToList(ie) ≡<br />
〈getCondition(ie)〉 elsifToList(elsif_list(ie)) <br />
〈getElseCase(ie)〉,<br />
getCondition : IfExpr → ValueExpr<br />
getCondition(ie) ≡ condition(ie),<br />
getElseCase : IfExpr → ValueExpr<br />
getElseCase(ie) ≡ else_case(ie),<br />
emptyVE : Unit → ValueExpr ∗<br />
emptyVE() ≡<br />
tl 〈Make_ValueLiteral(ValueLiteralInteger( ′′ 1 ′′ ))〉,<br />
getElsifCondition : Elsif → ValueExpr<br />
getElsifCondition(ei) ≡ condition(ei),<br />
getElsifCase : Elsif → ValueExpr<br />
getElsifCase(ei) ≡ elsif_case(ei),<br />
elementsId : Id ∗ → Id ∗<br />
elementsId(idl) ≡<br />
if idl = 〈〉 then idl<br />
else<br />
if isinId(getHeadId(idl), getTailId(idl))<br />
then elementsId(getTailId(idl))<br />
else<br />
〈getHeadId(idl)〉 elementsId(getTailId(idl))<br />
end<br />
end,<br />
472