simple-parser-0.2.0: Simple parser combinators
Safe HaskellNone
LanguageHaskell2010

SimpleParser.Stream

Description

Synopsis

Documentation

class Monoid chunk => Chunked chunk token | chunk -> token where Source #

Chunked captures the basic relationship between tokens and chunks of them. Basically, these things behave like lists, sequences, text, etc.

Methods

consChunk :: token -> chunk -> chunk Source #

unconsChunk :: chunk -> Maybe (token, chunk) Source #

tokenToChunk :: token -> chunk Source #

tokensToChunk :: [token] -> chunk Source #

chunkToTokens :: chunk -> [token] Source #

chunkLength :: chunk -> Int Source #

chunkEmpty :: chunk -> Bool Source #

Instances

Instances details
Chunked Text Char Source # 
Instance details

Defined in SimpleParser.Stream

Chunked [a] a Source # 
Instance details

Defined in SimpleParser.Stream

Methods

consChunk :: a -> [a] -> [a] Source #

unconsChunk :: [a] -> Maybe (a, [a]) Source #

tokenToChunk :: a -> [a] Source #

tokensToChunk :: [a] -> [a] Source #

chunkToTokens :: [a] -> [a] Source #

chunkLength :: [a] -> Int Source #

chunkEmpty :: [a] -> Bool Source #

Chunked (Seq a) a Source # 
Instance details

Defined in SimpleParser.Stream

Methods

consChunk :: a -> Seq a -> Seq a Source #

unconsChunk :: Seq a -> Maybe (a, Seq a) Source #

tokenToChunk :: a -> Seq a Source #

tokensToChunk :: [a] -> Seq a Source #

chunkToTokens :: Seq a -> [a] Source #

chunkLength :: Seq a -> Int Source #

chunkEmpty :: Seq a -> Bool Source #

class Chunked (Chunk s) (Token s) => Stream s where Source #

Stream lets us peel off tokens and chunks for parsing with explicit state passing.

Minimal complete definition

streamTake1, streamTakeN, streamTakeWhile

Associated Types

type Chunk s :: Type Source #

type Token s :: Type Source #

Methods

streamTake1 :: s -> Maybe (Token s, s) Source #

streamTakeN :: Int -> s -> Maybe (Chunk s, s) Source #

streamTakeWhile :: (Token s -> Bool) -> s -> (Chunk s, s) Source #

streamDropN :: Int -> s -> Maybe (Int, s) Source #

streamDropWhile :: (Token s -> Bool) -> s -> (Int, s) Source #

Instances

Instances details
Stream Text Source # 
Instance details

Defined in SimpleParser.Stream

Associated Types

type Chunk Text Source #

type Token Text Source #

Stream [a] Source # 
Instance details

Defined in SimpleParser.Stream

Associated Types

type Chunk [a] Source #

type Token [a] Source #

Methods

streamTake1 :: [a] -> Maybe (Token [a], [a]) Source #

streamTakeN :: Int -> [a] -> Maybe (Chunk [a], [a]) Source #

streamTakeWhile :: (Token [a] -> Bool) -> [a] -> (Chunk [a], [a]) Source #

streamDropN :: Int -> [a] -> Maybe (Int, [a]) Source #

streamDropWhile :: (Token [a] -> Bool) -> [a] -> (Int, [a]) Source #

Stream (Seq a) Source # 
Instance details

Defined in SimpleParser.Stream

Associated Types

type Chunk (Seq a) Source #

type Token (Seq a) Source #

Methods

streamTake1 :: Seq a -> Maybe (Token (Seq a), Seq a) Source #

streamTakeN :: Int -> Seq a -> Maybe (Chunk (Seq a), Seq a) Source #

streamTakeWhile :: (Token (Seq a) -> Bool) -> Seq a -> (Chunk (Seq a), Seq a) Source #

streamDropN :: Int -> Seq a -> Maybe (Int, Seq a) Source #

streamDropWhile :: (Token (Seq a) -> Bool) -> Seq a -> (Int, Seq a) Source #

Stream s => Stream (OffsetStream s) Source # 
Instance details

Defined in SimpleParser.Stream

Associated Types

type Chunk (OffsetStream s) Source #

type Token (OffsetStream s) Source #

defaultStreamDropWhile :: Stream s => (Token s -> Bool) -> s -> (Int, s) Source #

data OffsetStream s Source #

Constructors

OffsetStream 

Fields

Instances

Instances details
Functor OffsetStream Source # 
Instance details

Defined in SimpleParser.Stream

Methods

fmap :: (a -> b) -> OffsetStream a -> OffsetStream b #

(<$) :: a -> OffsetStream b -> OffsetStream a #

Foldable OffsetStream Source # 
Instance details

Defined in SimpleParser.Stream

Methods

fold :: Monoid m => OffsetStream m -> m #

foldMap :: Monoid m => (a -> m) -> OffsetStream a -> m #

foldMap' :: Monoid m => (a -> m) -> OffsetStream a -> m #

foldr :: (a -> b -> b) -> b -> OffsetStream a -> b #

foldr' :: (a -> b -> b) -> b -> OffsetStream a -> b #

foldl :: (b -> a -> b) -> b -> OffsetStream a -> b #

foldl' :: (b -> a -> b) -> b -> OffsetStream a -> b #

foldr1 :: (a -> a -> a) -> OffsetStream a -> a #

foldl1 :: (a -> a -> a) -> OffsetStream a -> a #

toList :: OffsetStream a -> [a] #

null :: OffsetStream a -> Bool #

length :: OffsetStream a -> Int #

elem :: Eq a => a -> OffsetStream a -> Bool #

maximum :: Ord a => OffsetStream a -> a #

minimum :: Ord a => OffsetStream a -> a #

sum :: Num a => OffsetStream a -> a #

product :: Num a => OffsetStream a -> a #

Traversable OffsetStream Source # 
Instance details

Defined in SimpleParser.Stream

Methods

traverse :: Applicative f => (a -> f b) -> OffsetStream a -> f (OffsetStream b) #

sequenceA :: Applicative f => OffsetStream (f a) -> f (OffsetStream a) #

mapM :: Monad m => (a -> m b) -> OffsetStream a -> m (OffsetStream b) #

sequence :: Monad m => OffsetStream (m a) -> m (OffsetStream a) #

Eq s => Eq (OffsetStream s) Source # 
Instance details

Defined in SimpleParser.Stream

Show s => Show (OffsetStream s) Source # 
Instance details

Defined in SimpleParser.Stream

Stream s => Stream (OffsetStream s) Source # 
Instance details

Defined in SimpleParser.Stream

Associated Types

type Chunk (OffsetStream s) Source #

type Token (OffsetStream s) Source #

type Chunk (OffsetStream s) Source # 
Instance details

Defined in SimpleParser.Stream

type Chunk (OffsetStream s) = Chunk s
type Token (OffsetStream s) Source # 
Instance details

Defined in SimpleParser.Stream

type Token (OffsetStream s) = Token s