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 addId : Id × Id ∗ → Id ∗ addId(id, idl) ≡ if isinId(id, idl) then idl else idl 〈id〉 end, unionId : Id ∗ × Id ∗ → Id ∗ unionId(il1, il2) ≡ if il1 = 〈〉 then il2 else unionId(tl il1, addId(hd il1, il2)) end, isinId : Id × Id ∗ → Bool isinId(id, idl) ≡ if idl = 〈〉 then false else if getHeadTextId(idl) = getText(id) then true else isinId(id, tl idl) end end, getHeadTextId : Id ∗ → Text getHeadTextId(idlist) ≡ getText(hd idlist), lengthId : Id ∗ → Int lengthId(idl) ≡ if idl = 〈〉 then 0 else 1 + lengthId(tl idl) end, lengthVE : ValueExpr ∗ → Int lengthVE(vel) ≡ if vel = 〈〉 then 0 else 1 + lengthVE(tl vel) end, concatVE : ValueExpr × ValueExpr ∗ → ValueExpr ∗ concatVE(ve, vel) ≡ 〈ve〉 vel, lengthTE : TypeExpr ∗ → Int lengthTE(tel) ≡ if tel = 〈〉 then 0 else 1 + lengthTE(tl tel) end, lengthET : ExpType ∗ → Int lengthET(etl) ≡ if etl = 〈〉 then 0 else 1 + lengthET(tl etl) end, lengthLetDefList : LetDef ∗ → Int lengthLetDefList(ldl) ≡ 468
D.2. FORMAL SPECIFICATION OF THE TRANSFORMER IN RSL1 if ldl = 〈〉 then 0 else 1 + lengthLetDefList(tl ldl) end, /∗**** Logic ****∗/ and : Bool × Bool → Bool and(b1, b2) ≡ if b1 then b2 else false end, or : Bool × Bool → Bool or(b1, b2) ≡ if b1 then true else b2 end, not : Bool → Bool not(b) ≡ if b then false else true end, /∗**** Logic end ****∗/ /∗**** HELPERS ****∗/ notInTYPINGS : Id × TYPINGS × TRANS → Bool notInTYPINGS(id, typings, trans) ≡ if isinId(id, domainTRANS(trans)) then not( isinId( id, elementsId(getMapValueTYPINGS(typings, id)))) else true end, getValueExpr : VE_TYPES → ValueExpr getValueExpr(vetypes) ≡ valueExpr(vetypes), makeLetDefList : LetDef → LetDef ∗ makeLetDefList(ld) ≡ 〈ld〉, getPattern : Pattern → Pattern getPattern(p) ≡ p, equals : Int × Int → Bool equals(i1, i2) ≡ i1 = i2, greaterEqual : Int × Int × Int → Bool greaterEqual(i1, i2, counter) ≡ 469
- 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 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 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
- 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
APPENDIX D. SPECIFICATION OF TRANSFORMER IN RSL1<br />
addId : Id × Id ∗ → Id ∗<br />
addId(id, idl) ≡<br />
if isinId(id, idl) then idl else idl 〈id〉 end,<br />
unionId : Id ∗ × Id ∗ → Id ∗<br />
unionId(il1, il2) ≡<br />
if il1 = 〈〉 then il2<br />
else unionId(tl il1, addId(hd il1, il2))<br />
end,<br />
isinId : Id × Id ∗ → Bool<br />
isinId(id, idl) ≡<br />
if idl = 〈〉 then false<br />
else<br />
if getHeadTextId(idl) = getText(id) then true<br />
else isinId(id, tl idl)<br />
end<br />
end,<br />
getHeadTextId : Id ∗ → Text<br />
getHeadTextId(idlist) ≡ getText(hd idlist),<br />
lengthId : Id ∗ → Int<br />
lengthId(idl) ≡<br />
if idl = 〈〉 then 0 else 1 + lengthId(tl idl) end,<br />
lengthVE : ValueExpr ∗ → Int<br />
lengthVE(vel) ≡<br />
if vel = 〈〉 then 0 else 1 + lengthVE(tl vel) end,<br />
concatVE :<br />
ValueExpr × ValueExpr ∗ → ValueExpr ∗<br />
concatVE(ve, vel) ≡ 〈ve〉 vel,<br />
lengthTE : TypeExpr ∗ → Int<br />
lengthTE(tel) ≡<br />
if tel = 〈〉 then 0 else 1 + lengthTE(tl tel) end,<br />
lengthET : ExpType ∗ → Int<br />
lengthET(etl) ≡<br />
if etl = 〈〉 then 0 else 1 + lengthET(tl etl) end,<br />
lengthLetDefList : LetDef ∗ → Int<br />
lengthLetDefList(ldl) ≡<br />
468