mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
38 lines
1.0 KiB
Haskell
38 lines
1.0 KiB
Haskell
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
|