diff options
| author | bringert <bringert@cs.chalmers.se> | 2005-12-05 16:53:27 +0000 |
|---|---|---|
| committer | bringert <bringert@cs.chalmers.se> | 2005-12-05 16:53:27 +0000 |
| commit | f4a28c94aabfdef6011294db3d36860dcb5badb3 (patch) | |
| tree | 73dbd3e3ed549f90be0803cde9bb09553e94af1c /transfer/trci.hs | |
| parent | 56e9e45171c306f8b539722d3653dafc339212ce (diff) | |
Renamed transfer compiler and interpreter.
Diffstat (limited to 'transfer/trci.hs')
| -rw-r--r-- | transfer/trci.hs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/transfer/trci.hs b/transfer/trci.hs new file mode 100644 index 000000000..3cfd02bd6 --- /dev/null +++ b/transfer/trci.hs @@ -0,0 +1,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 |
