module Main where import Syntax import Typecheck import Eval import Control.Monad.Except main :: IO () main = do input <-getContents let program = (read input)::Program case runExcept $ wfProgram program of Left s -> print s Right () -> let (ret,state) = runProgram program in case ret of Left err-> print$ "Program finished with error" ++show err ++ "in state " ++ show state Right _ -> print$ "Program finished by going to the end to state" ++ show state