1
0
forked from GitHub/gf-core

Added evaluateExp and builtin to InterpreterAPI. Check for EOF in interactive transfer interpreter mode.

This commit is contained in:
bringert
2005-11-25 18:02:36 +00:00
parent fe1fdf3afd
commit 2f5ee5b6ef
3 changed files with 110 additions and 42 deletions

View File

@@ -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