Math-Expression
view release on metacpan or search on metacpan
Expression.pm view on Meta::CPAN
last unless($newt); # get next token
}
}
}
}
# Check the tree for problems, args:
# 0 Self
# 1 a tree, return that tree, return undef on error.
# Report errors with $ErrFunc.
# To prevent a cascade of errors all due to one fault, use $ChkErrs to only print the first one.
my $ChkErrs;
sub CheckTree {
$ChkErrs = 0;
return &CheckTreeInt(@_);
}
# Internal CheckTree
sub CheckTreeInt {
my ($self, $tree) = @_;
return unless(defined($tree));
Expression.pm view on Meta::CPAN
return $left gt $right ? 1 : 0 if($oper eq 'gt');
return $left le $right ? 1 : 0 if($oper eq 'le');
return $left ge $right ? 1 : 0 if($oper eq 'ge');
return $left eq $right ? 1 : 0 if($oper eq 'eq');
return $left ne $right ? 1 : 0 if($oper eq 'ne');
return ($left, $right) if($oper eq ':'); # Should not be used, done in '?'
# return $left ? $right[0] : $right[1] if($oper eq '?'); # Non lazy version
# Everthing else is an arithmetic operator, check for left & right being numeric. NB: '-' 'cos may be -ve.
# Returning undef may result in a cascade of errors.
# Perl would treat 012 as an octal number, that would confuse most people, convert to a decimal interpretation.
unless($left =~ /^([-+]?)0*([\d.]+)([ef][-+]?\d*|)/i) {
unless($self->{AutoInit} and $left eq '') {
$self->PrintError("Left hand operator to '%s' is not numeric '%s'", $oper, $left);
return;
}
$left = 0;
} else {
$left = "$1$2$3";
}
( run in 0.445 second using v1.01-cache-2.11-cpan-49f99fa48dc )