$return
何もしなかった場合、「$item[$#item]」となるのが仕様だったらしい
#!/usr/bin/env perl use strict; use Parse::RecDescent; my $grammar = q{ inputs : ab { print "$item[1]\n"; } ab : 'a' 'b' }; my $parse = new Parse::RecDescent ($grammar); while (<>) { defined $parse->inputs($_) or print "Bad text!\n"; }
で、
ab b
#!/usr/bin/env perl use strict; use Parse::RecDescent; use Data::Dumper; my $grammar = q{ inputs : ab { print Data::Dumper::Dumper($item[1]); } ab : 'a' 'b' { $return = ['a', 'b']; } }; my $parse = new Parse::RecDescent ($grammar); while (<>) { defined $parse->inputs($_) or print "Bad text!\n"; }
で、
ab $VAR1 = [ 'a', 'b' ];
「$return」に入れなくても大丈夫な気もするのだが?そんなことはない?
#!/usr/bin/env perl use strict; use Parse::RecDescent; use Data::Dumper; my $grammar = q{ inputs : ab { print Data::Dumper::Dumper($item[1]); } ab : 'a' 'b' { ['a', 'b']; } }; my $parse = new Parse::RecDescent ($grammar); while (<>) { defined $parse->inputs($_) or print "Bad text!\n"; }
で、
ab $VAR1 = [ 'a', 'b' ];