summaryrefslogtreecommitdiff
path: root/app/Main.hs
diff options
context:
space:
mode:
authorMirek Kratochvil <exa.exa@gmail.com>2022-11-05 18:02:14 +0100
committerMirek Kratochvil <exa.exa@gmail.com>2022-11-05 18:02:14 +0100
commit8eb307e3e11a109aeae7f96ffcb7476d93493ffb (patch)
treeac0ff172a8508268f0e93d3c869c910122b2303d /app/Main.hs
parent8f47919624f0153ff9afa299d994d66bb63037ef (diff)
downloadprlg-8eb307e3e11a109aeae7f96ffcb7476d93493ffb.tar.gz
prlg-8eb307e3e11a109aeae7f96ffcb7476d93493ffb.tar.bz2
interpreter interprets.
Diffstat (limited to 'app/Main.hs')
-rw-r--r--app/Main.hs44
1 files changed, 3 insertions, 41 deletions
diff --git a/app/Main.hs b/app/Main.hs
index 5dfb25e..2222450 100644
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -1,46 +1,8 @@
module Main where
-import qualified Compiler as C
-import Control.Monad.IO.Class
-import qualified Data.Map as M
-import qualified Interpreter as I
-import qualified Parser as P
+import Control.Monad
import System.Console.Haskeline
-import qualified Text.Megaparsec as MP
-import Text.Pretty.Simple
-
-ppr :: Show a => a -> IO ()
-ppr =
- pPrintOpt
- CheckColorTty
- defaultOutputOptionsDarkBg
- { outputOptionsCompactParens = True
- , outputOptionsIndentAmount = 2
- , outputOptionsPageWidth = 80
- }
-
-interpret :: String -> IO ()
-interpret = lex
- where
- lex input =
- case MP.parse P.lexPrlg "-" input of
- Left bundle -> putStr (MP.errorBundlePretty bundle)
- Right toks -> parse toks
- parse toks =
- case MP.parse P.parsePrlg "-" toks of
- Left bundle -> putStr (MP.errorBundlePretty bundle)
- Right ast -> prologize ast
- prologize ast = ppr $ map (P.ast2prlg P.defaultOps) ast
+import Frontend (interpreter)
main :: IO ()
-main =
- runInputT defaultSettings loop
- where
- loop :: InputT IO ()
- loop = do
- minput <- getInputLine "prlg> "
- case minput of
- Nothing -> return ()
- Just input -> do
- liftIO $ interpret input
- loop
+main = runInputT defaultSettings interpreter