On Mon, May 09, 2005 at 10:33:33AM -0500, Patrick R. Michaud wrote:
: > =head2 Subpattern numbering
: > [...]
: > Of course, the leading C<undef>s that Perl 5 would produce do convey
: > (albeit awkwardly) which alternative actually matched. If that
: > information is important, Perl 6 has several far cleaner ways to
: > preserve it. For example:
: > 
: >     rule alt (Str $n) { {$/ = $n} }
: > 
: >     m/ <alt tea>  (don't) (ray) (me) (for) (solar tea), (d'oh!)
: >      | <alt BEM>  (every) (green) (BEM) (devours) (faces)
: >      /;
: 
: If the C< alt > rule is accepting a string argument, the match
: statement probably needs to read
: 
:      m/ <alt: tea>  (don't) (ray) (me) (for) (solar tea), (d'oh!)
:       | <alt: BEM>  (every) (green) (BEM) (devours) (faces)
:       /;

This seems like a rather ugly syntax for what is essentially a label,
or a <null> rule.  I wonder if we can come up with something a little
prettier.  Something like:

     m/ <null:tea>  (don't) (ray) (me) (for) (solar tea), (d'oh!)
      | <null:BEM>  (every) (green) (BEM) (devours) (faces)
      /;

     m/ <tea:=>  (don't) (ray) (me) (for) (solar tea), (d'oh!)
      | <BEM:=>  (every) (green) (BEM) (devours) (faces)
      /;

     m/ <:tea>  (don't) (ray) (me) (for) (solar tea), (d'oh!)
      | <:BEM>  (every) (green) (BEM) (devours) (faces)
      /;

or even plain label syntax:

     m/ tea: (don't) (ray) (me) (for) (solar tea), (d'oh!)
      | BEM:  (every) (green) (BEM) (devours) (faces)
      /;

if we recognize that : makes no sense as a backtrack control on a
non-quantified item.

Larry

Reply via email to