on master help sign in
added combinators to SimpleParser
commitbb7d01f84aba404d26d8d477f003ce513e133912 authorJürgen Peters <taulmarill@xgn.de> dateFri 30 Aug 2013, 23:06 (13 years ago) parent5ce8ee7
1 file changed+12
contribs/lib/SimpleParser/SimpleParser.idr+12
contribs/lib/SimpleParser/SimpleParser.idr+12
@@ -150,6 +150,18 @@ symbol xs = token (string xs)
150150strToken : Parser String
151151strToken = map pack (token (many1 alphanum))
152152
153+--------------------------------------------------------------------------------
154+-- combinators
155+--------------------------------------------------------------------------------
156+
157+sepBy1 : Parser a -> Parser b -> Parser (List a)
158+sepBy1 p s = map (::) p <$> many (s $> p)
159+
160+sepBy : Parser a -> Parser b -> Parser (List a)
161+sepBy p s = sepBy1 p s <|> return Nil
162+
163+manyTil : Parser a -> Parser b -> Parser (List a)
164+manyTil p e = (e $> return Prelude.List.Nil) <|> (map (::) p <$> manyTil p e)
153165
154166--------------------------------------------------------------------------------
155167-- Expressions