diff options
author | Einhard Leichtfuß <alguien@respiranto.de> | 2025-05-21 02:01:55 +0200 |
---|---|---|
committer | Einhard Leichtfuß <alguien@respiranto.de> | 2025-05-21 02:01:55 +0200 |
commit | 7f5656c1b1493a258d373a3fcfac1a455d264406 (patch) | |
tree | fe1a9bdf25d3054c40f334528a3fc5a46d455456 /src/Language/SimpleShell/Parser/Name.hs | |
parent | 7c3d54183c2ae7edca98b1043eb715057f4e0e70 (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.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) |