【发布时间】:2020-12-06 11:48:42
【问题描述】:
我想用 parsec 解决以下任务,尽管splitOn "\n\n" 可能是更简单的答案。
我有一个像
testInput = unlines ["ab", "cd", "", "e"] -- "ab\ncd\n\ne"
遇到空行时解析器将停止。
我试过了
import Text.ParserCombinators.Parsec
inputFileP :: GenParser Char st String
inputFileP = many (lower <|> delimP)
delimP :: GenParser Char st Char
delimP = do
x <- char '\n'
notFollowedBy (char '\n')
return x
unexpected '\n' 失败。
为什么?
我的印象是 many x 解析 x 直到它失败然后停止。
【问题讨论】: