blob: 3cfd02bd661c2249f494ad4d6e4ab702da7a7d1a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
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
eof <- isEOF
if eof
then return ()
else do
line <- getLine
r <- evaluateString env line
putStrLn r
interpretLoop env
runMain :: Env -> IO ()
runMain env = do
r <- evaluateString env "main"
putStrLn r
main :: IO ()
main = do args <- getArgs
let (flags,files) = partition ("-" `isPrefixOf`) args
env <- case files of
[f] -> loadFile f
_ -> fail "Usage: trci [-i] <file>"
when ("-v" `elem` flags) $ do
putStrLn "Top-level environment:"
putStrLn (prEnv env)
if "-i" `elem` flags
then interpretLoop env
else runMain env
|