diff options
| author | bringert <bringert@cs.chalmers.se> | 2005-11-25 18:02:36 +0000 |
|---|---|---|
| committer | bringert <bringert@cs.chalmers.se> | 2005-11-25 18:02:36 +0000 |
| commit | 2f5ee5b6ef1c9a8bf8d13cab5c6ef05a10553131 (patch) | |
| tree | d3e62d2b2986e977be5a275d868d4bd8fee5f14e /transfer | |
| parent | fe1fdf3afd7755f6b5d8282d85f53924c662bf90 (diff) | |
Added evaluateExp and builtin to InterpreterAPI. Check for EOF in interactive transfer interpreter mode.
Diffstat (limited to 'transfer')
| -rw-r--r-- | transfer/run_core.hs | 21 |
1 files changed, 16 insertions, 5 deletions
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] <file>" + when ("-v" `elem` flags) $ do + putStrLn "Top-level environment:" + putStrLn (prEnv env) if "-i" `elem` flags then interpretLoop env else runMain env |
