module SimpleTest

from StdOverloaded import class zero(..), class toString(..)
import Common
import WhileLexer
import Simple
import SimpleParse

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

	val :: Var -> Either Error Int
	val v = parsed >>= \pgm -> run pgm zero >>= eval (Var v)