blob: 6df7e6ccf8de1ebd036bc15135b17d200f29ec9d (
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 (hPutStr, 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 (compileAll ast) startState
case res of
Right _ -> print ast
Left errs -> hPutStr stderr $ showErrorList errs
|