Sollevare parseError in Haskell / Parsec
Domanda
Qual è il modo preferito per raccogliere gli errori (ParseError
) in Parsec? Ho avuto qualche codice all'interno di un parser che effettua un controllo e se il controllo non riesce a ParseError
deve essere restituito (cioè Left ParseError
durante l'esecuzione parse
).
Soluzione
È possibile utilizzare Text.ParserCombinators.Parsec.Prim.unexpected
e Control.Monad.fail
per questo. Entrambi prendono un argomento String
significare il messaggio di errore e tornerà (in questo caso) un valore di tipo GenParser tok st a
.
Per ulteriori informazioni, consultare Text.ParserCombinators.Parsec.Error
, in particolare Message
. Ci si può leggere che funzionano da usare in questo caso (anche se entrambi significare un errore di analisi, sono semanticamente leggermente diversi).