[Haskell-cafe] Parsec problem
Derek Gladding
derek at solidmath.com
Wed Jun 6 12:52:37 EDT 2007
Neil Mitchell wrote:
> Hi,
>
> I'm using parsec to parse something which is either a "name" or a
> "type". The particular test string I'm using is a type, but isn't a
> name. I want things to default to "name" before "type".
I just finished a parsec grammar for C99, and found this very useful
while bringing it up:
mtrace_enabled = False
mtrace n p = if mtrace_enabled then
trace ("-> trying to match: " ++ n)
$ choice [do {a <- p; return (trace ("<-
matched: " ++ n ++ "(" ++ show a ++ ")") a)},
fail ("<- failed to match " ++ n)]
else
p
Usage:
expression = mtrace "expression"
(do {a <- chainl1 assignment_expression comma_op; return a})
Oh, and hello-and-delurk :)
- Derek
More information about the Haskell-Cafe
mailing list