I think I may have found something wrong with PGE capturing with the :w
modifier. In this code:
.sub main @MAIN
.local pmc p6rule, rulesub, match
.local string input
input = "dog spot"
load_bytecode "runtime/parrot/library/PGE.pbc"
p6rule = find_global "PGE", "p6rule"
rulesub = p6rule(':w(\w+) (\S+)')
match = rulesub(input)
$S0 = match.dump()
print $S0
print "\n\n"
rulesub = p6rule('(\w+)\s+(\S+)')
match = rulesub(input)
$S0 = match.dump()
print $S0
print "\n"
.end
The first match is getting 'dog' in both 0 and 1 and never capturing
'spot' I think it should be like the second one (which doesn't use :w
but should be the same expression). Output:
: <dog @ 0> 0
[0]: <dog @ 0> 0
[1]: <dog @ 0> 0
dog spot
: <dog spot @ 0> 0
[0]: <dog @ 0> 0
[1]: <spot @ 4> 0
dog spot
-Dino
--
.~. Dino Morelli
/V\ email: dmorelli@reactorweb.net
/( )\ weblog: http://categorically.net/d/blog/
^^-^^ preferred distro: Debian GNU/Linux http://www.debian.org
Thread Next