Larry Wall has dictated that in Perl 6, all regular expressions will be represented as bytecode in the same format as the rest of the program. For example, there might be an anything op which was equivalent to '.'. Naturally, a bunch of people (including myself) have started trying to hack RE support into Parrot. My current approach is something like this:
match "afoobarz", "i" RE_0: goforward END literal "f" RE_1: lazyrepeat literal "o" saveindex literal "bar" backtrack RE_1 backtrack RE_0 reend I0
That's equivalent to "afoobarz"=~/fo*?bar/i. While obviously it's better than nothing, I still feel like it's suboptimal.

Can some regexp internals experts give me an idea of how something like this would best be set up? I'm trying to stay within the realm of normal Parrot opcodes with some extra data structures in the C code to hold things like the current index; that means that you should think in terms of labels, not trees. I don't really care about speed at this point, just about something that works.

Thanks in advance!

=cut
--Brent Dax
There is no sig.


In reply to Flattening REs into opcodes for Perl 6 by BrentDax

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.