on master help sign in
Merge pull request #463 from tauli/master

added combinators to SimpleParser

commit8be6b351624ea6c8d17bef97a52403b1f3c90c3b authorEdwin Brady <edwin.brady@gmail.com> dateMon 2 Sep 2013, 07:22 (13 years ago) parentcacf215ef93607
1 file changed+15
contribs/lib/SimpleParser/SimpleParser.idr+15
contribs/lib/SimpleParser/SimpleParser.idr+15
@@ -150,6 +150,21 @@ symbol xs = token (string xs)
150150strToken : Parser String
151151strToken = map pack (token (many1 alphanum))
152152
153+--------------------------------------------------------------------------------
154+-- combinators
155+--------------------------------------------------------------------------------
156+
157+optional : Parser a -> Parser ()
158+optional p = (p $> pure ()) <|> pure ()
159+
160+sepBy1 : Parser a -> Parser b -> Parser (List a)
161+sepBy1 p s = [| p :: many (s $> p) |]
162+
163+sepBy : Parser a -> Parser b -> Parser (List a)
164+sepBy p s = sepBy1 p s <|> pure Nil
165+
166+manyTil : Parser a -> Parser b -> Parser (List a)
167+manyTil p e = (e $> pure Nil) <|> [| p :: manyTil p e |]
153168
154169--------------------------------------------------------------------------------
155170-- Expressions