Download presentation

Presentation is loading. Please wait.

Published byPerla Townsell Modified over 2 years ago

1
School of Computing and Mathematics, University of Huddersfield CAS810: WEEK 5 LECTURE: DENOTIONAL SEMANTICS OF A SIMPLE LANGUAGE : INTERPRETATION IN HASKELL FORMATIVE ASSESSMENT: Last week’s exercises, Cmeans[[if B then S1 else S2]] PRACTICAL AND DURING THE WEEK: Do practical exercises to be given out..

2
School of Computing and Mathematics, University of Huddersfield GOFER/HASKELL IMPLEMENTATION OF LAST WEEKS LANGUAGE An implementation should deepen your understanding of the semantic definition BUT - implementations always add extra “detail” that doesn’t occur in the abstract definition - some syntax is necessarily different - I’ve cut a few corners to keep it simple - some “implicit” things have to be explicitly defined e.g. The overwrite and apply functions for maps

3
School of Computing and Mathematics, University of Huddersfield GOFER/HASKELL IMPLEMENTATION PROGRAM TEXT ‘SYNTAX TREE’ PREFIX FORM (Plus (SI 'x') (SN 42))x + 42 Cons 'y' (VN 0) (Cons 'x' (VN (-3)) Null) STORE cmeans NEW STORE

4
School of Computing and Mathematics, University of Huddersfield ABSTRACT SYNTAX - is in PREFIX form - is like normal syntax onto which a PARSER has been applied, producing an abstract syntax tree e.g. PARSER(x + 42) = (Plus (SI 'x') (SN 42)) This latter syntax is what the ‘implementation’ (of the denotational defn) is applied to...

5
School of Computing and Mathematics, University of Huddersfield ABSTRACT SYNTAX -- abstract syntax -- --------------- data Exp = SN Int | SB Bool | SI Identifier | Plus Exp Exp data Cmd = Assigns Identifier Exp | Sequence Cmd Cmd | While Exp Cmd

6
School of Computing and Mathematics, University of Huddersfield SEMANTIC DOMAINS -- semantic domains -- ---------------- -- (1) expressible values data E = VB Bool | VN Int | E_error -- (2) stores data S = Cons Identifier E S | Null | S_error

7
School of Computing and Mathematics, University of Huddersfield STORE - FUNCTIONS apply :: S -> Identifier -> E apply Null j = E_error apply S_error j = E_error apply (Cons i e s) j | i == j = e | otherwise = apply s j

8
School of Computing and Mathematics, University of Huddersfield STORE - FUNCTIONS overwrite :: S -> Identifier -> E -> S overwrite s j E_error = S_error overwrite Null j e2 = (Cons j e2 Null) overwrite S_error j e2 = S_error overwrite (Cons i e1 s) j e2 | i == j = (Cons i e2 s) | otherwise = (Cons i e1 (overwrite s j e2))

9
School of Computing and Mathematics, University of Huddersfield meaning functions- Emeans emeans :: Exp -> S -> E emeans (SB True) s = (VB True) emeans (SN x) s = VN x emeans (SI x) S_error = E_error emeans (SI x) s = apply s x emeans (Plus e1 e2) S_error = E_error emeans (Plus e1 e2) s = add (emeans e1 s) (emeans e2 s)

10
School of Computing and Mathematics, University of Huddersfield meaning functions- Cmeans cmeans :: Cmd -> S -> S cmeans c S_error = S_error cmeans (Assigns id exp) s = overwrite s id (emeans exp s) cmeans (Sequence c1 c2) s = cmeans c2 (cmeans c1 s)

11
School of Computing and Mathematics, University of Huddersfield meaning functions- Cmeans cmeans :: Cmd -> S -> S cmeans (While exp c) s | val (emeans exp s) == 0 = s | otherwise = cmeans (While exp c) (cmeans c s) val :: E -> Int val (VN x) = x

12
School of Computing and Mathematics, University of Huddersfield TESTS astore = Cons 'y' (VN 0) (Cons 'x' (VN (-3)) Null) test1 = cmeans (Assigns 'x' (SN 42)) astore test2 = cmeans (Sequence (Assigns 'x' (SN 42)) (Assigns 'y' (SI 'x')) ) astore test3 = cmeans (While (SI 'x') (Sequence (Assigns 'x' (Plus (SI 'x') (SN 1)) ) (Assigns 'y' (Plus (SI 'y') (SN 1)) ) )) astore test4 = cmeans (Sequence (Assigns 'x' (SN 42)) (Assigns 'y' (SI 'z')) ) astore

Similar presentations

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google