on master help sign in
Merge pull request #463 from tauli/master
8be6b35Edwin Brady
contribs/lib/SimpleParser/SimpleParser.idr+15
@@ -150,6 +150,21 @@ 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+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 |]
153
168
154--------------------------------------------------------------------------------
169--------------------------------------------------------------------------------
155-- Expressions
170-- Expressions