diff options
| -rwxr-xr-x | challenge-143/wlmb/perl/ch-1.pl | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/challenge-143/wlmb/perl/ch-1.pl b/challenge-143/wlmb/perl/ch-1.pl index 4f0ebd8ec4..80c20d3932 100755 --- a/challenge-143/wlmb/perl/ch-1.pl +++ b/challenge-143/wlmb/perl/ch-1.pl @@ -60,12 +60,13 @@ sub term { sub simple { my $op=$token->[0]; my $val=$token->[1]; - die "Unrecognized expression: $previous\n" unless defined $op && $op=~/[-(N]/; + die "Unrecognized expression: $previous\n" unless defined $op && $op=~/[-+(N]/; token(); - return -simple() if $op eq '-'; - return $val if $op eq 'N'; - my $result=expression(); - $op=$token->[0]; + return -simple() if $op eq '-'; # unary - + return simple() if $op eq '+'; # unary + + return $val if $op eq 'N'; # number + my $result=expression(); # parenthesized expression + $op=$token->[0]; # closing parenthesis should follow die "Unbalanced parenthesis: $previous\n" unless defined $op and $op eq ')'; token(); return $result; |
