#!/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 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]))