aboutsummaryrefslogtreecommitdiffstats
path: root/src/Lib.hs
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2022-10-04 15:21:56 +0300
committerJan Tuomi <jans.tuomi@gmail.com>2022-12-05 14:21:53 +0200
commitc1713b4ea6c542fa2fe0d66b51c5b7b27fedf57a (patch)
tree84f580f25f4480525880759d069d0597686b3e8f /src/Lib.hs
parent7a498e3a581f26b81fc9c2c9c7af8448a7f84f0f (diff)
Add import!
Diffstat (limited to 'src/Lib.hs')
-rw-r--r--src/Lib.hs43
1 files changed, 0 insertions, 43 deletions
diff --git a/src/Lib.hs b/src/Lib.hs
deleted file mode 100644
index 8b26a35..0000000
--- a/src/Lib.hs
+++ /dev/null
@@ -1,43 +0,0 @@
-{-# LANGUAGE LambdaCase #-}
-module Lib (
- runScriptFile,
- runInlineScript,
-) where
-
-import qualified Data.List as L
-import Control.Monad.Except
-import Control.Monad.Reader
-import Utils
-import Tokenizer ( tokenize )
-import Parser ( parse )
-import Evaluator ( evaluate )
-
-runScriptFile :: Env -> String -> LContext (Env, [AST])
-runScriptFile env fileName = do
- src <- liftIO $ readFile fileName
- runInlineScript fileName env src
-
-runInlineScript :: String -> Env -> String -> LContext (Env, [AST])
-runInlineScript fileName env src = do
- tokenized <- tokenize fileName src
- config <- ask
- when (configVerboseMode config) $ liftIO $ putStrLn $ "tokenized:\t\t" ++ show tokenized
- parsed <- parse tokenized
-
- when (configVerboseMode config) $ do
- let output = "parsed:\t\t\t" ++ (map show parsed $> L.intercalate "\n\t\t\t")
- liftIO $ putStrLn output
-
- (newEnv, evaluated) <- foldEvaluate env parsed
-
- when (configPrintEvaled config) $ do
- liftIO $ mapM_ putStrLn (map show evaluated)
-
- return (newEnv, evaluated)
- where
- foldEvaluate :: Env -> [AST] -> LContext (Env, [AST])
- foldEvaluate accEnv [] = return (accEnv, [])
- foldEvaluate accEnv (ast:rest) = do
- (newAccEnv, newAst) <- evaluate 0 accEnv ast
- (retEnv, restEvaled) <- foldEvaluate newAccEnv rest
- return $ (retEnv, newAst : restEvaled)