aboutsummaryrefslogtreecommitdiff
path: root/src/Language/SimpleShell/Parser/Name.hs
diff options
context:
space:
mode:
authorEinhard Leichtfuß <alguien@respiranto.de>2025-05-21 02:01:55 +0200
committerEinhard Leichtfuß <alguien@respiranto.de>2025-05-21 02:01:55 +0200
commit7f5656c1b1493a258d373a3fcfac1a455d264406 (patch)
treefe1a9bdf25d3054c40f334528a3fc5a46d455456 /src/Language/SimpleShell/Parser/Name.hs
parent7c3d54183c2ae7edca98b1043eb715057f4e0e70 (diff)
Split up parser types
To be continued.
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)