code: def evaluate(self, task, expression):
          
          if isinstance(expression, Operator):
              return expression._matches(task)
          else:
              return self._eval(task, expression, **task.data)
docs: Evaluate the given expression, within the context of the given task and
          return the result.