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. --- transfer/run_core.hs | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'transfer') diff --git a/transfer/run_core.hs b/transfer/run_core.hs index 1d0457acd..0bb7f1aa8 100644 --- a/transfer/run_core.hs +++ b/transfer/run_core.hs @@ -1,14 +1,22 @@ import Transfer.InterpreterAPI +import Transfer.Interpreter (prEnv) +import Control.Monad (when) import Data.List (partition, isPrefixOf) import System.Environment (getArgs) +import System.IO (isEOF) interpretLoop :: Env -> IO () -interpretLoop env = do - line <- getLine - r <- evaluateString env line - putStrLn r - interpretLoop env +interpretLoop env = + do + eof <- isEOF + if eof + then return () + else do + line <- getLine + r <- evaluateString env line + putStrLn r + interpretLoop env runMain :: Env -> IO () runMain env = do @@ -21,6 +29,9 @@ main = do args <- getArgs env <- case files of [f] -> loadFile f _ -> fail "Usage: run_core [-i] " + when ("-v" `elem` flags) $ do + putStrLn "Top-level environment:" + putStrLn (prEnv env) if "-i" `elem` flags then interpretLoop env else runMain env -- cgit v1.2.3