The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl 
use warnings;
use strict;
use Rule6;
use Parse::Eyapp::Treeregexp;

sub TERMINAL::info { $_[0]{attr} }

my $input = shift || '0*2';
my $severity = shift || 0;

my $parser = Rule6->new();
$parser->input(\$input);
my $t = $parser->YYParse();

exit(1) if $parser->YYNberr > 0;

my $transform = Parse::Eyapp::Treeregexp->new( 
  STRING => q{
    zero_times_whatever: TIMES(NUM($x)) and { $x->{attr} == 0 } => { $_[0] = $NUM }
  },
  SEVERITY => $severity,
)->generate;

# The package special variable @all now contains the whole set of transformations
$t->s(our @all);

print qq{Tree after applying '0*x => 0' transformation:\n}.$t->str,"\n";

=head1 SYNOPSIS

Compile C<Rule6.yp> first:

             eyapp Rule6

Run it like this:

      $ ./numchildren.pl 'a=0*8'
      Tree after applying '0*x => 0' transformation:
      ASSIGN(TERMINAL[a],NUM(TERMINAL[0]))