{-# LANGUAGE FlexibleContexts #-} module Language.Ltml.Parser.Keyword ( keywordP , lKeywordP , mlKeywordP ) where import Control.Applicative (optional) import Control.Monad (void) import Language.Lsd.AST.Common (Keyword (Keyword)) import Language.Ltml.AST.Label (Label) import Language.Ltml.Parser (MonadParser) import Language.Ltml.Parser.Label (labelingP) import Text.Megaparsec.Char (string) keywordP :: (MonadParser m) => Keyword -> m () keywordP :: forall (m :: * -> *). MonadParser m => Keyword -> m () keywordP (Keyword Text kw) = m (Tokens Text) -> m () forall (f :: * -> *) a. Functor f => f a -> f () void (m (Tokens Text) -> m ()) -> m (Tokens Text) -> m () forall a b. (a -> b) -> a -> b $ Tokens Text -> m (Tokens Text) forall e s (m :: * -> *). MonadParsec e s m => Tokens s -> m (Tokens s) string Text Tokens Text kw lKeywordP :: (MonadParser m) => Keyword -> m Label lKeywordP :: forall (m :: * -> *). MonadParser m => Keyword -> m Label lKeywordP (Keyword Text kw) = Tokens Text -> m (Tokens Text) forall e s (m :: * -> *). MonadParsec e s m => Tokens s -> m (Tokens s) string Text Tokens Text kw m (Tokens Text) -> m Label -> m Label forall a b. m a -> m b -> m b forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b *> m Label forall (m :: * -> *). MonadParser m => m Label labelingP mlKeywordP :: (MonadParser m) => Keyword -> m (Maybe Label) mlKeywordP :: forall (m :: * -> *). MonadParser m => Keyword -> m (Maybe Label) mlKeywordP (Keyword Text kw) = Tokens Text -> m (Tokens Text) forall e s (m :: * -> *). MonadParsec e s m => Tokens s -> m (Tokens s) string Text Tokens Text kw m (Tokens Text) -> m (Maybe Label) -> m (Maybe Label) forall a b. m a -> m b -> m b forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b *> m Label -> m (Maybe Label) forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a) optional m Label forall (m :: * -> *). MonadParser m => m Label labelingP