Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
SimpleParser.Lexer
Description
Utilities for handling lexing/tokenization as a separate parsing pass
Synopsis
- data Spanned p a = Spanned {
- spannedSpan :: !(Span p)
- spannedValue :: !a
- data LexedStream p a = LexedStream {}
- data LexedSpan p
- = LexedSpanElem !(Span p)
- | LexedSpanEnd !p
- spannedParser :: (PosStream s, Monad m) => ParserT l s e m a -> ParserT l s e m (Spanned (Pos s) a)
- lexedParser :: (PosStream s, Monad m) => ParserT l s e m a -> ParserT l s e m (LexedStream (Pos s) a)
- runParserLexed :: (Typeable l1, Typeable e1, Typeable s, Typeable (Token s), Typeable (Chunk s), Show l1, Show e1, Show s, Show (Token s), Show (Chunk s), Typeable l2, Typeable e2, Typeable (Pos s), Typeable a, Show l2, Show e2, Show (Pos s), Show a, PosStream s, MonadThrow m) => Parser l1 s e1 a -> (LexedStream (Pos s) a -> LexedStream (Pos s) a) -> Parser l2 (LexedStream (Pos s) a) e2 b -> s -> m b
- lexedParseInteractive :: (s ~ LinePosStream Text, TextBuildable a, ExplainLabel l1, ExplainError e1, ExplainLabel l2, ExplainError e2) => Parser l1 s e1 a -> (LexedStream (Pos s) a -> LexedStream (Pos s) a) -> Parser l2 (LexedStream (Pos s) a) e2 b -> String -> IO (Maybe b)
Documentation
A value annotated with a Span
Constructors
Spanned | |
Fields
|
Instances
Foldable (Spanned p) Source # | |
Defined in SimpleParser.Lexer Methods fold :: Monoid m => Spanned p m -> m # foldMap :: Monoid m => (a -> m) -> Spanned p a -> m # foldMap' :: Monoid m => (a -> m) -> Spanned p a -> m # foldr :: (a -> b -> b) -> b -> Spanned p a -> b # foldr' :: (a -> b -> b) -> b -> Spanned p a -> b # foldl :: (b -> a -> b) -> b -> Spanned p a -> b # foldl' :: (b -> a -> b) -> b -> Spanned p a -> b # foldr1 :: (a -> a -> a) -> Spanned p a -> a # foldl1 :: (a -> a -> a) -> Spanned p a -> a # toList :: Spanned p a -> [a] # length :: Spanned p a -> Int # elem :: Eq a => a -> Spanned p a -> Bool # maximum :: Ord a => Spanned p a -> a # minimum :: Ord a => Spanned p a -> a # | |
Traversable (Spanned p) Source # | |
Defined in SimpleParser.Lexer | |
Functor (Spanned p) Source # | |
(Show p, Show a) => Show (Spanned p a) Source # | |
(Eq p, Eq a) => Eq (Spanned p a) Source # | |
data LexedStream p a Source #
A materialized sequence of Spanned
values
Constructors
LexedStream | |
Instances
Position in a LexedStream
Constructors
LexedSpanElem !(Span p) | |
LexedSpanEnd !p |
spannedParser :: (PosStream s, Monad m) => ParserT l s e m a -> ParserT l s e m (Spanned (Pos s) a) Source #
Annotates parse result with a span
lexedParser :: (PosStream s, Monad m) => ParserT l s e m a -> ParserT l s e m (LexedStream (Pos s) a) Source #
Given a parser for a single token, repeatedly apply it and annotate results with spans
runParserLexed :: (Typeable l1, Typeable e1, Typeable s, Typeable (Token s), Typeable (Chunk s), Show l1, Show e1, Show s, Show (Token s), Show (Chunk s), Typeable l2, Typeable e2, Typeable (Pos s), Typeable a, Show l2, Show e2, Show (Pos s), Show a, PosStream s, MonadThrow m) => Parser l1 s e1 a -> (LexedStream (Pos s) a -> LexedStream (Pos s) a) -> Parser l2 (LexedStream (Pos s) a) e2 b -> s -> m b Source #
Similar to runParserEnd
- first lexes the entire stream, applies the given cleanup function,
then runs the second parser over the results
lexedParseInteractive :: (s ~ LinePosStream Text, TextBuildable a, ExplainLabel l1, ExplainError e1, ExplainLabel l2, ExplainError e2) => Parser l1 s e1 a -> (LexedStream (Pos s) a -> LexedStream (Pos s) a) -> Parser l2 (LexedStream (Pos s) a) e2 b -> String -> IO (Maybe b) Source #
Similar to parseInteractive