summaryrefslogtreecommitdiff
path: root/transfer/trci.hs
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2005-12-05 16:53:27 +0000
committerbringert <bringert@cs.chalmers.se>2005-12-05 16:53:27 +0000
commitf4a28c94aabfdef6011294db3d36860dcb5badb3 (patch)
tree73dbd3e3ed549f90be0803cde9bb09553e94af1c /transfer/trci.hs
parent56e9e45171c306f8b539722d3653dafc339212ce (diff)
Renamed transfer compiler and interpreter.
Diffstat (limited to 'transfer/trci.hs')
-rw-r--r--transfer/trci.hs37
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