parsers 0.6 → 0.7
raw patch · 2 files changed
+25/−9 lines, 2 files
Files
- parsers.cabal +1/−1
- src/Text/Parser/Token.hs +24/−8
parsers.cabal view
@@ -1,6 +1,6 @@ name: parsers category: Text, Parsing-version: 0.6+version: 0.7 license: BSD3 cabal-version: >= 1.10 license-file: LICENSE
src/Text/Parser/Token.hs view
@@ -13,9 +13,9 @@ -- -- Parsers that comprehend whitespace and identifier styles ----- > idStyle = haskellIdentifierStyle { styleReserved = ... }--- > identifier = ident haskellIdentifierStyle--- > reserved = reserve haskellIdentifierStyle+-- > idStyle = haskellIdents { styleReserved = ... }+-- > identifier = ident idStyle+-- > reserved = reserve idStyle -- ----------------------------------------------------------------------------- module Text.Parser.Token@@ -47,6 +47,7 @@ , TokenParsing(..) -- ** Token Parsing Transformers , Unspaced(..)+ , Unlined(..) , Unhighlighted(..) -- ** /Non-Token/ Parsers , decimal -- :: TokenParsing m => m Integer@@ -653,12 +654,12 @@ lift = Unhighlighted {-# INLINE lift #-} -instance (TokenParsing m, MonadPlus m) => TokenParsing (Unhighlighted m) where+instance TokenParsing m => TokenParsing (Unhighlighted m) where nesting (Unhighlighted m) = Unhighlighted (nesting m) {-# INLINE nesting #-}- someSpace = lift someSpace+ someSpace = Unhighlighted someSpace {-# INLINE someSpace #-}- semi = lift semi+ semi = Unhighlighted semi {-# INLINE semi #-} highlight _ m = m {-# INLINE highlight #-}@@ -672,12 +673,27 @@ lift = Unspaced {-# INLINE lift #-} -instance (TokenParsing m, MonadPlus m) => TokenParsing (Unspaced m) where+instance TokenParsing m => TokenParsing (Unspaced m) where nesting (Unspaced m) = Unspaced (nesting m) {-# INLINE nesting #-} someSpace = empty {-# INLINE someSpace #-}- semi = lift semi+ semi = Unspaced semi {-# INLINE semi #-} highlight h (Unspaced m) = Unspaced (highlight h m)+ {-# INLINE highlight #-}++-- | This is a parser transformer you can use to disable the automatic trailing+-- newline (but not whitespace-in-general) consumption of a Token parser.+newtype Unlined m a = Unlined { runUnlined :: m a }+ deriving (Functor,Applicative,Alternative,Monad,MonadPlus,Parsing,CharParsing)++instance TokenParsing m => TokenParsing (Unlined m) where+ nesting (Unlined m) = Unlined (nesting m)+ {-# INLINE nesting #-}+ someSpace = skipMany (satisfy $ \c -> c /= '\n' && isSpace c)+ {-# INLINE someSpace #-}+ semi = Unlined semi+ {-# INLINE semi #-}+ highlight h (Unlined m) = Unlined (highlight h m) {-# INLINE highlight #-}