
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