blob: 0b4325cb4a593de5c9d4c324e686f286b88622ec (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
module Main where
import Compiler
import Control.Monad.State (evalState)
import qualified Data.Map as Map
import Error (showErrorList)
import Lexer (scan)
import Parser (parse, parseFromFile)
import System.Exit (exitFailure)
import System.IO (hPutStrLn, stderr, stdout)
main :: IO ()
main = do
res <- parseFromFile (scan parse) "input"
case res of
Left err -> hPutStrLn stderr ("error: " ++ show err) >> exitFailure
Right ast -> do
res <- return $ evalState (compile ast) startState
case res of
Right _ -> print ast
Left errs -> hPutStrLn stderr $ showErrorList errs
|