module Michelson.Parser.Types
( Parser
, LetEnv (..)
, noLetEnv
) where
import Data.Default (Default(..))
import qualified Data.Map as Map
import Text.Megaparsec (Parsec)
import Michelson.Parser.Error
import Michelson.Let (LetType, LetValue)
import Michelson.Macro (LetMacro)
type Parser = ReaderT LetEnv (Parsec CustomParserException Text)
instance Default a => Default (Parser a) where
def = pure def
data LetEnv = LetEnv
{ letMacros :: Map Text LetMacro
, letValues :: Map Text LetValue
, letTypes :: Map Text LetType
} deriving (Show, Eq)
noLetEnv :: LetEnv
noLetEnv = LetEnv Map.empty Map.empty Map.empty