on master help sign in
added combinators to SimpleParser
bb7d01fJürgen Peters
contribs/lib/SimpleParser/SimpleParser.idr+12
@@ -150,6 +150,18 @@ symbol xs = token (string xs)
150strToken : Parser String
150strToken : Parser String
151strToken = map pack (token (many1 alphanum))
151strToken = map pack (token (many1 alphanum))
152
152
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)
153
165
154--------------------------------------------------------------------------------
166--------------------------------------------------------------------------------
155-- Expressions
167-- Expressions