parsec3 1.0.0.3 → 1.0.0.4
raw patch · 7 files changed
+95/−23 lines, 7 filesdep +textPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
Dependencies added: text
API changes (from Hackage documentation)
+ Text.Parsec.Prim: lookAhead :: Stream s m t => ParsecT s u m a -> ParsecT s u m a
+ Text.Parsec.Text: instance Monad m => Stream Text m Char
+ Text.Parsec.Text: type GenParser st = Parsec Text st
+ Text.Parsec.Text: type Parser = Parsec Text ()
+ Text.Parsec.Text.Lazy: instance Monad m => Stream Text m Char
+ Text.Parsec.Text.Lazy: type GenParser st = Parsec Text st
+ Text.Parsec.Text.Lazy: type Parser = Parsec Text ()
Files
- Text/Parsec/Combinator.hs +0/−9
- Text/Parsec/Error.hs +6/−2
- Text/Parsec/Prim.hs +18/−3
- Text/Parsec/Text.hs +31/−0
- Text/Parsec/Text/Lazy.hs +31/−0
- Text/Parsec/Token.hs +3/−3
- parsec3.cabal +6/−6
Text/Parsec/Combinator.hs view
@@ -275,12 +275,3 @@ scan = do{ end; return [] } <|> do{ x <- p; xs <- scan; return (x:xs) }---- | @lookAhead p@ parses @p@ without consuming any input.--lookAhead :: (Stream s m t) => ParsecT s u m a -> ParsecT s u m a-lookAhead p = do{ state <- getParserState- ; x <- p- ; setParserState state- ; return x- }
Text/Parsec/Error.hs view
@@ -134,8 +134,12 @@ = ParseError pos (msg : filter (msg /=) msgs) mergeError :: ParseError -> ParseError -> ParseError-mergeError (ParseError pos msgs1) (ParseError _ msgs2)- = ParseError pos (msgs1 ++ msgs2)+mergeError (ParseError pos1 msgs1) (ParseError pos2 msgs2)+ = case pos1 `compare` pos2 of+ -- select the longest match+ EQ -> ParseError pos1 (msgs1 ++ msgs2)+ GT -> ParseError pos1 msgs1+ LT -> ParseError pos2 msgs2 instance Show ParseError where show err
Text/Parsec/Prim.hs view
@@ -37,6 +37,7 @@ , (<|>) , label , labels+ , lookAhead , Stream(..) , tokens , try@@ -432,9 +433,23 @@ try :: ParsecT s u m a -> ParsecT s u m a try p =- ParsecT $ \s@(State _ pos _) cok _ eok eerr ->- let pcerr parseError = eerr $ setErrorPos pos parseError - in unParser p s cok pcerr eok eerr+ ParsecT $ \s cok _ eok eerr ->+ unParser p s cok eerr eok eerr++-- | @lookAhead p@ parses @p@ without consuming any input.+--+-- If @p@ fails and consumes some input, so does @lookAhead@. Combine with 'try'+-- if this is undesirable.++lookAhead :: (Stream s m t) => ParsecT s u m a -> ParsecT s u m a+lookAhead p = do{ state <- getParserState+ ; x <- p'+ ; setParserState state+ ; return x+ }+ where+ p' = ParsecT $ \s cok cerr eok eerr ->+ unParser p s eok cerr eok eerr -- | The parser @tokenPrim showTok posFromTok testTok@ accepts a token @t@ -- with result @x@ when the function @testTok t@ returns @'Just' x@. The
+ Text/Parsec/Text.hs view
@@ -0,0 +1,31 @@+-----------------------------------------------------------------------------+-- |+-- Module : Text.Parsec.String+-- Copyright : (c) Antoine Latter 2011+-- License : BSD-style (see the file libraries/parsec/LICENSE)+-- +-- Maintainer : aslatter@gmail.com+-- Stability : provisional+-- Portability : portable+-- +-- Make Text an instance of 'Stream' with 'Char' token type.+--+-----------------------------------------------------------------------------++{-# LANGUAGE FlexibleInstances #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}++module Text.Parsec.Text+ ( Parser, GenParser+ ) where++import qualified Data.Text as Text+import Text.Parsec.Error+import Text.Parsec.Prim++instance (Monad m) => Stream Text.Text m Char where+ uncons = return . Text.uncons+ {-# INLINE uncons #-}++type Parser = Parsec Text.Text ()+type GenParser st = Parsec Text.Text st
+ Text/Parsec/Text/Lazy.hs view
@@ -0,0 +1,31 @@+-----------------------------------------------------------------------------+-- |+-- Module : Text.Parsec.String+-- Copyright : (c) Antoine Latter 2011+-- License : BSD-style (see the file libraries/parsec/LICENSE)+-- +-- Maintainer : aslatter@gmail.com+-- Stability : provisional+-- Portability : portable+-- +-- Make Text an instance of 'Stream' with 'Char' token type.+--+-----------------------------------------------------------------------------++{-# LANGUAGE FlexibleInstances #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}++module Text.Parsec.Text.Lazy+ ( Parser, GenParser+ ) where++import qualified Data.Text.Lazy as Text+import Text.Parsec.Error+import Text.Parsec.Prim++instance (Monad m) => Stream Text.Text m Char where+ uncons = return . Text.uncons+ {-# INLINE uncons #-}++type Parser = Parsec Text.Text ()+type GenParser st = Parsec Text.Text st
Text/Parsec/Token.hs view
@@ -658,10 +658,10 @@ GT -> False theReservedNames- | caseSensitive languageDef = sortedNames- | otherwise = map (map toLower) sortedNames+ | caseSensitive languageDef = sort reserved+ | otherwise = sort . map (map toLower) $ reserved where- sortedNames = sort (reservedNames languageDef)+ reserved = reservedNames languageDef
parsec3.cabal view
@@ -1,5 +1,5 @@ name: parsec3-version: 1.0.0.3+version: 1.0.0.4 cabal-version: >= 1.2.3 license: BSD3 license-file: LICENSE@@ -23,19 +23,19 @@ versions, therefore I do not recommend to unconditionally use parsec3 as dependency in cabal files of packages for hackage. But you may want to develop your code using this subset of parsec3 modules and- finally change the dependency from parsec3 to parsec-3.1.1 in order to+ finally change the dependency from parsec3 to parsec in order to avoid module ambiguities for users just installing your package. Your own module ambiguities are best avoided by hiding packages. .- This version has only a changed description compared to parsec3-1.0.0.2- that does not re-exports parts of the Applicative module to stay compatible with- parsec-3.1.1+ This version reflects the changes of parsec-3.1.2 library exposed-modules: Text.Parsec, Text.Parsec.String, Text.Parsec.ByteString, Text.Parsec.ByteString.Lazy,+ Text.Parsec.Text,+ Text.Parsec.Text.Lazy, Text.Parsec.Pos, Text.Parsec.Error, Text.Parsec.Prim,@@ -45,6 +45,6 @@ Text.Parsec.Expr, Text.Parsec.Language, Text.Parsec.Perm- build-depends: base >= 4 && < 5, mtl, bytestring+ build-depends: base >= 4 && < 5, mtl, bytestring, text >= 0.2 && < 0.12 extensions: DeriveDataTypeable, PolymorphicComponents, FlexibleInstances, MultiParamTypeClasses, FlexibleContexts