To answer your questions in reverse order: yes, yes, and a non-reversible pattern would be one with strange side effects, or one that calls out to a subrule that can't be reversed. Most ordinary patterns can be reversed, and of course all constant patterns can be reversed. It's not so obvious that you can look for .*? and such in reverse, but you can.

The only alternative is to reparse the string from the beginning (or from somewhere earlier in the string) and see if you happen to come out to the same place. This strikes me like one of those super-inefficient sorting algorithms where you shuffle the elements into a random order and then check to see if you happened to get them in order this time. If not, try a different guess. The intent of the verbiage in the synopsis is to rule out such a guessing implementation, which people tend to fall into because the notion of reversing the syntax tree is rather exotic until you think about it a while. But tree reversal is the right way to do it in a backtracking rule engine, so that's how Perl 6 will do it.


In reply to Re: What does it mean that a "pattern cannot be reversed?" by TimToady
in thread What does it mean that a "pattern cannot be reversed?" by tphyahoo

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.