def visit_BoolOp(self, node):
if type(node.op) not in (ast.And, ast.Or,):
raise SyntaxError("%s is not supported" % type(node.op))
many = list()
for value in node.values:
self.visit(value)
obj = self.data.pop()
criteria = obj if isinstance(obj, Criteria) else criteria_class.instance(Const.Bool, obj)
many.append(criteria)
if isinstance(node.op, ast.And):
cls = (criteria_class.lookup(Const.And) if len(many) == 2 else criteria_class.lookup(Const.All))
else:
cls = (criteria_class.lookup(Const.Or) if len(many) == 2 else criteria_class.lookup(Const.Any))
criteria = cls(*many)
self.data.append(criteria)
评论列表
文章目录