From 7f5656c1b1493a258d373a3fcfac1a455d264406 Mon Sep 17 00:00:00 2001 From: Einhard Leichtfuß Date: Wed, 21 May 2025 02:01:55 +0200 Subject: Split up parser types To be continued. --- src/Language/SimpleShell/Parser/Name.hs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/Language/SimpleShell/Parser/Name.hs') 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) -- cgit v1.2.3