@@ -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))
153+--------------------------------------------------------------------------------
155+--------------------------------------------------------------------------------
157+sepBy1 : Parser a -> Parser b -> Parser (List a)
158+sepBy1 p s = map (::) p <$> many (s $> p)
160+sepBy : Parser a -> Parser b -> Parser (List a)
161+sepBy p s = sepBy1 p s <|> return Nil
163+manyTil : Parser a -> Parser b -> Parser (List a)
164+manyTil p e = (e $> return Prelude.List.Nil) <|> (map (::) p <$> manyTil p e)
154--------------------------------------------------------------------------------
166--------------------------------------------------------------------------------
155-- Expressions
167-- Expressions