The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
package CalcActions;
use strict;
use base qw{NoacInh};

sub NUM {
  return $_[1];
}

sub PLUS {
  $_[1]+$_[3];
}

sub TIMES {
  $_[1]*$_[3];
}

package PostActions;
use strict;
use base qw{NoacInh};

sub NUM {
  return $_[1];
}

sub PLUS {
  "$_[1] $_[3] +";
}

sub TIMES {
  "$_[1] $_[3] *";
}

package main;
use strict;

my $calcparser = CalcActions->new();
my $x = "@ARGV";
my $e = $calcparser->Run(0, $x);

unless ($calcparser->YYNberr) {
  print "$e\n";

  my $postparser = PostActions->new();
  my $p = $postparser->Run(0, $x);

  print "$p\n";
}