28 lines
776 B
Haskell
28 lines
776 B
Haskell
{-# LANGUAGE LambdaCase #-}
|
|
module Main where
|
|
|
|
import Grammar.Par (myLexer, pProgram)
|
|
import Grammar.Print (printTree)
|
|
import LambdaLifter (abstract, freeVars, lambdaLift, rename)
|
|
import System.Environment (getArgs)
|
|
import System.Exit (exitFailure, exitSuccess)
|
|
|
|
main :: IO ()
|
|
main = getArgs >>= \case
|
|
[] -> print "Required file path missing"
|
|
(x:_) -> do
|
|
file <- readFile x
|
|
case pProgram (myLexer file) of
|
|
Left err -> do
|
|
putStrLn "SYNTAX ERROR"
|
|
putStrLn err
|
|
exitFailure
|
|
Right prg -> do
|
|
putStrLn "-- Parser"
|
|
putStrLn $ printTree prg
|
|
putStrLn "\n--Lamda lifter"
|
|
putStrLn . printTree $ lambdaLift prg
|
|
exitSuccess
|
|
|
|
|
|
|