NXTDSL-0.4: Compiler.hs
import NXT.Types
import NXT.Compiler.Inference
import qualified NXT.Parser.AttoParser as P
import System.Environment
main =
do args <- getArgs
case args of
[filename] -> parseFile filename
_ -> putStrLn "USAGE: ./Compiler [filename]"
parseFile f =
do pResult <- P.parseFile f
case pResult of
Left errorMsg ->
putStrLn $ "Error: " ++ errorMsg
Right funDefs ->
do inferredDefs <- runInference funDefs
let cComment = "/* Generated by legoDSL. Don't touch! */"
cHeader = concatMap (prettyFD' False) inferredDefs
cCode = concatMap prettyFD inferredDefs
outFile = f ++ ".nxc"
writeFile outFile $ (cComment ++ cHeader ++ cCode)
putStrLn $ "Compiling ok. Generated " ++ outFile