lv1expr : { my @ops = @{$item[1]}; my $res = shift @ops; while (@ops) { my ($op, $num) = (shift@ops, shift@ops); if ($op eq '+') { $res+= $num } else { $res -= $num; } } $return = $res; } # ... addsub: /[-+]/