aboutsummaryrefslogtreecommitdiff
path: root/src/Language/SimpleShell/Parser/Name.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Language/SimpleShell/Parser/Name.hs')
-rw-r--r--src/Language/SimpleShell/Parser/Name.hs10
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)