Sto convertendo un codice Haskell funzionante che utilizza Parsec per utilizzare invece Attoparsec nella speranza di ottenere prestazioni migliori. Ho apportato le modifiche e tutto viene compilato, ma il mio parser non funziona correttamente.Problema con input incompleto quando si utilizza Attoparsec
Sto analizzando un file che comprende vari tipi di record, uno per riga. Ognuna delle mie singole funzioni per analizzare un record o un commento funziona correttamente, ma quando provo a scrivere una funzione per compilare una sequenza di record, il parser restituisce sempre un risultato parziale perché si aspetta un input maggiore.
Queste sono le due varianti principali che ho provato. Entrambi hanno lo stesso problema.
items :: Parser [Item]
items = sepBy (comment <|> recordType1 <|> recordType2) endOfLine
Per questo secondo ho modificato i parser di record/commenti per consumare i caratteri di fine riga.
items :: Parser [Item]
items = manyTill (comment <|> recordType1 <|> recordType2) endOfInput
C'è qualcosa di sbagliato nel mio approccio? C'è un altro modo per ottenere ciò che sto tentando?
Grazie, questo ha risolto il mio problema. –