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