root ::= Dice_Expression action => finish Dice_Expression ::= ... ... same as above ... sub My_Actions::finish { my $self = shift; # ... additional cleanup or else change whole sub to just return $_[0] return $self } #### r_modifier ::= 'r' Die_Modifier_Comp Die_Modifier_Val action => modifier_r_comp Die_Modifier_Comp ::= Die_Modifier_Comp_Toke* action => ::first Die_Modifier_Comp_Toke ~ 'gt' | 'lt' #### r_modifier ::= 'r' Die_Modifier_Comp Die_Modifier_Val action => modifier_r_comp Die_Modifier_Comp ::= Die_Modifier_Comp_Toke action => ::first | None Die_Modifier_Comp_Toke ~ 'gt' | 'lt' None ::=