Parsec.Combinator:sepEndBy
module Main where import Text.ParserCombinators.Parsec test1 :: Parser String test1 = sepEndBy letter (char ',') run :: Show a => Parser a -> String -> IO () run p input = case (parse p "" input) of Left err -> do{ putStr "parse error at " ; print err } Right x -> print x
で、
*Main> run test1 "" "" *Main> run test1 "a" "a" *Main> run test1 "a," "a" *Main> run test1 "a,b" "ab" *Main> run test1 "a,b," "ab" *Main> run test1 "ab" "a"