Transformation of Applicative Specifications into Imperative ...

Transformation of Applicative Specifications into Imperative ... Transformation of Applicative Specifications into Imperative ...

26.09.2013 Views

APPENDIX D. SPECIFICATION OF TRANSFORMER IN RSL1 getTRANSId( getMapValueTYPES( types, IdBinding(id)), trans), optid), types) else /∗The value expression is not of the type of interest. ∗/ mk_PATTERN_TYPES(p, types) end end, WildcardPattern → mk_PATTERN_TYPES(p, types), ProductPattern(pl) → mk_PATTERN_TYPES( ProductPattern( patternList( TRPatternList(pl, func, trans, types))), typesMap( TRPatternList(pl, func, trans, types))), RecordPattern(vn, pl) → mk_PATTERN_TYPES( RecordPattern( vn, patternList( TRPatternList(pl, func, trans, types))), typesMap( TRPatternList(pl, func, trans, types))), MakeListPattern(lp) → mk_PATTERN_TYPES( MakeListPattern( listPattern( TRListPattern(lp, func, trans, types))), typesMap( TRListPattern(lp, func, trans, types))) end, TRPatternList : Pattern ∗ × FUNC × TRANS × TYPES → PL_TYPES TRPatternList(pl, func, trans, types) ≡ if pl = 〈〉 then mk_PL_TYPES(〈〉, types) else mk_PL_TYPES( 〈getPattern( pattern( TRPattern(hd pl, func, trans, types)))〉 404

D.2. FORMAL SPECIFICATION OF THE TRANSFORMER IN RSL1 ) end, patternList( TRPatternList( tl pl, func, trans, typesMap( TRPattern(hd pl, func, trans, types)))), typesMap( TRPatternList( tl pl, func, trans, typesMap( TRPattern(hd pl, func, trans, types)))) TRListPattern : ListPattern × FUNC × TRANS × TYPES → LP_TYPES TRListPattern(lp, func, trans, types) ≡ case lp of Make_EnumeratedListPattern(elp) → mk_LP_TYPES( Make_EnumeratedListPattern( mk_EnumeratedListPattern( optInnerPattern( TROptInnerPattern( inner_pattern(elp), func, trans, types)))), typesMap( TROptInnerPattern( inner_pattern(elp), func, trans, types)) ), ConcatenatedListPattern(elp, p) → mk_LP_TYPES( ConcatenatedListPattern( mk_EnumeratedListPattern( optInnerPattern( TROptInnerPattern( inner_pattern(elp), func, trans, types))), pattern( TRPattern( p, func, trans, typesMap( TROptInnerPattern( inner_pattern(elp), func, trans, types))))), 405

D.2. FORMAL SPECIFICATION OF THE TRANSFORMER IN RSL1<br />

)<br />

end,<br />

patternList(<br />

TRPatternList(<br />

tl pl, func, trans,<br />

typesMap(<br />

TRPattern(hd pl, func, trans, types)))),<br />

typesMap(<br />

TRPatternList(<br />

tl pl, func, trans,<br />

typesMap(<br />

TRPattern(hd pl, func, trans, types))))<br />

TRListPattern :<br />

ListPattern × FUNC × TRANS × TYPES → LP_TYPES<br />

TRListPattern(lp, func, trans, types) ≡<br />

case lp <strong>of</strong><br />

Make_EnumeratedListPattern(elp) →<br />

mk_LP_TYPES(<br />

Make_EnumeratedListPattern(<br />

mk_EnumeratedListPattern(<br />

optInnerPattern(<br />

TROptInnerPattern(<br />

inner_pattern(elp), func, trans,<br />

types)))),<br />

typesMap(<br />

TROptInnerPattern(<br />

inner_pattern(elp), func, trans, types))<br />

),<br />

ConcatenatedListPattern(elp, p) →<br />

mk_LP_TYPES(<br />

ConcatenatedListPattern(<br />

mk_EnumeratedListPattern(<br />

optInnerPattern(<br />

TROptInnerPattern(<br />

inner_pattern(elp), func, trans,<br />

types))),<br />

pattern(<br />

TRPattern(<br />

p, func, trans,<br />

typesMap(<br />

TROptInnerPattern(<br />

inner_pattern(elp), func,<br />

trans, types))))),<br />

405

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!