Raise ParseError in Haskell / Parsec
Frage
Was ist die bevorzugte Art und Weise Fehler (ParseError
) in Parsec zu erhöhen? Ich habe einige Codes in einem Parser, dass ein Häkchen und wenn die Überprüfung fehlschlägt ein ParseError
zurückgegeben werden soll (das heißt Left ParseError
wenn parse
ausgeführt wird).
Lösung
Sie können mit Text.ParserCombinators.Parsec.Prim.unexpected
und Control.Monad.fail
für diese. Sowohl ein String
Argument nehmen Sie die Fehlermeldung bedeutet und kehrt (in diesem Fall) einen Wert vom Typ GenParser tok st a
.
Für mehr finden Sie unter Text.ParserCombinators.Parsec.Error
, insbesondere Message
. Dort können Sie in diesem Fall die Funktion Gebrauch lesen (obwohl beide einen Parser-Fehler bedeuten, sie sind semantisch etwas anders).