diff options
Diffstat (limited to 'Main.hs')
-rw-r--r-- | Main.hs | 29 |
1 files changed, 29 insertions, 0 deletions
@@ -0,0 +1,29 @@ +module Main where + +import System.Environment +import System.Exit + +import Compiler +import Optimiser +import Parser +import VM + + +usage :: IO () +usage = do + progname <- getProgName + putStrLn $ "Usage: " ++ progname ++ " [filename.lisp]" + +main :: IO () +main = do + clargs <- getArgs + source <- case clargs of + [] -> getContents + [fname] -> readFile fname + _ -> usage >> exitFailure + + prog <- parseProgram source >>= either (die . show) return + irprog <- either die return (compileProgram prog) + let opt = optimise irprog + -- print opt + vmRun opt |