summaryrefslogtreecommitdiff
path: root/transfer/run_core.hs
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2005-11-25 16:36:19 +0000
committerbringert <bringert@cs.chalmers.se>2005-11-25 16:36:19 +0000
commitdbe8e61acc616b8f5ac07e8df89eb98a7997c29d (patch)
tree6e379f18986fc60f5606e023def46abdf770dca5 /transfer/run_core.hs
parentfe2731e5f8e301b5a0169bf8b667bb6c13bae80b (diff)
Move transfer into the GF repo.
Diffstat (limited to 'transfer/run_core.hs')
-rw-r--r--transfer/run_core.hs26
1 files changed, 26 insertions, 0 deletions
diff --git a/transfer/run_core.hs b/transfer/run_core.hs
new file mode 100644
index 000000000..1d0457acd
--- /dev/null
+++ b/transfer/run_core.hs
@@ -0,0 +1,26 @@
+import Transfer.InterpreterAPI
+
+import Data.List (partition, isPrefixOf)
+import System.Environment (getArgs)
+
+interpretLoop :: Env -> IO ()
+interpretLoop env = 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: run_core [-i] <file>"
+ if "-i" `elem` flags
+ then interpretLoop env
+ else runMain env