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 if counter = 10 then false else if i1 = i2 then true else greaterEqual(i1, i2 + 1, counter + 1) end end, minusOne : Int → Int minusOne(i) ≡ case i of 1 → 0, 2 → 1, 3 → 2, 4 → 3, 5 → 4, 6 → 5, 7 → 6, 8 → 7, 9 → 8, 10 → 9 end, equalsText : Text × Text → Bool equalsText(t1, t2) ≡ t1 = t2, emptyAccess : Unit → Access ∗ emptyAccess() ≡ tl 〈AccessValueOrVariableName( mk_ValueOrVariableName(mk_Id( ′′ DUMMY ′′ )))〉, isinAccess : Access × Access ∗ → Bool isinAccess(a, al) ≡ if al = 〈〉 then false else if getHeadTextAccess(al) = getTextAccess(a) then true else isinAccess(a, tl al) end end, getHeadTextAccess : Access ∗ → Text getHeadTextAccess(al) ≡ getTextAccess(hd al), getTextAccess : Access → Text 470
D.2. FORMAL SPECIFICATION OF THE TRANSFORMER IN RSL1 getTextAccess(a) ≡ case a of AccessValueOrVariableName(vn) → getText(id(vn)) end, elementsAccess : Access ∗ → Access ∗ elementsAccess(al) ≡ if al = 〈〉 then al else if isinAccess(getHeadAccess(al), getTailAccess(al)) then elementsAccess(getTailAccess(al)) else 〈getHeadAccess(al)〉 elementsAccess(getTailAccess(al)) end end, lengthAccess : Access ∗ → Int lengthAccess(al) ≡ if al = 〈〉 then 0 else 1 + lengthAccess(getTailAccess(al)) end, getHeadAccess : Access ∗ → Access getHeadAccess(al) ≡ hd al, getTailAccess : Access ∗ → Access ∗ getTailAccess(al) ≡ tl al, getHeadTextBinding : Binding ∗ → Text getHeadTextBinding(bl) ≡ getTextBinding(hd bl), lengthBinding : Binding ∗ → Int lengthBinding(bl) ≡ if bl = 〈〉 then 0 else 1 + lengthBinding(tl bl) end, makeIdList : Id → Id ∗ makeIdList(id) ≡ emptyId() 〈id〉, getValueExprList : ValueExprPair → ValueExpr ∗ getValueExprList(ve) ≡ 〈getFirstFromPair(ve), getSecondFromPair(ve)〉, 471
- 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 484 and 485: 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
- Page 534 and 535: APPENDIX F. SOURCE CODE public void
APPENDIX D. SPECIFICATION OF TRANSFORMER IN RSL1<br />
if counter = 10 then false<br />
else<br />
if i1 = i2 then true<br />
else greaterEqual(i1, i2 + 1, counter + 1)<br />
end<br />
end,<br />
minusOne : Int → Int<br />
minusOne(i) ≡<br />
case i <strong>of</strong><br />
1 → 0,<br />
2 → 1,<br />
3 → 2,<br />
4 → 3,<br />
5 → 4,<br />
6 → 5,<br />
7 → 6,<br />
8 → 7,<br />
9 → 8,<br />
10 → 9<br />
end,<br />
equalsText : Text × Text → Bool<br />
equalsText(t1, t2) ≡ t1 = t2,<br />
emptyAccess : Unit → Access ∗<br />
emptyAccess() ≡<br />
tl 〈AccessValueOrVariableName(<br />
mk_ValueOrVariableName(mk_Id( ′′ DUMMY ′′ )))〉,<br />
isinAccess : Access × Access ∗ → Bool<br />
isinAccess(a, al) ≡<br />
if al = 〈〉 then false<br />
else<br />
if getHeadTextAccess(al) = getTextAccess(a)<br />
then true<br />
else isinAccess(a, tl al)<br />
end<br />
end,<br />
getHeadTextAccess : Access ∗ → Text<br />
getHeadTextAccess(al) ≡ getTextAccess(hd al),<br />
getTextAccess : Access → Text<br />
470