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 +6/−0
- examples/Boolean.hs +3/−2
- grammatical-parsers.cabal +2/−2
- src/Text/Grampa/ContextFree/Continued.hs +5/−2
- src/Text/Grampa/ContextFree/Continued/Measured.hs +4/−1
- src/Text/Grampa/ContextFree/Memoizing.hs +4/−4
- src/Text/Grampa/ContextFree/SortedMemoizing.hs +4/−4
- src/Text/Grampa/ContextFree/SortedMemoizing/Transformer.hs +4/−4
- src/Text/Grampa/Internal.hs +1/−1
- src/Text/Grampa/Internal/LeftRecursive.hs +2/−2
- src/Text/Grampa/PEG/Backtrack.hs +5/−2
- src/Text/Grampa/PEG/Backtrack/Measured.hs +4/−1
- src/Text/Grampa/PEG/Continued.hs +4/−1
- src/Text/Grampa/PEG/Continued/Measured.hs +1/−1
- src/Text/Grampa/PEG/Packrat.hs +4/−1
- test/Test.hs +2/−1
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, (<*>), (*>), (<|>))