From 5dcf44222f293d018116025d396498d84d9f3a84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Madeleine=20Sydney=20=C5=9Alaga?= Date: Fri, 15 May 2026 15:42:17 -0600 Subject: [PATCH] --- app/Gyehoek/Options.hs | 44 +++++++++++++++++++++++++++++++++++++++++ app/Main.hs | 18 ++++++++++++----- gyehoek.cabal | 6 ++++-- play/a.out | Bin 18824 -> 0 bytes play/t.ssa | 15 -------------- runtime/gyehoek.c | 2 +- 6 files changed, 62 insertions(+), 23 deletions(-) create mode 100644 app/Gyehoek/Options.hs delete mode 100755 play/a.out delete mode 100644 play/t.ssa diff --git a/app/Gyehoek/Options.hs b/app/Gyehoek/Options.hs new file mode 100644 index 0000000..d1e0c3e --- /dev/null +++ b/app/Gyehoek/Options.hs @@ -0,0 +1,44 @@ +{-# LANGUAGE NoFieldSelectors #-} +module Gyehoek.Options + ( Options(..) + , parser + ) + where + +import System.IO (Handle) +import Data.HashSet (HashSet) +import Options.Applicative +import qualified Data.HashSet as HS + + +data Options = MkOptions + { -- dumpANF :: Maybe FilePath + -- , dumpQBE :: Maybe FilePath + output :: Maybe FilePath + , sourceFiles :: HashSet FilePath + } + deriving (Show) + +-- parseDumpQBE = +-- optional $ strOption +-- ( long "dump-qbe" +-- <> metavar "FILE" +-- ) + +-- parseDumpANF = +-- optional $ strOption +-- ( long "dump-anf" +-- <> metavar "FILE" +-- ) + +parseOutput = + optional $ strOption + ( long "output" + <> short 'o' + <> metavar "FILE" + ) + +parser :: Parser Options +parser = MkOptions + <$> parseOutput + <*> (HS.fromList <$> some (argument str (metavar "FILES"))) diff --git a/app/Main.hs b/app/Main.hs index 590b6c1..4042ea0 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -1,17 +1,25 @@ -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE ViewPatterns #-} -{-# LANGUAGE BlockArguments #-} -{-# LANGUAGE OverloadedLists #-} module Main (main) where import qualified Gyehoek.ANF.Syntax as ANF import Gyehoek.QBE (render) +import Gyehoek.Options import qualified Data.Text.IO as TIO import Prelude hiding ((.),id) import Control.Category +import Options.Applicative main :: IO () -main = TIO.putStrLn . render $ ANF.expr +main = driver =<< execParser opts + where + opts = info (helper <*> parser) + ( fullDesc + ) + + + +driver :: Options -> IO () +driver opts = do + print opts diff --git a/gyehoek.cabal b/gyehoek.cabal index 0393842..2939555 100644 --- a/gyehoek.cabal +++ b/gyehoek.cabal @@ -22,7 +22,7 @@ common ghcstuffs -Wall -fdefer-type-errors -fno-show-valid-hole-fits -fdefer-out-of-scope-variables -fplugin=Effectful.Plugin - other-extensions: + default-extensions: BlockArguments DeriveGeneric OverloadedStrings @@ -37,14 +37,15 @@ executable gyehoek other-modules: Gyehoek.ANF.Syntax Gyehoek.GenSym + Gyehoek.Options Gyehoek.QBE Gyehoek.QBE.Parse Gyehoek.Scheme.Syntax Gyehoek.Sexp - -- other-extensions: build-depends: , base ^>=4.21.2.0 + , containers , effectful , effectful-core , effectful-plugin @@ -60,6 +61,7 @@ executable gyehoek , sexp-grammar , template-haskell , text + , unordered-containers , vector hs-source-dirs: app diff --git a/play/a.out b/play/a.out deleted file mode 100755 index e0e7218f43a4930aa3d55b350806bf4dbfe54877..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18824 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\n", SCM_UNPACK (x) >> 2); } else { - printf ("#\n", SCM_UNPACK(x)); + printf ("#\n", SCM_UNPACK(x)); } return SCM_PACK(NULL); }