def evaluate(self, variables): binder = Binder(variables) b_expr = binder.bindexpression(self.tree.root) diag = binder.diagnostics.information if diag: return EvaluationResult(None, diag, None) eval = BExpressionEvaluator(b_expr, variables) res = eval.evaluate() return EvaluationResult(b_expr, [], res)