On Sat Dec 19 19:44:53 2015, pesc...@gmail.com wrote:
> On Mon Nov 23 03:52:55 2015, pesc...@gmail.com wrote:
> > Consider the following two regexen and their matching output, or lack
> > thereof:
> >
> > 11:39 < psch> m: say "abcd" ~~ /^(a | b | bc | cd)*?$/; my @a = < a b
> > bc cd >; say "abcd" ~~ /^(@a)*?$/
> > 11:39 <+camelia> rakudo-moar : OUTPUT«「abcd」␤ 0 => 「a」␤ 0 => 「b」␤ 0
> > =>
> > 「cd」␤Nil␤»
> >
> > S05 says:
> >
> > An interpolated array:
> >
> > / @cmds /
> >
> > is matched as if it were an alternation of its literal elements.
> > Ordinarily it matches using junctive semantics:
> >
> > / [ $(@cmds[0]) | $(@cmds[1]) | $(@cmds[2]) | ... ] /
> >
> > Taking this literal still matches when written as the long form:
> >
> > 11:51 <psch> m: my @a = < a b bc cd >; say "abcd" ~~ /^( $(@a[0]) |
> > $(@a[1]) | $(@a[2]) | $(@a[3]) )*?$/
> > 11:51 <camelia> rakudo-moar : OUTPUT«「abcd」␤ 0 => 「a」␤ 0 => 「b」␤ 0 =>
> > 「cd」␤»
> >
> > With the S05 quote I'd expect the array to interpolate into any of
> > the
> > two other regexen and produce the same match.
> 
> 03:39 < Juerd> psch: In bug reports I try to read significance in
> every character. So given ^(@a)*?$  I wonder why it's anchored, and
> why there's a ? after the *
> 03:39 < psch> the ? after * allows backtracking
> 03:39 < Juerd> Yes, but I'm trying to figure out why that was needed
> for the bug to trigger
> 03:40 < Juerd> And if it wasn't, then it's not golfed enough yet :)
> 03:40 < psch> m: my @a = < a b bc cd >; say "abcd" ~~ /(@a)*/
> 03:40 <+camelia> rakudo-moar 091ee7: OUTPUT«「abc」␤ 0 => 「a」␤ 0 =>
> 「bc」␤»
> 03:40 < psch> right, the report could've been more golfed i guess
> 03:41 < Juerd> And it might have been clearer if the two attempts were
> not in a single m:
> 03:41 < psch> i'm not confident enough to predict the right behavior
> i'd say.  quoting the synopsis alludes to that
> 03:41 < psch> yes, that's definitely true
> 03:41 < Juerd> 'cause it took me, well, a few minutes, to realise that
> I should have been looking at that Nil in the output, not the rest.

19:24 < psch> m: my @a = < a b bc cd >; say "abcd" ~~ /^([||@a])*?$/
19:24 <+camelia> rakudo-moar d075c8: OUTPUT«「abcd」␤ 0 => 「a」␤ 0 => 「b」␤ 0 =>
                 「cd」␤»
19:25 < psch> m: my @a = < a b bc cd >; say "abcd" ~~ /^([|@a])*?$/
19:25 <+camelia> rakudo-moar d075c8: OUTPUT«Nil␤»
19:25 < psch> so, yeah, i suppose it's "explicit or implicit LTM alternating
              interpolation of arrays matches differently than bareword LTM
              alternations"
19:26 < psch> but well, it's still about what S05 actually means, in a way 

Reply via email to