Safe Haskell | None |
---|---|
Language | Haskell2010 |
Text.Grampa.ContextFree.Memoizing
Description
A context-free parser with packrat-like memoization of parse results.
Synopsis
- data ResultList (g :: (Type -> Type) -> Type) s r = ResultList !(BinTree (ResultInfo g s r)) (ParseFailure Pos s)
- newtype Parser (g :: (Type -> Type) -> Type) s r = Parser {
- applyParser :: [(s, g (ResultList g s))] -> ResultList g s r
- data BinTree a
- reparseTails :: Functor g => g (Parser g s) -> [(s, g (ResultList g s))] -> [(s, g (ResultList g s))]
- longest :: Parser g s a -> Parser g [(s, g (ResultList g s))] a
- peg :: Ord s => Parser g [(s, g (ResultList g s))] a -> Parser g s a
- terminalPEG :: forall s (g :: (Type -> Type) -> Type) a. (Monoid s, Ord s) => Parser g s a -> Parser g s a
Documentation
data ResultList (g :: (Type -> Type) -> Type) s r Source #
Constructors
ResultList !(BinTree (ResultInfo g s r)) (ParseFailure Pos s) |
Instances
newtype Parser (g :: (Type -> Type) -> Type) s r Source #
Parser for a context-free grammar with packrat-like sharing of parse results. It does not support left-recursive grammars.
Constructors
Parser | |
Fields
|
Instances
Instances
Foldable BinTree Source # | |
Defined in Text.Grampa.Internal Methods fold :: Monoid m => BinTree m -> m # foldMap :: Monoid m => (a -> m) -> BinTree a -> m # foldMap' :: Monoid m => (a -> m) -> BinTree a -> m # foldr :: (a -> b -> b) -> b -> BinTree a -> b # foldr' :: (a -> b -> b) -> b -> BinTree a -> b # foldl :: (b -> a -> b) -> b -> BinTree a -> b # foldl' :: (b -> a -> b) -> b -> BinTree a -> b # foldr1 :: (a -> a -> a) -> BinTree a -> a # foldl1 :: (a -> a -> a) -> BinTree a -> a # elem :: Eq a => a -> BinTree a -> Bool # maximum :: Ord a => BinTree a -> a # minimum :: Ord a => BinTree a -> a # | |
Traversable BinTree Source # | |
Applicative BinTree Source # | |
Functor BinTree Source # | |
Filterable BinTree Source # | |
Monoid (BinTree a) Source # | |
Semigroup (BinTree a) Source # | |
Show a => Show (BinTree a) Source # | |
reparseTails :: Functor g => g (Parser g s) -> [(s, g (ResultList g s))] -> [(s, g (ResultList g s))] Source #
longest :: Parser g s a -> Parser g [(s, g (ResultList g s))] a Source #
Turns a context-free parser into a backtracking PEG parser that consumes the longest possible prefix of the list
of input tails, opposite of peg