develooper Front page | perl.perl6.compiler | Postings from February 2012

[perl #111288] BUG in regex engine

From:
Stephane Payrard
Date:
February 22, 2012 05:12
Subject:
[perl #111288] BUG in regex engine
Message ID:
rt-3.6.HEAD-4610-1329916329-1002.111288-82-0@perl.org
# New Ticket Created by  Stephane Payrard 
# Please include the string:  [perl #111288]
# in the subject line of all future correspondence about this issue. 
# <URL: https://rt.perl.org:443/rt3/Ticket/Display.html?id=111288 >


$ perl6
> (grammar { token TOP {  <a>? $<b>='b' }; token a  {  a  } }).parse: 'ab'; say $/<b>.keys;
a
> (grammar { token TOP {  <a> $<b>='b' }; token a  {  a  } }).parse: 'ab'; say $/<b>.keys;
>

In the first line $/<b>.keys is not empty contrary to expectations.
Somehow the results of the <a>?
rule leaks into $/<b>.
Note that in the second line, the question mark in <a>?  is suppressed
and the bug is not triggered any more.

Maybe the bug will be fixed  when the implementation of ? will be
rewritten as per spec (not returning an array).



<cognominal>	nom: (grammar { token TOP {  <a>? $<b>='b' }; token a  {
a  } }).parse: 'ab'; say $/<b>.keys;
<p6eval>	nom 4130f6: OUTPUT«a␤»
<cognominal>	nom: (grammar { token TOP {  <a> $<b>='b' }; token a  {
a  } }).parse: 'ab'; say $/<b>.keys;
<p6eval>	nom 4130f6: OUTPUT«␤»
<cognominal>	jnthn, this does not make any sense to me that $/<b>.keys
 returns anything different than a void Parcel
<cognominal>	should I file a bug?
*	NamelessTee has quit (Ping timeout: 244 seconds)
<moritz>	nom: (grammar { token TOP {  <a> $<b>='b' }; token {  a  }
}).parse: 'ab'; say $/<b>.keys.WHAT;
<p6eval>	nom 4130f6: OUTPUT«Method 'a' not found for invocant of class
'<anon>'␤  in regex TOP at /tmp/fZXy8AXoHU:1␤  in method parse at
src/gen/CORE.setting:8019␤  in block <anon> at /tmp/fZXy8AXoHU:1␤␤»
<moritz>	nom: (grammar { token TOP {  <a> $<b>='b' }; token a {  a  }
}).parse: 'ab'; say $/<b>.keys.WHAT;
<p6eval>	nom 4130f6: OUTPUT«List()␤»
<moritz>	cognominal: it's returns an empty List, not an empty Parcel.
Is that your problem?
<cognominal>	see the first example, it prints "a\n".
<cognominal>	I don't care if it is a parcel or a list. Whatever it is
should be empty.
<moritz>	agreed
<cognominal>	it does not happen when I delete the '?' suffix.
<moritz>	though of course the ? quantifier on <a> should not affect $<b>
<cognominal>	yes, that's my point.
<moritz>	agreed. Bug it is.






-- 
cognominal stef



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About