logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Pegex::Regex - Use Pegex Like a Regex

Author

       Ingy döt Net <ingy@cpan.org>

Description

       This is a trivial sugar module that lets you use Pegex parser grammars like regular expressions, if
       you're into that kind of thing.

       This is basically a clone of Damian Conway's Regexp::Grammars module API.  You put a grammar into a
       "qr{...}x" and apply it the input string you want to parse. If the parse is successful, you get a data
       structure of the content in "%/".

       IMHO, building a recursive descent parser entirely inside of a regular expression, is not the clearest
       way to code. But, of course, TMTOWTDI. :)

Name

       Pegex::Regex - Use Pegex Like a Regex

Note

       This module is just for experimental fun. See Pegex for the right way to use the Pegex parsing framework.

See Also

       •   Pegex

       •   Regexp::Grammars

Synopsis

           {
               # Turn on Pegex regular expressions in lexical scope.
               use Pegex::Regex;
               my $grammar = qr{$grammar_text}x;
               $text =~ $grammar;
               my $result = \%/;

               # Turn off Pegex in this scope.
               no Pegex::Regex;
           }

Tmtowtdi

       Here's a Pegex::Regex code snippet:

           use Pegex::Regex;
           $text =~ qr{... Pegex grammar text ...};
           $data = \%/;

       And the equivalent Pegex code:

           use Pegex;
           my $data = pegex('... Pegex grammar text ...')->parse($text);

Warning

       This gateway drug, er, module, technically should not even work.

       It turns your "grammar inside a regexp" into a Pegex::Grammar using qr{} overloading, and then turns your
       regexp itself into a shim that calls the parse method for you. This is highly magical and technically
       makes a reentrant call to the regex engine, which is not supported yet. Use at your own risk.

       Better yet, do yourself a favor and learn how to use the Pegex toolset without this ::Regex sugar. ":-)"

See Also