blob: 01a8975df8e33bc8e27c789e01cd4bdd0003f078 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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
|