0
我有一个attoparsec
解析器,并测试它,让我很烦恼的是,如果我注释部分解析器并运行测试,解析器不会返回Left "parse error at line ..."
但相反,我得到Right []
。attoparsec:成功输入的一部分,而不是失败
请注意,我使用parseOnly
来说明不会有更多的输入。
否则,获得部分解析的输入是非常好的,它绝对有用,我很乐意拥有它。不过,我希望被告知整个输入未被消耗。也许要获得最后一次消费字母的字符偏移量,或者如果这是需要的,至少要返回一个选项Left
。
如果相关,解析器可以找到there。
如果我比如注释行:
<|> PlainText <$> choice (string <$> ["[", "]", "*", "`"])
并运行测试,我得到例如:
1) notes parsing tests parses notes properly
simple test
expected: Right [NormalLine [PlainText "one line* # hello world"]]
but got: Right []
这是that test。
对,随着你的建议改变,而不是'Right []'我得到'Left“endOfInput”'。我记得用'attoparsec'读了这个,你没有得到用''parsec''包得到的精确错误报告。为了调试的目的,我想可以暂时删除'endOfInput'约束,看看尽管可以通过。当我将解析器分发给最终用户时,在这种情况下并不能真正帮助我。但我想我不能做太多。好吧,无论如何,谢谢你,这就是答案! –