[Haskell-cafe] An irritating Parsec problem
Andrew Coppin
andrewcoppin at btinternet.com
Wed Oct 15 15:22:51 EDT 2008
I like Parsec. I use it for everything. But it does have one irritating
problem.
Consider the following parser:
expressions = many1 expression
Suppose this is the top-level parser for my language. Now suppose the
user supplies an expression with a syntax error half way through it.
What I *want* to happen is for an error to be raised. What *actually*
happens is that Parsec just ignores all input after that point. So if
"+" is not a valid token, but the user writes
x = 1; y = 2; z = 3 + z; w = 4;
then what my program receives back is "x = 1; y = 2; z = 3", as if
everything parsed successfully. But actually it has ignored half the
input! o_O
Does anybody know how to fix this irratiting quirk? I can see why it
happens, but not how to fix it.
More information about the Haskell-Cafe
mailing list