From 1f5c0696463a48d9fcf7410aeaecaf83c2eef1bc Mon Sep 17 00:00:00 2001 From: Einhard Leichtfuß Date: Wed, 21 May 2025 11:32:24 +0200 Subject: Add Module parser skeleton --- src/Language/SimpleShell/Parser/Module.hs | 44 +++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/Language/SimpleShell/Parser/Module.hs (limited to 'src/Language/SimpleShell/Parser/Module.hs') diff --git a/src/Language/SimpleShell/Parser/Module.hs b/src/Language/SimpleShell/Parser/Module.hs new file mode 100644 index 0000000..01a8975 --- /dev/null +++ b/src/Language/SimpleShell/Parser/Module.hs @@ -0,0 +1,44 @@ +module Language.SimpleShell.Parser.Module + ( moduleP0 + , modulePF + ) +where + + +import Language.SimpleShell.AST.Module (Module) +import Language.SimpleShell.AST.Name (FunName, ProcedureName) +import Language.SimpleShell.AST.SimpleType (FunSig, ProcedureSig) +import Language.SimpleShell.Parser.Root (RootParser) + +import Control.Monad.Reader (ReaderT, runReaderT) +import Control.Monad.State (StateT, execStateT) +import Data.Map (Map) +import qualified Data.Map as Map (empty) + + +type ModuleParser0 = StateT ModuleContext RootParser + +type ModuleParser = ReaderT ModuleContext RootParser + +moduleP0 :: RootParser ModuleContext +moduleP0 = execStateT moduleMP0 initModuleContext + +modulePF :: ModuleContext -> RootParser Module +modulePF = runReaderT moduleMP + + +data ModuleContext + = ModuleContext + (Map FunName FunSig) + (Map ProcedureName ProcedureSig) + +initModuleContext :: ModuleContext +initModuleContext = ModuleContext Map.empty Map.empty + + +moduleMP0 :: ModuleParser0 () +moduleMP0 = undefined + + +moduleMP :: ModuleParser Module +moduleMP = undefined -- cgit v1.2.3