Transformation of Applicative Specifications into Imperative ...
Transformation of Applicative Specifications into Imperative ... Transformation of Applicative Specifications into Imperative ...
APPENDIX C. FORMAL SPECIFICATIONS OF TRANSFORMATIONS BracketedExpr(bve) → let (b, env ′ , types ′ ) = CheckValueExpr( bve, Unknown, typings, func, trans, env, types) in (b, updateENV(env ′ , et, trans), types ′ ) end, ValueInfixExpr(first, op, second) → let (b, env ′ , types ′ ) = CheckValueExprList( 〈first, second〉, 〈Unknown, Unknown〉, typings, func, trans, env, types) in (b, updateENV(env ′ , et, trans), types ′ ) end, ValuePrefixExpr(op, operand) → let (b, env ′ , types ′ ) = CheckValueExpr( operand, Unknown, typings, func, trans, env, types) in (b, updateENV(env ′ , et, trans), types ′ ) end, LetExpr(ldl, lve) → let (b, env ′ , types ′ ) = CheckLetDefList( ldl, typings, func, trans, env, types), (b ′ , env ′′ , types ′′ ) = CheckValueExpr( lve, et, typings, func, trans, env ′ , types ′ ) in (b ∧ b ′ , env ′′ , types ′′ ) end, Make_IfExpr(ie) → CheckIfExpr( ie, et, typings, func, trans, env, types), CaseExpr(cond, cbl) → let 164
C.1. FORMAL SPECIFICATION OF THE TRANSFORMER end, (b, env ′ , types ′ ) = CheckValueExpr( cond, Unknown, typings, func, trans, env, types), (b ′ , env ′′ , types ′′ ) = CheckCaseBranchList( cbl, et, typings, func, trans, env ′ , types ′ ) in (b ∧ b ′ , env ′′ , types ′′ ) end /∗Checks for transformability of a list of value expressions.∗/ /∗ Arguments: ======= vel: the list of value expressions etl: the list of the corresponding expected types of the value expressions Results: ===== Bool: true if the list is transformable, false otherwise ∗/ CheckValueExprList : ValueExpr ∗ × ExpType ∗ × TYPINGS × FUNC × TRANS × ENV × TYPES → Bool × ENV × TYPES CheckValueExprList( vel, etl, typings, func, trans, env, types) ≡ if vel = 〈〉 then (true, env, types) else let (b, env ′ , types ′ ) = CheckValueExpr( hd vel, hd etl, typings, func, trans, env, types) in if ∼ b then (b, env ′ , types ′ ) else CheckValueExprList( tl vel, tl etl, typings, func, trans, env ′ , 165
- Page 130 and 131: CHAPTER 10. EXAMPLES OF TRANSFORMAT
- Page 132 and 133: CHAPTER 10. EXAMPLES OF TRANSFORMAT
- Page 134 and 135: CHAPTER 10. EXAMPLES OF TRANSFORMAT
- Page 136 and 137: CHAPTER 11. TEST 11.1.1 Lexer and P
- Page 138 and 139: CHAPTER 11. TEST An overview of the
- Page 140 and 141: CHAPTER 12. POSSIBLE EXTENSIONS OF
- Page 142 and 143: CHAPTER 12. POSSIBLE EXTENSIONS OF
- Page 144 and 145: CHAPTER 12. POSSIBLE EXTENSIONS OF
- Page 146 and 147: CHAPTER 13. CONCLUSION RSL AST and
- Page 148 and 149: CHAPTER 13. CONCLUSION 132
- Page 150 and 151: BIBLIOGRAPHY [ST02] Donald Sannello
- Page 152 and 153: APPENDIX A. USING AND EXTENDING THE
- Page 154 and 155: APPENDIX A. USING AND EXTENDING THE
- Page 156 and 157: APPENDIX B. CONTENTS OF CD-ROM 140
- Page 158 and 159: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 160 and 161: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 162 and 163: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 164 and 165: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 166 and 167: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 168 and 169: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 170 and 171: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 172 and 173: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 174 and 175: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 176 and 177: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 178 and 179: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 182 and 183: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 184 and 185: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 186 and 187: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 188 and 189: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 190 and 191: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 192 and 193: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 194 and 195: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 196 and 197: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 198 and 199: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 200 and 201: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 202 and 203: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 204 and 205: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 206 and 207: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 208 and 209: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 210 and 211: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 212 and 213: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 214 and 215: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 216 and 217: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 218 and 219: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 220 and 221: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 222 and 223: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 224 and 225: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 226 and 227: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 228 and 229: APPENDIX C. FORMAL SPECIFICATIONS O
APPENDIX C. FORMAL SPECIFICATIONS OF TRANSFORMATIONS<br />
BracketedExpr(bve) →<br />
let<br />
(b, env ′ , types ′ ) =<br />
CheckValueExpr(<br />
bve, Unknown, typings, func, trans, env,<br />
types)<br />
in<br />
(b, updateENV(env ′ , et, trans), types ′ )<br />
end,<br />
ValueInfixExpr(first, op, second) →<br />
let<br />
(b, env ′ , types ′ ) =<br />
CheckValueExprList(<br />
〈first, second〉, 〈Unknown, Unknown〉,<br />
typings, func, trans, env, types)<br />
in<br />
(b, updateENV(env ′ , et, trans), types ′ )<br />
end,<br />
ValuePrefixExpr(op, operand) →<br />
let<br />
(b, env ′ , types ′ ) =<br />
CheckValueExpr(<br />
operand, Unknown, typings, func, trans,<br />
env, types)<br />
in<br />
(b, updateENV(env ′ , et, trans), types ′ )<br />
end,<br />
LetExpr(ldl, lve) →<br />
let<br />
(b, env ′ , types ′ ) =<br />
CheckLetDefList(<br />
ldl, typings, func, trans, env, types),<br />
(b ′ , env ′′ , types ′′ ) =<br />
CheckValueExpr(<br />
lve, et, typings, func, trans, env ′ ,<br />
types ′ )<br />
in<br />
(b ∧ b ′ , env ′′ , types ′′ )<br />
end,<br />
Make_IfExpr(ie) →<br />
CheckIfExpr(<br />
ie, et, typings, func, trans, env, types),<br />
CaseExpr(cond, cbl) →<br />
let<br />
164