darcs-beta-2.4.98.5: a distributed, interactive, smart revision control systemSource codeContentsIndex
Darcs.Patch.ReadMonads
Description
This module defines our parsing monad. In the past there have been lazy and strict parsers in this module. Currently we have only the strict variant and it is used for parsing patch files.
Synopsis
class Monad m => ParserM m where
work :: (ByteString -> Maybe (a, ByteString)) -> m a
maybeWork :: (ByteString -> Maybe (a, ByteString)) -> m (Maybe a)
peekInput :: m ByteString
alterInput :: ParserM m => (ByteString -> ByteString) -> m ()
parseStrictly :: SM a -> ByteString -> Maybe (a, ByteString)
lexChar :: ParserM m => Char -> m ()
lexString :: ParserM m => String -> m ()
lexStrings :: ParserM m => [String] -> m String
lexEof :: ParserM m => m ()
myLex :: ByteString -> Maybe (ByteString, ByteString)
Documentation
class Monad m => ParserM m whereSource
Methods
work :: (ByteString -> Maybe (a, ByteString)) -> m aSource
Applies a parsing function inside the ParserM monad.
maybeWork :: (ByteString -> Maybe (a, ByteString)) -> m (Maybe a)Source
Applies a parsing function, that can return Nothing, inside the ParserM monad.
peekInput :: m ByteStringSource
Allows for the inspection of the input that is yet to be parsed.
show/hide Instances
alterInput :: ParserM m => (ByteString -> ByteString) -> m ()Source
Applies a function to the input stream and discards the result of the function.
parseStrictly :: SM a -> ByteString -> Maybe (a, ByteString)Source
parseStrictly applies the parser functions to a string and checks that each parser produced a result as it goes. The strictness is in the ParserM instance for SM.
lexChar :: ParserM m => Char -> m ()Source
lexChar checks if the next space delimited token from the input stream matches a specific Char. Uses Maybe inside ParserM to handle failed matches, so that it always returns () on success.
lexString :: ParserM m => String -> m ()Source
lexString fetches the next whitespace delimited token from from the input and checks if it matches the String input. Uses Maybe inside ParserM to handle failed matches, so that it always returns () on success.
lexStrings :: ParserM m => [String] -> m StringSource
Checks if any of the input Strings match the next space delimited token in the input stream. Uses Maybe inside ParserM to handle failed matches, on success it returns the matching String.
lexEof :: ParserM m => m ()Source
lexEof looks for optional spaces followed by the end of input. Uses Maybe inside ParserM to handle failed matches, so that it always returns () on success.
myLex :: ByteString -> Maybe (ByteString, ByteString)Source
myLex drops leading spaces and then breaks the string at the next space. Returns Nothing when the string is empty after dropping leading spaces, otherwise it returns the first sequence of non-spaces and the remainder of the input.
Produced by Haddock version 2.6.1