summaryrefslogtreecommitdiff
path: root/Biz/Language/Bs/Repl.hs
blob: 24f1bcd0dec5958a76418d96d39fb8c00963406e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE NoImplicitPrelude #-}

module Language.Bs.Repl
  ( mainLoop,
  )
where

import Control.Monad.Trans
import Data.String
import Data.Text as T
import Language.Bs.Eval
import Protolude
import System.Console.Haskeline

type Repl a = InputT IO a

mainLoop :: IO ()
mainLoop = runInputT defaultSettings repl

repl :: Repl ()
repl = do
  minput <- getInputLine "bs> "
  case minput of
    Nothing -> outputStrLn "bye."
    Just input -> (liftIO $ process input) >> repl

--Just input -> (liftIO $ processToAST input) >> repl

process :: String -> IO ()
process str = do
  res <- safeExec $ evalText $ T.pack str
  either putStrLn return res

processToAST :: String -> IO ()
processToAST str = print $ runParseTest $ T.pack str