On Nov 4, 1:34 pm, George Sakkis <[EMAIL PROTECTED]> wrote:
> Is there any package that parses regular expressions and returns an
> AST ? Something like:
>
> >>> parse_rx(r'i (love|hate) h(is|er) (cat|dog)s?\s*!+')
>
> Regex('i ', Or('love', 'hate'), ' h', Or('is', 'er'), ' ', Or('cat',
> 'dog'), Optional('s'), ZeroOrMore(r'\s'), OneOrMore('!'))
>
> Given such a structure, I want to create a generator that can generate
> all strings matched by this regexp. Obviously if the regexp contains a
> '*' or '+' the generator is infinite, and although it can be
> artificially constrained by, say, a maxdepth parameter, for now I'm
> interested in finite regexps only. It shouldn't be too hard to write
> one from scratch but just in case someone has already done it, so much
> the better.
>
> GeorgeCheck out this pyparsing regex inverter: http://pyparsing.wikispaces.com/file/view/invRegex.py Here is what your example generates: i (love|hate) h(is|er) (cat|dog)s? Parse time: 0.17 seconds 16 i love his cat i love his cats i love his dog i love his dogs i love her cat i love her cats i love her dog i love her dogs i hate his cat i hate his cats i hate his dog i hate his dogs i hate her cat i hate her cats i hate her dog i hate her dogs -- Paul -- http://mail.python.org/mailman/listinfo/python-list
