Am Donnerstag, 26. Juni 2008 23:22 schrieb Eric: > Daniel Fischer wrote: > > Can't be exactly that, though because then removing sat (== Reserved ")") > > shouldn't help. > > Anyway, I need at least the failure message, better the complete code, to > > diagnose. > > I've attached the complete code. > > E. Thanks, though a plaintext file would've been better. It's pretty much what I came up with myself, the odd thing is that I can't reproduce your behaviour, whether sat (== Reserved ")") is present or not doesn't make a difference. Which version of GHC and parsec are you using? (I tried with 6.8.3 & parsec-2.1.0.1, 6.8.2 & parsec-2.1.0.0 and 6.6.1 & parsec-2.0, all give the same results, *Eric2> parseall . scanall $ "(_ineg_ 0)" *** Exception: (line 1, column 1):unknown parse error with or without the second sat).
However, the problem is indeed that upon failure (sat p) returns a Consumed value (and removes the token from the input), make it sat p = try $ do (t,pos) <- item if p t then return (t,pos) else pzero and you're all set (you don't need the try's in atom, then). Cheers, Daniel _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe