Thanks (and thanks for the nice simple test case).
OK, so my initial attempts to reproduce this on 4.2.1 failed. If you
used easy_install, then
easy_install -U lepl
should update you to that.
What's happening is that the internal representation used while
rewriting a parser to a regular expression is "escaping". My guess is
that it didn't show up in tests for that release because once a parser
is "complex enough", the rewriting is no longer possible and the
internal representation is converted into a matcher.
So a work around would be to force that (make the parser "complex
enough") and the simplest way to do that is to add a function. The
following change (which basically does nothing, but calls the 'list'
function/constructor to do it) might avoid the problem (if you have
the time I'd be interested to know if it does):
c = Delayed()
a = Literal("a") + c
b = Literal("b")
c += (a | b) >= list
Anyway, I'll continue looking at this to make sure it really is fixed
now (I don't understand what has changed to fix this in 4.2.1 - it may
be a platform thing as I am using Linux). if either of the above
don't help, please say...
Cheers,
Andrew