[Haskell-cafe] parsec: parserFail & multiple error messages

Christian Maeder Christian.Maeder at dfki.de
Thu Aug 9 09:59:39 CEST 2012


The error message can be improved in your examples by using "count 5" 
instead of "many1".

C.

Am 08.08.2012 21:24, schrieb silly8888:
> I am trying to create a parsec parser that parses an integer and then
> checks if that integer has the right size. If not, it generates an
> error.
> I tried the following:
>
> 8<---------------------------------------------------------------
> import Text.Parsec
> import Text.Parsec.String
>
> integer :: Parser Int
> integer  = do s <- many1 digit
>                let n = read s
>                if n > 65535 then
>                    parserFail "integer overflow"
>                else
>                    return n
> 8<---------------------------------------------------------------
>
> The problem is that when I try this
>
> parse integer "" "70000"
>
> I get the following error:
>
> Left (line 1, column 6):
> unexpected end of input
> expecting digit
> integer overflow
>
> ie there are three error messages but I only want the last one. Is
> there something I can do about this?
>



More information about the Haskell-Cafe mailing list