Skip to content

Commit 9fc2cf0

Browse files
committed
Add lookAhead and manyTill
1 parent efaa23a commit 9fc2cf0

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

src/Text/Parsing/StringParser/Combinators.purs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
module Text.Parsing.StringParser.Combinators where
22

3+
import Control.Alt ((<|>))
4+
import Control.Apply ((*>))
35
import Data.Maybe (Maybe(..))
4-
5-
import Control.Alt
6-
76
import Text.Parsing.StringParser
87

8+
lookAhead :: forall a. Parser a -> Parser a
9+
lookAhead p = Parser \ps fc sc -> unParser p ps fc (\s _ -> sc s ps)
10+
911
many :: forall a. Parser a -> Parser [a]
1012
many p = many1 p <|> return []
1113

@@ -100,3 +102,10 @@ choice :: forall a. [Parser a] -> Parser a
100102
choice [] = fail "Nothing to parse"
101103
choice [x] = x
102104
choice (x:xs) = x <|> choice xs
105+
106+
manyTill :: forall a end. Parser a -> Parser end -> Parser [a]
107+
manyTill p end = scan
108+
where
109+
scan = (end *> return []) <|> do x <- p
110+
xs <- scan
111+
return (x:xs)

0 commit comments

Comments
 (0)