aboutsummaryrefslogtreecommitdiff
path: root/src/main.hs
blob: 34a190acd084036d1b864c37595a72cd867bfe71 (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
import System.IO
import Statement
import Parser.Statement
import Parser.Core


main = do
    line <- prompt
    loop line

loop :: String -> IO ()
loop "exit" = return ()
loop line   = do s <- parseIO line
                 putStrLn $ show s
                 main

prompt :: IO String
prompt = do putStr "> "
            hFlush stdout
            getLine

parseIO :: String -> IO Statement
parseIO input = case parseStrict statementP input of
                  Nothing -> fail "Couldn't parse input"
                  Just s  -> return s