diff options
author | Camil Staps | 2018-01-03 12:13:44 +0100 |
---|---|---|
committer | Camil Staps | 2018-01-06 15:03:02 +0100 |
commit | 32a3b5aa0f5b6343928c9e42e66cce9db7e14e90 (patch) | |
tree | 73117add4b929b179a1ad340b5911e22c3138a25 /assignment-13/uFPL.icl | |
parent | Rename & restructure (diff) |
Start iTasks Simulator
Diffstat (limited to 'assignment-13/uFPL.icl')
-rw-r--r-- | assignment-13/uFPL.icl | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/assignment-13/uFPL.icl b/assignment-13/uFPL.icl index 2499da5..3104595 100644 --- a/assignment-13/uFPL.icl +++ b/assignment-13/uFPL.icl @@ -18,6 +18,7 @@ import Data.List import uFPL.Arduino import uFPL.Bootstrap import uFPL.C +import uFPL.Sim import uFPL.Util typedfun :: CType String -> String @@ -41,7 +42,7 @@ removeDupShares (Shares s ss) = if exists id (Shares s) (removeDupShares ss) where exists = any (\s` -> s.sname == s`) (sharesMap (\s -> s.sname) ss) -sharesMap :: (A.t rw: (Shared t rw) -> a) Shares -> [a] +sharesMap :: (A.t rw: (UShared t rw) -> a) Shares -> [a] sharesMap _ NoShares = [] sharesMap f (Shares s ss) = [f s:sharesMap f ss] @@ -128,10 +129,11 @@ where gen (EOr _ a b) = CEInfix "||" (gen a) (gen b) gen (EIf b t e) = CEIf (gen b) (gen t) (gen e) -instance gen (Shared t rw) CVar +instance gen (UShared t rw) CVar where gen shr = - { name = "s" +++ shr.sname + { CVar + | name = "s" +++ shr.sname , type = CTStruct (typedfun shr.stype "share") , value = CEStruct [ ("val", shr.srepr.map_to shr.sinit) @@ -180,7 +182,7 @@ where genf :: (NamedRule -> CFun) genf = gen - genv :: ((Shared t rw) -> CVar) + genv :: ((UShared t rw) -> CVar) genv = gen instance gen NamedRule CProg @@ -195,7 +197,8 @@ instance gen [NamedRule] CProg where gen rs = foldr (combinePrograms o gen) zero rs -Start = printToString (genp example_score) +Start w = startEngine (simulate example_countdown) w +Start _ = printToString (genp example_score) where genp :: (a -> CProg) | gen a CProg genp = gen |