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 bindingList : Binding ∗ valueExprList : ValueExpr ∗ , BOOL_FFA_ENV_TYPES_LDL :: bool : Bool formalfa : FormalFunctionApplication envMap : ENV typesMap : TYPES letdefList : LetDef ∗ , BOOL_ENV_TYPES :: bool : Bool envMap : ENV typesMap : TYPES, BOOL_ENV :: bool : Bool envMap : ENV, PRECOND_TYPES :: preCond : OptionalPreCondition typesMap : TYPES, VE_TYPES :: valueExpr : ValueExpr typesMap : TYPES, VEL_TYPES :: valueExprList : ValueExpr ∗ typesMap : TYPES, VEPL_TYPES :: valueExprPairList : ValueExprPair ∗ typesMap : TYPES, BOOL_FFP_ENV_TYPES_LDL :: bool : Bool formalfp : FormalFunctionParameter envMap : ENV typesMap : TYPES letdefList : LetDef ∗ , LDL_ENV :: letdefList : LetDef ∗ envMap : ENV, BINDINGLIST_VEL :: bindingList : Binding ∗ valueExprList : ValueExpr ∗ , LDL_TYPES :: letdefList : LetDef ∗ typesMap : TYPES, LD_TYPES :: letdef : LetDef typesMap : TYPES, EIL_TYPES :: elsIfList : Elsif ∗ typesMap : TYPES, CBL_TYPES :: caseBranchList : CaseBranch ∗ typesMap : TYPES, PATTERN_TYPES :: pattern : Pattern typesMap : TYPES, PL_TYPES :: patternList : Pattern ∗ typesMap : TYPES, LP_TYPES :: listPattern : ListPattern typesMap : TYPES, OIP_TYPES :: optInnerPattern : OptionalInnerPattern typesMap : TYPES, SE_TYPES :: setExpr : SetExpr typesMap : TYPES, 310

D.2. FORMAL SPECIFICATION OF THE TRANSFORMER IN RSL1 OVEL_TYPES :: optValueExprList : OptionalValueExprList typesMap : TYPES, OVEPL_TYPES :: optValueExprPairList : OptionalValueExprPairList typesMap : TYPES, OR_TYPES :: optRestriction : OptionalRestriction typesMap : TYPES, LE_TYPES :: listExpr : ListExpr typesMap : TYPES, ME_TYPES :: mapExpr : MapExpr typesMap : TYPES value TRRSLAst : RSLAst × Text × TRANS → TRResult TRRSLAst(rslast, schemeid, trans) ≡ case TRClassExpr( class_expr(schemedef(libmodule(rslast))), trans) of Class_transformable(ce) → RSLast_transformable( mk_RSLAst( mk_LibModule( context_list(libmodule(rslast)), mk_SchemeDef(mk_Id(schemeid), ce)))), Class_not_transformable → RSLast_not_transformable end, TRClassExpr : ClassExpr × TRANS → ClassResult TRClassExpr(ce, trans) ≡ case ce of BasicClassExpr(dl) → case TRDeclList( dl, expandTYPINGSMap( getIds(getTypeDecl(dl)), makeTYPINGSMap(getTypeDecl(dl)), trans), establishFuncMap(dl, trans), trans, 〈〉) of DL_transformable(dlres) → Class_transformable( BasicClassExpr( makeVariables(dlres, trans))), 311

APPENDIX D. SPECIFICATION OF TRANSFORMER IN RSL1<br />

bindingList : Binding ∗<br />

valueExprList : ValueExpr ∗ ,<br />

BOOL_FFA_ENV_TYPES_LDL ::<br />

bool : Bool<br />

formalfa : FormalFunctionApplication<br />

envMap : ENV<br />

typesMap : TYPES<br />

letdefList : LetDef ∗ ,<br />

BOOL_ENV_TYPES ::<br />

bool : Bool envMap : ENV typesMap : TYPES,<br />

BOOL_ENV :: bool : Bool envMap : ENV,<br />

PRECOND_TYPES ::<br />

preCond : OptionalPreCondition typesMap : TYPES,<br />

VE_TYPES :: valueExpr : ValueExpr typesMap : TYPES,<br />

VEL_TYPES ::<br />

valueExprList : ValueExpr ∗ typesMap : TYPES,<br />

VEPL_TYPES ::<br />

valueExprPairList : ValueExprPair ∗<br />

typesMap : TYPES,<br />

BOOL_FFP_ENV_TYPES_LDL ::<br />

bool : Bool<br />

formalfp : FormalFunctionParameter<br />

envMap : ENV<br />

typesMap : TYPES<br />

letdefList : LetDef ∗ ,<br />

LDL_ENV :: letdefList : LetDef ∗ envMap : ENV,<br />

BINDINGLIST_VEL ::<br />

bindingList : Binding ∗<br />

valueExprList : ValueExpr ∗ ,<br />

LDL_TYPES ::<br />

letdefList : LetDef ∗ typesMap : TYPES,<br />

LD_TYPES :: letdef : LetDef typesMap : TYPES,<br />

EIL_TYPES :: elsIfList : Elsif ∗ typesMap : TYPES,<br />

CBL_TYPES ::<br />

caseBranchList : CaseBranch ∗ typesMap : TYPES,<br />

PATTERN_TYPES :: pattern : Pattern typesMap : TYPES,<br />

PL_TYPES ::<br />

patternList : Pattern ∗ typesMap : TYPES,<br />

LP_TYPES ::<br />

listPattern : ListPattern typesMap : TYPES,<br />

OIP_TYPES ::<br />

optInnerPattern : OptionalInnerPattern<br />

typesMap : TYPES,<br />

SE_TYPES :: setExpr : SetExpr typesMap : TYPES,<br />

310

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

Saved successfully!

Ooh no, something went wrong!