我正在轉換一些正在運行的Haskell代碼,它使用Parsec來代替使用Attoparsec來獲得更好的性能。我做了更改並編譯了所有內容,但解析器無法正常工作。使用Attoparsec時輸入不完整的問題
我正在解析一個由不同記錄類型組成的文件,每行一個。我的每個解析記錄或註釋的函數都能正常工作,但是當我嘗試編寫函數來編譯一系列記錄時,解析器總是返回一個部分結果,因爲它需要更多的輸入。
這些是我嘗試過的兩個主要變化形式。兩者都有同樣的問題。
items :: Parser [Item]
items = sepBy (comment <|> recordType1 <|> recordType2) endOfLine
對於第二個,我更改了記錄/註釋解析器以消耗行尾字符。
items :: Parser [Item]
items = manyTill (comment <|> recordType1 <|> recordType2) endOfInput
我的方法有什麼問題嗎?有沒有其他方法可以實現我所嘗試的?
謝謝,這解決了我的問題。 – 2010-06-07 14:56:36