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 TypeDef == SortDef(sd_id : Id) | VariantDef(id : Id, variant_list : Variant ∗ ) | UnionDef( ud_id : Id, name_or_wildcard_list : NameOrWildcard ∗ ) | ShortRecordDef( srd_id : Id, component_kind_string : ComponentKind ∗ ) | AbbreviationDef(abbr_id : Id, type_expr : TypeExpr), Variant == Make_Constructor(constructor : Constructor) | RecordVariant( record_constructor : Constructor, component_kind_list : ComponentKind ∗ ), Constructor :: id : Id, ComponentKind :: optional_destructor : OptionalDestructor type_expr : TypeExpr optional_reconstructor : OptionalReconstructor, OptionalDestructor == Destructor(id : Id) | NoDestructor, OptionalReconstructor == Reconstructor(id : Id) | NoReconstructor, NameOrWildcard == Name(var : ValueOrVariableName) | Wildcard, /∗Value Definitions∗/ ValueDef == ExplicitValueDef( single_typing : SingleTyping, value_expr : ValueExpr) | ExplicitFunctionDef( fun_single_typing : SingleTyping, formal_function_application : FormalFunctionApplication, fun_value_expr : ValueExpr, pre_cond : OptionalPreCondition), OptionalPreCondition == PreCondition(cond : ValueExpr) | NoPreCondition, Typing == Make_SingleTyping(single_typing : SingleTyping) | Make_MultipleTyping(multiple_typing : MultipleTyping), SingleTyping :: 302
D.1. FORMAL SPECIFICATION OF THE RSL AST binding : Binding type_expr : TypeExpr, MultipleTyping :: binding_list : Binding ∗ type_expr : TypeExpr, FormalFunctionApplication == IdApplication( id : Id, formal_function_parameter : FormalFunctionParameter), FormalFunctionParameter :: binding_list : Binding ∗ , Binding == IdBinding(id : Id) | Make_ProductBinding(prod_binding : ProductBinding), ProductBinding :: binding_list : Binding ∗ , /∗Variable Definitions∗/ VariableDef == SingleVariableDef( id : Id, type_expr : TypeExpr, optional_initialisation : OptionalInitialisation) | MultipleVariableDef( id_list : Id ∗ , m_type_expr : TypeExpr), OptionalInitialisation == Initialisation(value_expr : ValueExpr) | NoInitialisation, /∗Test Definitions∗/ TestDef == TestCase(id : Id, value_expr : ValueExpr), /∗Type Expressions∗/ TypeExpr == TypeLiteral(type_literal : TypeLiterals) | TypeName(id : Id) | TypeExprProduct(component_list : TypeExpr ∗ ) | TypeExprSet(type_expr_set : TypeExprSets) | TypeExprList(type_expr_list : TypeExprLists) | TypeExprMap(type_expr_map : TypeExprMaps) | FunctionTypeExpr( type_expr_argument : TypeExpr, function_arrow : FunctionArrow, type_expr_result : ResultDesc) | SubtypeExpr( single_typing : SingleTyping, restriction : ValueExpr) | 303
- Page 268 and 269: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 270 and 271: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 272 and 273: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 274 and 275: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 276 and 277: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 278 and 279: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 280 and 281: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 282 and 283: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 284 and 285: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 286 and 287: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 288 and 289: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 290 and 291: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 292 and 293: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 294 and 295: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 296 and 297: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 298 and 299: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 300 and 301: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 302 and 303: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 304 and 305: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 306 and 307: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 308 and 309: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 310 and 311: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 312 and 313: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 314 and 315: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 316 and 317: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 320 and 321: APPENDIX D. SPECIFICATION OF TRANSF
- Page 322 and 323: APPENDIX D. SPECIFICATION OF TRANSF
- Page 324 and 325: APPENDIX D. SPECIFICATION OF TRANSF
- Page 326 and 327: APPENDIX D. SPECIFICATION OF TRANSF
- Page 328 and 329: APPENDIX D. SPECIFICATION OF TRANSF
- Page 330 and 331: APPENDIX D. SPECIFICATION OF TRANSF
- Page 332 and 333: APPENDIX D. SPECIFICATION OF TRANSF
- Page 334 and 335: APPENDIX D. SPECIFICATION OF TRANSF
- Page 336 and 337: APPENDIX D. SPECIFICATION OF TRANSF
- Page 338 and 339: APPENDIX D. SPECIFICATION OF TRANSF
- Page 340 and 341: APPENDIX D. SPECIFICATION OF TRANSF
- Page 342 and 343: APPENDIX D. SPECIFICATION OF TRANSF
- Page 344 and 345: APPENDIX D. SPECIFICATION OF TRANSF
- Page 346 and 347: APPENDIX D. SPECIFICATION OF TRANSF
- Page 348 and 349: APPENDIX D. SPECIFICATION OF TRANSF
- Page 350 and 351: APPENDIX D. SPECIFICATION OF TRANSF
- Page 352 and 353: APPENDIX D. SPECIFICATION OF TRANSF
- Page 354 and 355: APPENDIX D. SPECIFICATION OF TRANSF
- Page 356 and 357: APPENDIX D. SPECIFICATION OF TRANSF
- Page 358 and 359: APPENDIX D. SPECIFICATION OF TRANSF
- Page 360 and 361: APPENDIX D. SPECIFICATION OF TRANSF
- Page 362 and 363: APPENDIX D. SPECIFICATION OF TRANSF
- Page 364 and 365: APPENDIX D. SPECIFICATION OF TRANSF
- Page 366 and 367: APPENDIX D. SPECIFICATION OF TRANSF
D.1. FORMAL SPECIFICATION OF THE RSL AST<br />
binding : Binding type_expr : TypeExpr,<br />
MultipleTyping ::<br />
binding_list : Binding ∗ type_expr : TypeExpr,<br />
FormalFunctionApplication ==<br />
IdApplication(<br />
id : Id,<br />
formal_function_parameter :<br />
FormalFunctionParameter),<br />
FormalFunctionParameter :: binding_list : Binding ∗ ,<br />
Binding ==<br />
IdBinding(id : Id) |<br />
Make_ProductBinding(prod_binding : ProductBinding),<br />
ProductBinding :: binding_list : Binding ∗ ,<br />
/∗Variable Definitions∗/<br />
VariableDef ==<br />
SingleVariableDef(<br />
id : Id,<br />
type_expr : TypeExpr,<br />
optional_initialisation : OptionalInitialisation) |<br />
MultipleVariableDef(<br />
id_list : Id ∗ , m_type_expr : TypeExpr),<br />
OptionalInitialisation ==<br />
Initialisation(value_expr : ValueExpr) |<br />
NoInitialisation,<br />
/∗Test Definitions∗/<br />
TestDef == TestCase(id : Id, value_expr : ValueExpr),<br />
/∗Type Expressions∗/<br />
TypeExpr ==<br />
TypeLiteral(type_literal : TypeLiterals) |<br />
TypeName(id : Id) |<br />
TypeExprProduct(component_list : TypeExpr ∗ ) |<br />
TypeExprSet(type_expr_set : TypeExprSets) |<br />
TypeExprList(type_expr_list : TypeExprLists) |<br />
TypeExprMap(type_expr_map : TypeExprMaps) |<br />
FunctionTypeExpr(<br />
type_expr_argument : TypeExpr,<br />
function_arrow : FunctionArrow,<br />
type_expr_result : ResultDesc) |<br />
SubtypeExpr(<br />
single_typing : SingleTyping,<br />
restriction : ValueExpr) |<br />
303