From d49e2401bfff517e65d6ee5ba3536e71b3620bba Mon Sep 17 00:00:00 2001 From: sebastian Date: Sun, 26 Mar 2023 00:09:47 +0100 Subject: [PATCH] added file suffix and check --- src/Main.hs | 65 ++++++++++++++++++++------------ test_program => test_program.chf | 2 + 2 files changed, 42 insertions(+), 25 deletions(-) rename test_program => test_program.chf (99%) diff --git a/src/Main.hs b/src/Main.hs index 59f486d..3bb12d4 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -2,38 +2,53 @@ module Main where -import Codegen.Codegen (generateCode) -import Data.Bool (bool) -import GHC.IO.Handle.Text (hPutStrLn) -import Grammar.ErrM (Err) -import Grammar.Par (myLexer, pProgram) -import Grammar.Print (printTree) +import Codegen.Codegen (generateCode) +import Data.Bool (bool) +import GHC.IO.Handle.Text (hPutStrLn) +import Grammar.ErrM (Err) +import Grammar.Par (myLexer, pProgram) +import Grammar.Print (printTree) -import Monomorphizer.Monomorphizer (monomorphize) +import Monomorphizer.Monomorphizer (monomorphize) -import Control.Monad (when) -import Data.List.Extra (isSuffixOf) +import Control.Monad (when) +import Data.List.Extra (isSuffixOf) -import Compiler (compile) -import Renamer.Renamer (rename) -import System.Directory (createDirectory, doesPathExist, - getDirectoryContents, - removeDirectoryRecursive, - setCurrentDirectory) -import System.Environment (getArgs) -import System.Exit (ExitCode, exitFailure, - exitSuccess) -import System.IO (stderr) -import System.Process.Extra (readCreateProcess, shell, - spawnCommand, waitForProcess) -import TypeChecker.TypeChecker (typecheck) +import Compiler (compile) +import Renamer.Renamer (rename) +import System.Directory ( + createDirectory, + doesPathExist, + getDirectoryContents, + removeDirectoryRecursive, + setCurrentDirectory, + ) +import System.Environment (getArgs) +import System.Exit ( + ExitCode, + exitFailure, + exitSuccess, + ) +import System.IO (stderr) +import System.Process.Extra ( + readCreateProcess, + shell, + spawnCommand, + waitForProcess, + ) +import TypeChecker.TypeChecker (typecheck) main :: IO () main = getArgs >>= \case - [] -> print "Required file path missing" - ("-d" : s : _) -> main' True s - (s : _) -> main' False s + [] -> putStrLn "Required file path missing" + ["-d", s] -> do + when (".crf" `isSuffixOf` s) (main' True s) + putStrLn $ "File '" ++ s ++ "' is not a churf file" + [s] -> do + when (".crf" `isSuffixOf` s) (main' False s) + putStrLn $ "File '" ++ s ++ "' is not a churf file" + xs -> putStrLn $ "Can't process: " ++ unwords xs main' :: Bool -> String -> IO () main' debug s = do diff --git a/test_program b/test_program.chf similarity index 99% rename from test_program rename to test_program.chf index ac209ea..ccc6291 100644 --- a/test_program +++ b/test_program.chf @@ -26,3 +26,5 @@ bind ma f = case ma of { Nothing => Nothing ; Just a => f a ; }; + +