diff options
Diffstat (limited to 'src/Language/SimpleShell/Parser/Name.hs')
-rw-r--r-- | src/Language/SimpleShell/Parser/Name.hs | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/Language/SimpleShell/Parser/Name.hs b/src/Language/SimpleShell/Parser/Name.hs index 14f4d2e..2691a36 100644 --- a/src/Language/SimpleShell/Parser/Name.hs +++ b/src/Language/SimpleShell/Parser/Name.hs @@ -1,3 +1,5 @@ +{-# LANGUAGE FlexibleContexts #-} + module Language.SimpleShell.Parser.Name ( nameP , keyword @@ -5,12 +7,12 @@ module Language.SimpleShell.Parser.Name where -import Language.SimpleShell.Parser (Parser, lexeme) +import Language.SimpleShell.Parser (lexeme) import Control.Monad (void) import Data.Text (Text, cons) import Data.Char (isAlpha, isAlphaNum) -import Text.Megaparsec (takeWhileP, satisfy, notFollowedBy, try) +import Text.Megaparsec (MonadParsec, takeWhileP, satisfy, notFollowedBy, try) import Text.Megaparsec.Char (string) @@ -21,11 +23,11 @@ isNameChar :: Char -> Bool isNameChar c = isAlphaNum c || c == '_' -nameP :: Parser Text +nameP :: (MonadParsec e Text m) => m Text nameP = lexeme $ cons <$> satisfy isNameStartChar <*> takeWhileP Nothing isNameChar -keyword :: Text -> Parser () +keyword :: (MonadParsec e Text m) => Text -> m () keyword kw = void $ lexeme $ try $ string kw <* notFollowedBy (satisfy isNameChar) |