From 2f5ee5b6ef1c9a8bf8d13cab5c6ef05a10553131 Mon Sep 17 00:00:00 2001 From: bringert Date: Fri, 25 Nov 2005 18:02:36 +0000 Subject: Added evaluateExp and builtin to InterpreterAPI. Check for EOF in interactive transfer interpreter mode. --- src/Transfer/InterpreterAPI.hs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/Transfer/InterpreterAPI.hs') diff --git a/src/Transfer/InterpreterAPI.hs b/src/Transfer/InterpreterAPI.hs index d78265534..2fe04e8f3 100644 --- a/src/Transfer/InterpreterAPI.hs +++ b/src/Transfer/InterpreterAPI.hs @@ -1,4 +1,7 @@ -module Transfer.InterpreterAPI (Env, load, loadFile, evaluateString) where +module Transfer.InterpreterAPI (Env, builtin, + load, loadFile, + evaluateString, evaluateExp + ) where import Transfer.Core.Abs import Transfer.Core.Lex @@ -17,6 +20,7 @@ load n s = case pModule (myLexer s) of Ok m -> return $ addModuleEnv builtin m -- | Read a transfer module in core format from a file. +-- Fails in the IO monad if there is a problem loading the file. loadFile :: FilePath -> IO Env loadFile f = readFile f >>= load f @@ -29,3 +33,7 @@ evaluateString env s = Ok e -> do let v = eval env e return $ printValue v + +-- | Evaluate an expression in the given environment. +evaluateExp :: Env -> Exp -> Exp +evaluateExp env exp = valueToExp $ eval env exp -- cgit v1.2.3