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'約束,看看盡管可以通過。當我將解析器分發給最終用戶時,在這種情況下並不能真正幫助我。但我想我不能做太多。好吧,無論如何,謝謝你,這就是答案! –