{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeFamilies #-}
module Data.SExpresso.Parse.Char
(
plainSExprParser
)
where
import Text.Megaparsec
import Text.Megaparsec.Char
import Data.SExpresso.Parse.Generic
plainSExprParser :: (MonadParsec e s m, Token s ~ Char) =>
m a -> SExprParser m () a
plainSExprParser :: forall e s (m :: * -> *) a.
(MonadParsec e s m, Token s ~ Char) =>
m a -> SExprParser m () a
plainSExprParser m a
p = forall (m :: * -> *) b a c.
m c
-> (c -> m b)
-> m a
-> m ()
-> (a -> a -> SpacingRule)
-> SExprParser m b a
SExprParser
(forall e s (m :: * -> *).
(MonadParsec e s m, Token s ~ Char) =>
Token s -> m (Token s)
char Char
'(' forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *) a. Monad m => a -> m a
return ())
(\()
_ -> forall e s (m :: * -> *).
(MonadParsec e s m, Token s ~ Char) =>
Token s -> m (Token s)
char Char
')' forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *) a. Monad m => a -> m a
return ())
m a
p
forall e s (m :: * -> *).
(MonadParsec e s m, Token s ~ Char) =>
m ()
space1
forall a. a -> a -> SpacingRule
spaceIsMandatory