summaryrefslogtreecommitdiff
path: root/paper/While/SimpleTest.icl
diff options
context:
space:
mode:
Diffstat (limited to 'paper/While/SimpleTest.icl')
-rw-r--r--paper/While/SimpleTest.icl22
1 files changed, 22 insertions, 0 deletions
diff --git a/paper/While/SimpleTest.icl b/paper/While/SimpleTest.icl
new file mode 100644
index 0000000..045eb9e
--- /dev/null
+++ b/paper/While/SimpleTest.icl
@@ -0,0 +1,22 @@
+module SimpleTest
+
+from StdOverloaded import class zero(..), class toString(..)
+import Common
+import WhileLexer
+import Simple
+import SimpleParse
+
+Start = toString <$> parsed
+//Start = val "z"
+where
+ lexed :: Either Error [Token]
+ lexed = lex ['x := 30; z := 0; o := 1; s := 1; while s <= x do (z := z+1; o := o+2; s := s+o)']
+
+ parsed :: Either Error Stm
+ parsed = lexed >>= parse
+
+ ran :: Either Error State
+ ran = parsed >>= \pgm -> run pgm zero
+
+ val :: Var -> Either Error Int
+ val v = ran >>= eval (Var v)