packages feed

grammatical-parsers 0.7.0.1 → 0.7.1

raw patch · 16 files changed

+55/−29 lines, 16 filesdep ~transformersPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: transformers

API changes (from Hackage documentation)

+ Text.Grampa.ContextFree.Continued: instance (GHC.Show.Show s, GHC.Show.Show a) => GHC.Show.Show (Text.Grampa.ContextFree.Continued.Result g s a)
+ Text.Grampa.PEG.Backtrack: instance (GHC.Show.Show s, GHC.Show.Show a) => GHC.Show.Show (Text.Grampa.PEG.Backtrack.Result g s a)
+ Text.Grampa.PEG.Packrat: instance (GHC.Show.Show s, GHC.Show.Show a) => GHC.Show.Show (Text.Grampa.PEG.Packrat.Result g s a)

Files

CHANGELOG.md view
@@ -1,3 +1,9 @@+Version 0.7.1+---------------+* Added a Show instance for every Show1 to satisfy the new class declaration+* Bumped the upper bound of the `template-haskell` dependency+* Eliminated a bunch of compiler warnings+ Version 0.7.0.1 --------------- * Bumped the upper bound of the `rank2classes` dependency
examples/Boolean.hs view
@@ -1,10 +1,11 @@ {-# LANGUAGE FlexibleContexts, FlexibleInstances, KindSignatures, RecordWildCards, ScopedTypeVariables,-             TypeFamilies, TemplateHaskell, UndecidableInstances #-}+             TemplateHaskell, TypeFamilies, TypeOperators, UndecidableInstances #-} module Boolean where  import Control.Applicative import qualified Data.Bool import Data.Char (isSpace)+import Data.Kind (Type) import Data.Monoid ((<>)) import Text.Parser.Token (TokenParsing, symbol) @@ -51,7 +52,7 @@  $(Rank2.TH.deriveAll ''Boolean) -boolean :: forall e p (g :: (* -> *) -> *).+boolean :: forall e p (g :: (Type -> Type) -> Type).            (BooleanDomain e, LexicalParsing (p g String), ParserInput (p g String) ~ String) =>            p g String e -> Boolean e (p g String) -> Boolean e (p g String) boolean p Boolean{..} = Boolean{
grammatical-parsers.cabal view
@@ -1,5 +1,5 @@ name:                grammatical-parsers-version:             0.7.0.1+version:             0.7.1 synopsis:            parsers that combine into grammars description:   /Gram/matical-/pa/rsers, or Grampa for short, is a library of parser types whose values are meant to be assigned@@ -50,7 +50,7 @@   ghc-options:         -Wall   build-depends:       base >=4.9 && <5,                        containers >= 0.4 && < 0.7,-                       transformers >= 0.5 && < 0.6,+                       transformers >= 0.5 && < 0.7,                        monoid-subclasses >=1.0 && <1.3,                        parsers < 0.13,                        input-parsers < 0.4,
src/Text/Grampa/ContextFree/Continued.hs view
@@ -8,7 +8,7 @@ import Control.Monad (MonadFail(fail)) #endif -import Data.Functor.Classes (Show1(..))+import Data.Functor.Classes (Show1(..), showsPrec1) import Data.Functor.Compose (Compose(..)) import Data.Kind (Type) import Data.Semigroup (Semigroup(..))@@ -33,7 +33,7 @@ import Text.Parser.Input.Position (fromEnd) import Text.Grampa.Class (CommittedParsing(..), DeterministicParsing(..),                           InputParsing(..), InputCharParsing(..), MultiParsing(..),-                          ParseResults, ParseFailure(..), FailureDescription(..), Pos)+                          ParseResults, ParseFailure(..), Pos) import Text.Grampa.Internal (emptyFailure, erroneous, expected, expectedInput, replaceExpected, TraceableParsing(..))  data Result (g :: (Type -> Type) -> Type) s v =@@ -45,6 +45,9 @@ -- class but with potentially exponential performance for longer ambiguous prefixes. newtype Parser (g :: (Type -> Type) -> Type) s r =    Parser{applyParser :: forall x. s -> (r -> s -> (ParseFailure Pos s -> x) -> x) -> (ParseFailure Pos s -> x) -> x}++instance (Show s, Show a) => Show (Result g s a) where+   showsPrec = showsPrec1  instance Show s => Show1 (Result g s) where    liftShowsPrec showsPrecSub _showList prec Parsed{parsedPrefix= r} rest = "Parsed " ++ showsPrecSub prec r rest
src/Text/Grampa/ContextFree/Continued/Measured.hs view
@@ -8,7 +8,7 @@ import Control.Monad (MonadFail(fail)) #endif -import Data.Functor.Classes (Show1(..))+import Data.Functor.Classes (Show1(..), showsPrec1) import Data.Functor.Compose (Compose(..)) import Data.Kind (Type) import Data.Semigroup (Semigroup(..))@@ -45,6 +45,9 @@ -- class but with potentially exponential performance for longer ambiguous prefixes. newtype Parser (g :: (Type -> Type) -> Type) s r =    Parser{applyParser :: forall x. s -> (r -> Int -> s -> (ParseFailure Pos s -> x) -> x) -> (ParseFailure Pos s -> x) -> x}++instance (Show s, Show a) => Show (Result g s a) where+   showsPrec = showsPrec1  instance Show s => Show1 (Result g s) where    liftShowsPrec showsPrecSub _showList prec Parsed{parsedPrefix= r} rest = "Parsed " ++ showsPrecSub prec r rest
src/Text/Grampa/ContextFree/Memoizing.hs view
@@ -383,8 +383,8 @@ longest :: Parser g s a -> Backtrack.Parser g [(s, g (ResultList g s))] a longest p = Backtrack.Parser q where    q rest = case applyParser p rest-            of ResultList EmptyTree (ParseFailure pos (FailureDescription expected inputs) errors)-                  -> Backtrack.NoParse (ParseFailure pos (FailureDescription expected $ map wrap inputs) errors)+            of ResultList EmptyTree (ParseFailure pos (FailureDescription static inputs) errors)+                  -> Backtrack.NoParse (ParseFailure pos (FailureDescription static $ map wrap inputs) errors)                ResultList rs _ -> parsed (maximumBy (compare `on` resultLength) rs)    resultLength (ResultInfo l _ _) = l    parsed (ResultInfo l s r) = Backtrack.Parsed l r s@@ -395,8 +395,8 @@ peg p = Parser q where    q rest = case Backtrack.applyParser p rest             of Backtrack.Parsed l result suffix -> ResultList (Leaf $ ResultInfo l suffix result) mempty-               Backtrack.NoParse (ParseFailure pos (FailureDescription expected inputs) errors)-                  -> ResultList mempty (ParseFailure pos (FailureDescription expected (fst . head <$> inputs)) errors)+               Backtrack.NoParse (ParseFailure pos (FailureDescription static inputs) errors)+                  -> ResultList mempty (ParseFailure pos (FailureDescription static (fst . head <$> inputs)) errors)  -- | Turns a backtracking PEG parser into a context-free parser terminalPEG :: (Monoid s, Ord s) => Backtrack.Parser g s a -> Parser g s a
src/Text/Grampa/ContextFree/SortedMemoizing.hs view
@@ -341,8 +341,8 @@ longest :: Parser g s a -> Backtrack.Parser g [(s, g (ResultList g s))] a longest p = Backtrack.Parser q where    q rest = case applyParser p rest-            of ResultList [] (ParseFailure pos (FailureDescription expected inputs) errors)-                  -> Backtrack.NoParse (ParseFailure pos (FailureDescription expected $ map wrap inputs) errors)+            of ResultList [] (ParseFailure pos (FailureDescription static inputs) errors)+                  -> Backtrack.NoParse (ParseFailure pos (FailureDescription static $ map wrap inputs) errors)                ResultList rs _ -> parsed (last rs)    parsed (ResultsOfLength l s (r:|_)) = Backtrack.Parsed l r s    wrap s = [(s, error "longest")]@@ -352,8 +352,8 @@ peg p = Parser q where    q rest = case Backtrack.applyParser p rest             of Backtrack.Parsed l result suffix -> ResultList [ResultsOfLength l suffix (result:|[])] mempty-               Backtrack.NoParse (ParseFailure pos (FailureDescription expected inputs) errors)-                  -> ResultList mempty (ParseFailure pos (FailureDescription expected (fst . head <$> inputs)) errors)+               Backtrack.NoParse (ParseFailure pos (FailureDescription static inputs) errors)+                  -> ResultList mempty (ParseFailure pos (FailureDescription static (fst . head <$> inputs)) errors)  -- | Turns a backtracking PEG parser into a context-free parser terminalPEG :: Monoid s => Ord s => Backtrack.Parser g s a -> Parser g s a
src/Text/Grampa/ContextFree/SortedMemoizing/Transformer.hs view
@@ -391,8 +391,8 @@ longest :: ParserT Identity g s a -> Backtrack.Parser g [(s, g (ResultListT Identity g s))] a longest p = Backtrack.Parser q where    q rest = case applyParser p rest-            of ResultList [] (ParseFailure pos (FailureDescription expected inputs) errors)-                  -> Backtrack.NoParse (ParseFailure pos (FailureDescription expected $ map wrap inputs) errors)+            of ResultList [] (ParseFailure pos (FailureDescription static inputs) errors)+                  -> Backtrack.NoParse (ParseFailure pos (FailureDescription static $ map wrap inputs) errors)                ResultList rs _ -> parsed (last rs)    parsed (ResultsOfLengthT (ROL l s (Identity r:|_))) = Backtrack.Parsed l r s    wrap s = [(s, error "longest")]@@ -402,8 +402,8 @@ peg p = Parser q where    q rest = case Backtrack.applyParser p rest             of Backtrack.Parsed l result suffix -> singleResult l suffix result-               Backtrack.NoParse (ParseFailure pos (FailureDescription expected inputs) errors)-                  -> ResultList mempty (ParseFailure pos (FailureDescription expected (fst . head <$> inputs)) errors)+               Backtrack.NoParse (ParseFailure pos (FailureDescription static inputs) errors)+                  -> ResultList mempty (ParseFailure pos (FailureDescription static (fst . head <$> inputs)) errors)  -- | Turns a backtracking PEG parser into a context-free parser terminalPEG :: (Applicative m, Monoid s, Ord s) => Backtrack.Parser g s a -> ParserT m g s a
src/Text/Grampa/Internal.hs view
@@ -69,7 +69,7 @@ erroneous pos msg = ParseFailure pos (FailureDescription [] []) [msg]  replaceExpected :: Pos -> String -> ParseFailure Pos s -> ParseFailure Pos s-replaceExpected pos msg f@(ParseFailure pos' msgs errs) = ParseFailure pos' msgs' errs+replaceExpected pos msg (ParseFailure pos' msgs errs) = ParseFailure pos' msgs' errs    where msgs' | pos == pos' = FailureDescription [msg] []                | otherwise = msgs 
src/Text/Grampa/Internal/LeftRecursive.hs view
@@ -959,12 +959,12 @@                            combine (Const False) _ = Const False                            combine (Const True) results = Const (hasSuccess results)                            combineFailures _ (Const False) _ = Const False-                           combineFailures (ParseFailure pos (FailureDescription expected inputs) errors) (Const True) rl =+                           combineFailures (ParseFailure pos (FailureDescription expected _inputs) errors) (Const True) rl =                               Const (pos < pos'                                      || pos == pos' && (any (`notElem` expected) expected'                                                         || any (`notElem` expected) expected')                                                         || any (`notElem` errors) errors')-                              where ParseFailure pos' (FailureDescription expected' inputs') errors' = failureOf rl+                              where ParseFailure pos' (FailureDescription expected' _inputs) errors' = failureOf rl                   choiceWhile (Const (Just DynamicDependencies)) t t'                      | getAny (Rank2.foldMap (Any . hasSuccess) marginal) = t'                      | hasSuccess t = t
src/Text/Grampa/PEG/Backtrack.hs view
@@ -8,7 +8,7 @@ import Control.Monad (MonadFail(fail)) #endif -import Data.Functor.Classes (Show1(..))+import Data.Functor.Classes (Show1(..), showsPrec1) import Data.Functor.Compose (Compose(..)) import Data.Kind (Type) import Data.Semigroup (Semigroup(..))@@ -33,7 +33,7 @@ import Text.Parser.Input.Position (fromEnd) import Text.Grampa.Class (CommittedParsing(..), DeterministicParsing(..),                           InputParsing(..), InputCharParsing(..), MultiParsing(..),-                          ParseResults, ParseFailure(..), FailureDescription(..), Pos)+                          ParseResults, ParseFailure(..), Pos) import Text.Grampa.Internal (emptyFailure, erroneous, expected, expectedInput, replaceExpected, TraceableParsing(..))  data Result (g :: (Type -> Type) -> Type) s v =@@ -44,6 +44,9 @@ -- | Parser type for Parsing Expression Grammars that uses a backtracking algorithm, fast for grammars in LL(1) class -- but with potentially exponential performance for longer ambiguous prefixes. newtype Parser g s r = Parser{applyParser :: s -> Result g s r}++instance (Show s, Show a) => Show (Result g s a) where+   showsPrec = showsPrec1  instance Show s => Show1 (Result g s) where    liftShowsPrec showsPrecSub _showList prec Parsed{parsedPrefix= r} rest = "Parsed " ++ showsPrecSub prec r rest
src/Text/Grampa/PEG/Backtrack/Measured.hs view
@@ -8,7 +8,7 @@ import Control.Monad (MonadFail(fail)) #endif -import Data.Functor.Classes (Show1(..))+import Data.Functor.Classes (Show1(..), showsPrec1) import Data.Functor.Compose (Compose(..)) import Data.Kind (Type) import Data.Semigroup (Semigroup(..))@@ -45,6 +45,9 @@ -- | Parser type for Parsing Expression Grammars that uses a backtracking algorithm, fast for grammars in LL(1) class -- but with potentially exponential performance for longer ambiguous prefixes. newtype Parser g s r = Parser{applyParser :: s -> Result g s r}++instance (Show s, Show a) => Show (Result g s a) where+   showsPrec = showsPrec1  instance Show s => Show1 (Result g s) where    liftShowsPrec showsPrecSub _showList prec Parsed{parsedResult= r} rest = "Parsed " ++ showsPrecSub prec r rest
src/Text/Grampa/PEG/Continued.hs view
@@ -8,7 +8,7 @@ import Control.Monad (MonadFail(fail)) #endif -import Data.Functor.Classes (Show1(..))+import Data.Functor.Classes (Show1(..), showsPrec1) import Data.Functor.Compose (Compose(..)) import Data.Kind (Type) import Data.Semigroup (Semigroup((<>)))@@ -44,6 +44,9 @@ -- LL(1) class but with potentially exponential performance for longer ambiguous prefixes. newtype Parser (g :: (Type -> Type) -> Type) s r =    Parser{applyParser :: forall x. s -> (r -> s -> x) -> (ParseFailure Pos s -> x) -> x}++instance (Show s, Show a) => Show (Result g s a) where+   showsPrec = showsPrec1  instance Show s => Show1 (Result g s) where    liftShowsPrec showsPrecSub _showList prec Parsed{parsedPrefix= r} rest = "Parsed " ++ showsPrecSub prec r rest
src/Text/Grampa/PEG/Continued/Measured.hs view
@@ -32,7 +32,7 @@ import Text.Parser.Input.Position (fromEnd) import Text.Grampa.Class (CommittedParsing(..), DeterministicParsing(..),                           InputParsing(..), InputCharParsing(..), ConsumedInputParsing(..),-                          MultiParsing(..), ParseResults, ParseFailure(..), FailureDescription(..), Pos)+                          MultiParsing(..), ParseResults, ParseFailure(..), Pos) import Text.Grampa.Internal (TraceableParsing(..), emptyFailure, erroneous, expected, expectedInput, replaceExpected) import Text.Grampa.PEG.Continued (Result(..)) 
src/Text/Grampa/PEG/Packrat.hs view
@@ -8,7 +8,7 @@ import Control.Monad (MonadFail(fail)) #endif -import Data.Functor.Classes (Show1(..))+import Data.Functor.Classes (Show1(..), showsPrec1) import Data.Functor.Compose (Compose(..)) import Data.Monoid (Monoid(mappend, mempty)) import Data.Monoid.Factorial(FactorialMonoid)@@ -46,6 +46,9 @@ -- but with worse constants and more memory consumption than the backtracking 'Text.Grampa.PEG.Backtrack.Parser'. The -- 'parse' function returns an input prefix parse paired with the remaining input suffix. newtype Parser g s r = Parser{applyParser :: [(s, g (Result g s))] -> Result g s r}++instance (Show s, Show a) => Show (Result g s a) where+   showsPrec = showsPrec1  instance Show s => Show1 (Result g s) where    liftShowsPrec showsPrecSub _showList prec Parsed{parsedPrefix= r} rest = "Parsed " ++ showsPrecSub prec r rest
test/Test.hs view
@@ -1,5 +1,6 @@ {-# Language FlexibleContexts, FlexibleInstances, RankNTypes, RecordWildCards, -             ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TypeFamilies, UndecidableInstances #-}+             ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TypeFamilies, TypeOperators,+             UndecidableInstances #-} module Main where  import Control.Applicative (Applicative, Alternative, Const(..), pure, empty, liftA2, many, optional, (<*>), (*>), (<|>))