Cons: $/.len = { $/; $.len + $.len } #### use Data::Dumper; $Data::Dumper::Deparse = 1; warn Dumper($grammar->{engine}{cases}{Cons}); #### $_AG_ATTR->get($_AG_SELF)->get('len')->set(sub { $_AG_SELF; $_AG_N1->get('len', 'grammar line 4') + $_AG_N2->get('len', 'grammar line 4'); } #### $_AG_ATTR->get($_AG_SELF)->get('len')->set(sub { $_AG_N1->get('len', 'grammar line 4') + $_AG_N2->get('len', 'grammar line 4'); } #### 'visit' => [ sub { ... # snipped my($_AG_SELF, $_AG_ATTR) = @_; ... # snipped $_AG_ATTR->get($_AG_SELF)->get('len')->set(sub { $_AG_SELF; #### sub children{ return @{ $_[0]{_ll_cache} ||= [ list( @{ $_[0]->{_list} } ) ] }; }