From b65d2a251e71cc6a416026080e50f5b2bc8f2dfa Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Thu, 19 Nov 2020 23:11:40 -0600 Subject: [PATCH] EvaluationMapper: implement Comparison using operator_to_name instead of chain-of-ifs --- pymbolic/mapper/evaluator.py | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/pymbolic/mapper/evaluator.py b/pymbolic/mapper/evaluator.py index 5c0758b..f4fc308 100644 --- a/pymbolic/mapper/evaluator.py +++ b/pymbolic/mapper/evaluator.py @@ -174,20 +174,9 @@ class EvaluationMapper(RecursiveMapper, CSECachingMapperMixin): return self.rec(expr.else_) def map_comparison(self, expr): - if expr.operator == "==": - return self.rec(expr.left) == self.rec(expr.right) - elif expr.operator == "!=": - return self.rec(expr.left) != self.rec(expr.right) - elif expr.operator == "<": - return self.rec(expr.left) < self.rec(expr.right) - elif expr.operator == "<=": - return self.rec(expr.left) <= self.rec(expr.right) - elif expr.operator == ">": - return self.rec(expr.left) > self.rec(expr.right) - elif expr.operator == ">=": - return self.rec(expr.left) >= self.rec(expr.right) - else: - raise ValueError("invalid comparison operator") + import operator + return getattr(operator, expr.operator_to_name[expr.operator])( + self.rec(expr.left), self.rec(expr.right)) def map_if(self, expr): if self.rec(expr.condition): -- GitLab