summaryrefslogtreecommitdiff
path: root/assignment-13/uFPL.icl
diff options
context:
space:
mode:
authorCamil Staps2018-01-03 12:13:44 +0100
committerCamil Staps2018-01-06 15:03:02 +0100
commit32a3b5aa0f5b6343928c9e42e66cce9db7e14e90 (patch)
tree73117add4b929b179a1ad340b5911e22c3138a25 /assignment-13/uFPL.icl
parentRename & restructure (diff)
Start iTasks Simulator
Diffstat (limited to 'assignment-13/uFPL.icl')
-rw-r--r--assignment-13/uFPL.icl13
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