summaryrefslogtreecommitdiff
path: root/transfer
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2005-11-25 18:02:36 +0000
committerbringert <bringert@cs.chalmers.se>2005-11-25 18:02:36 +0000
commit2f5ee5b6ef1c9a8bf8d13cab5c6ef05a10553131 (patch)
treed3e62d2b2986e977be5a275d868d4bd8fee5f14e /transfer
parentfe1fdf3afd7755f6b5d8282d85f53924c662bf90 (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.hs21
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