module Text.Trifecta.Language.Combinators
( identifier
, reserved
, reservedByteString
, op
, reservedOp
, reservedOpByteString
) where
import Data.ByteString
import Text.Trifecta.Language.Class
import Text.Trifecta.Language.Prim
import Text.Trifecta.Parser.Identifier
identifier :: MonadLanguage m => m ByteString
identifier = asksLanguage languageIdentifierStyle >>= ident
reserved :: MonadLanguage m => String -> m ()
reserved i = asksLanguage languageIdentifierStyle >>= \style -> reserve style i
reservedByteString :: MonadLanguage m => ByteString -> m ()
reservedByteString i = asksLanguage languageIdentifierStyle >>= \style -> reserveByteString style i
op :: MonadLanguage m => m ByteString
op = asksLanguage languageOperatorStyle >>= ident
reservedOp :: MonadLanguage m => String -> m ()
reservedOp i = asksLanguage languageOperatorStyle >>= \style -> reserve style i
reservedOpByteString :: MonadLanguage m => ByteString -> m ()
reservedOpByteString i = asksLanguage languageOperatorStyle >>= \style -> reserveByteString style i