module FP.Parser.Effects where import FP.Prelude import FP.Pretty import FP.Parser.Common -- # ParserEnv data ParserEnv t = ParserEnv { parserEnvRenderFormat ∷ [Format] , parserEnvErrorStack ∷ ([𝕊],𝕊) , parserEnvLevel ∷ ℕ , parserEnvBumped ∷ 𝔹 } makeLenses ''ParserEnv makePrettyRecord ''ParserEnv parserEnv₀ ∷ ParserEnv t parserEnv₀ = ParserEnv [] ([],"") (𝕟 0) False -- # ParserOut data ParserOut t = ParserOut { parserOutSuccess ∷ 𝔹 , parserOutError ∷ SourceErrorMaybe t } makeLenses ''ParserOut makePrettyRecord ''ParserOut instance Monoid (ParserOut t) where null = ParserOut bot null ParserOut sd₁ er₁ ⧺ ParserOut sd₂ er₂ = ParserOut (sd₁ ⊔ sd₂) (er₁ ⧺ er₂) -- # ParserState data ParserState t = ParserState { parserStateInput ∷ SourceInput t , parserStateErrorContext ∷ SourceContextPrefix t , parserStateCaptureContext ∷ SourceContextPrefix t } makeLenses ''ParserState makePrettyRecord ''ParserState parserState₀ ∷ Stream (SourceToken t) → ParserState t parserState₀ ss = ParserState (sourceInput₀ ss) null null