[Haskell-cafe] Re: [Parsec] Backtracking with try does not work for me?

Stephane Bortzmeyer bortzmeyer at nic.fr
Mon Jul 31 17:08:56 EDT 2006


On Mon, Jul 31, 2006 at 06:51:27PM +0100,
 Chris Kuklewicz <haskell at list.mightyreason.com> wrote 
 a message of 102 lines which said:

>minilang = do
>       char 'a'
>       optional (try (do {comma ; char 'b'}))
>       optional (do {comma ; char 'c'})
>       eof
>       return "OK"

I now have a new problem which was hidden beneath. If the language
authorizes "a,bb" and "a,bbc", "a,bbc" is not accepted by my parser
since it already accepted "a,bb" and the "c" which is left triggers a
syntax error.

This time, "try" believes it succeeded but should not. I need more
look-ahead but I'm not sure how?

(Again, I do not control the language so I cannot make it more
deterministic.)



More information about the Haskell-Cafe mailing list