Raise ParseError dans Haskell / parsec
Question
Quelle est la façon de soulever des erreurs preferred (ParseError
) à parsec? Je suis un peu de code à l'intérieur d'un analyseur qui effectue un contrôle et si la vérification échoue une ParseError
doit être retourné (à savoir Left ParseError
lors de l'exécution parse
).
La solution
Vous pouvez utiliser Text.ParserCombinators.Parsec.Prim.unexpected
et Control.Monad.fail
pour cela. Les deux prennent un argument String
signifiant le message d'erreur et revenir (dans ce cas) une valeur de type GenParser tok st a
.
Pour en savoir plus, voir Text.ParserCombinators.Parsec.Error
, en particulier Message
. Là, vous pouvez lire la fonction à utiliser dans ce cas (même si les deux signifier une erreur d'analyse, ils sont sémantiquement légèrement différentes).