带有Maybe结果的Attoparsec可选解析器

时间:2015-12-07 20:24:03

标签: haskell maybe attoparsec

我有一个Attoparsec解析器,如下所示:

myParser :: Parser Text
myParser = char '"' *> takeWhile (not . isspace) <* char '"'

我想让这个解析器可选,所以我得到一个函数,如果解析器匹配Just txt,则返回Nothing,即签名的函数:

myMaybeParser :: Parser (Maybe Text)

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用optionParser的Applicative实例:

-- Make a parser optional, return Nothing if there is no match
maybeOption :: Parser a -> Parser (Maybe a)
maybeOption p = option Nothing (Just <$> p)

然后您可以像这样使用它:

myMaybeParser = maybeOption myParser