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.Common.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