Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: Parsing and translating Perl Regexes ( PPIx::Regexp::xplain Regexp::Debugger )

by Anonymous Monk
on Nov 05, 2013 at 01:09 UTC ( #1061221=note: print w/ replies, xml ) Need Help??


in reply to Parsing and translating Perl Regexes

See ppi_dumper or Re: ppiwx / wxPPI / wxppixregexp xPPIx_Regexp_linecol_onize / PPIx::Regexp::Element::column_number or Re: Wanted: Perl Regex Pretty Printer (almost, rxrx, rxplain)

PPIx::Regexp is pretty good although I've had to enhance it to do proper regexp modifiers propagation ... I've got code (PPIx::Regexp::xplain), still in need of some refactoring ... you can see sample output above at rxplain link

Regexp::Debugger parses the regex, modifies the regex (adds callbacks), and then runs the modified regex, needs to run it so it can explain the regex -- Re^2: Wanted: Perl Regex Pretty Printer (rxrx bug) -- translating to another regex language would require the amount of context/knowledge as explaining -- thats if you want to adapt it (though patching the module)

So I would go with PPIx::Regexp because it doesn't require running the regex in the perl regex engine, does a pretty good job, and is designed for this kind of task

All other solutions (Regexp::Debugger) are too much work -- sure the tokenizer is good, but there is too much context to keep track off .... basically you end up starting from scratch and learning waaaaaaay too much about regexes ... PPIx::Dumper embodies a lot of that knowledge


Comment on Re: Parsing and translating Perl Regexes ( PPIx::Regexp::xplain Regexp::Debugger )
Re^2: Parsing and translating Perl Regexes ( PPIx::Regexp::xplain Regexp::Debugger )
by Anonymous Monk on Nov 05, 2013 at 17:45 UTC

    Would you be willing to provide the particulars on the problems you have with PPIx::Regexp's modifier propagation so I can improve it? Either an RT ticket or electronic mail to wyant at cpan dot org will do the trick.

    Thanks,

    Tom Wyant

      :) But if I do that I'll have to update my program, and I'm lazy and its hard to juggle :)

      Ok, if you're willing to accept this is a roundabout way to report an issue, a work in progress that stalled few months ago, that started organically as a single subroutine walking the PPIx::Regexp tree and grew from there, slowly as I am learning my way around, into its current state, still in need of refactoring ...

      I'll post the full code in two followups but here is an excerpt from ppixregexplain.pl from what I thought were bugs that received a "TODO.*BUG" note. If there are any inaccuracies thinkos typos you have been warned :)

      In in furtherance of blind copying, the corresponding entries from my "test suite" (it tests my eyeball interface)

      And one more

      In the code below the modifiers propagation code is in the following definitions (you can copy/paste each line to find the sub definition)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1061221]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (7)
As of 2014-09-16 19:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (45 votes), past polls