Closed
Description
We should have the super-useful match
combinator.
To write this combinator for Text.Parsing.Parser.String
, I think we will need some more members of StringLike
.
purescript-parsing/src/Text/Parsing/Parser/String.purs
Lines 21 to 25 in e801a0e
Maybe if we have
length :: s -> Int
length = Data.String.length
take :: Int -> s -> s
take = Data.String.take
Then we can write
match :: forall m s a. ParserT s m a -> ParserT s m (Tuple a s)
match p = do
ParseState input1 _ _ <- get
x <- p
ParseState input2 _ _ <- get
pure $ Tuple x $ take (length input1 - length input2) input1
Metadata
Metadata
Assignees
Labels
No labels