aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuis Mochan <mochan@fis.unam.mx>2021-12-15 12:51:48 -0600
committerLuis Mochan <mochan@fis.unam.mx>2021-12-15 12:51:48 -0600
commitac3232563d692f76a1493880b4bd4b5f3112be30 (patch)
tree26b02850f083431ebe435c89313441ac24f5c45b
parentdf286d0a88b12c8999eb7f1b54d8f15967c913a4 (diff)
downloadperlweeklychallenge-club-ac3232563d692f76a1493880b4bd4b5f3112be30.tar.gz
perlweeklychallenge-club-ac3232563d692f76a1493880b4bd4b5f3112be30.tar.bz2
perlweeklychallenge-club-ac3232563d692f76a1493880b4bd4b5f3112be30.zip
Add unary +
-rwxr-xr-xchallenge-143/wlmb/perl/ch-1.pl11
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;