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 overrideTYPES : TYPES × TYPES → TYPES overrideTYPES(t1, t2) ≡ if getTYPESMapEntranceList(t1) = 〈〉 then t2 else if isinTYPES( getFirstTYPES(hd getTYPESMapEntranceList(t1)), domainTYPES(t2)) then overrideTYPES( mk_TYPES(tl getTYPESMapEntranceList(t1)), t2) else overrideTYPES( mk_TYPES(tl getTYPESMapEntranceList(t1)), mk_TYPES( getTYPESMapEntranceList(t2) 〈hd getTYPESMapEntranceList(t1)〉)) end end, isinTYPES : Binding × Binding ∗ → Bool isinTYPES(b, bl) ≡ if bl = 〈〉 then false else if getTextBindingTYPES(b) = getTextBindingTYPES(hd bl) then true else isinTYPES(b, tl bl) end end, getFirstTYPES : TYPESMapEntrance → Binding getFirstTYPES(me) ≡ first(me), getSecondTYPES : TYPESMapEntrance → ExpType getSecondTYPES(me) ≡ second(me), getTextBindingTYPES : Binding → Text getTextBindingTYPES(b) ≡ case b of IdBinding(id) → getText(id) end, 466
D.2. FORMAL SPECIFICATION OF THE TRANSFORMER IN RSL1 getTYPESMapEntranceList : TYPES → TYPESMapEntrance ∗ getTYPESMapEntranceList(types) ≡ map(types), getHeadTYPES : TYPES → TYPESMapEntrance getHeadTYPES(types) ≡ hd getTYPESMapEntranceList(types), /∗**** TYPES end ****∗/ /∗**** Id ****∗/ removeDupletsId : Id ∗ → Id ∗ removeDupletsId(il) ≡ if lengthId(il) = lengthId(elementsId(il)) then il else if isinId(hd il, elementsId(tl il)) then removeDupletsId(tl il) else 〈hd il〉 removeDupletsId(tl il) end end, makeId : Int → Id makeId(no) ≡ mk_Id( ′′ pa_ ′′ intToText(no)), intToText : Int → Text intToText(no) ≡ case no of 0 → ′′ 0 ′′ , 1 → ′′ 1 ′′ , 2 → ′′ 2 ′′ , 3 → ′′ 3 ′′ , 4 → ′′ 4 ′′ , 5 → ′′ 5 ′′ , 6 → ′′ 6 ′′ , 7 → ′′ 7 ′′ , 8 → ′′ 8 ′′ , 9 → ′′ 9 ′′ end, /∗**** Id end ****∗/ /∗**** Set Logic ****∗/ 467
- 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 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 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
- 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
APPENDIX D. SPECIFICATION OF TRANSFORMER IN RSL1<br />
overrideTYPES : TYPES × TYPES → TYPES<br />
overrideTYPES(t1, t2) ≡<br />
if getTYPESMapEntranceList(t1) = 〈〉 then t2<br />
else<br />
if<br />
isinTYPES(<br />
getFirstTYPES(hd getTYPESMapEntranceList(t1)),<br />
domainTYPES(t2))<br />
then<br />
overrideTYPES(<br />
mk_TYPES(tl getTYPESMapEntranceList(t1)), t2)<br />
else<br />
overrideTYPES(<br />
mk_TYPES(tl getTYPESMapEntranceList(t1)),<br />
mk_TYPES(<br />
getTYPESMapEntranceList(t2) <br />
〈hd getTYPESMapEntranceList(t1)〉))<br />
end<br />
end,<br />
isinTYPES : Binding × Binding ∗ → Bool<br />
isinTYPES(b, bl) ≡<br />
if bl = 〈〉 then false<br />
else<br />
if<br />
getTextBindingTYPES(b) =<br />
getTextBindingTYPES(hd bl)<br />
then true<br />
else isinTYPES(b, tl bl)<br />
end<br />
end,<br />
getFirstTYPES : TYPESMapEntrance → Binding<br />
getFirstTYPES(me) ≡ first(me),<br />
getSecondTYPES : TYPESMapEntrance → ExpType<br />
getSecondTYPES(me) ≡ second(me),<br />
getTextBindingTYPES : Binding → Text<br />
getTextBindingTYPES(b) ≡<br />
case b <strong>of</strong><br />
IdBinding(id) → getText(id)<br />
end,<br />
466