summaryrefslogtreecommitdiff
path: root/paper/While/SimpleTest.icl
blob: 045eb9ea995f3314acf9841eb503f3c513651e52 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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)