def visit_Or(self, node, stack, stack_base): if stack_base == len(stack): resume_record = BinaryExpressionRR() stack.append(resume_record) else: resume_record = stack[stack_base] try: if resume_record.left is None: resume_record.left = self.visit_and_force_eval(node.lexpr, stack, stack_base + 1) rexpr = self.visit_and_force_eval(node.rexpr, stack, stack_base + 1) stack.pop() return resume_record.left or rexpr except: raise
def visit_KeyValuePair(self, node, stack, stack_base): if stack_base == len(stack): resume_record = BinaryExpressionRR() stack.append(resume_record) else: resume_record = stack[stack_base] try: # We store the key in resume_record.left if resume_record.left is None: resume_record.left = self.visit_and_force_eval(node.key_expr, stack, stack_base + 1) value = self.visit_and_force_eval(node.value_expr, stack, stack_base + 1) except: raise stack.pop() return resume_record.left, value
def visit_Or(self, node, stack, stack_base): if stack_base == len(stack): resume_record = BinaryExpressionRR() stack.append(resume_record) else: resume_record = stack[stack_base] try: if resume_record.left is None: resume_record.left = self.visit_and_force_eval( node.lexpr, stack, stack_base + 1) rexpr = self.visit_and_force_eval(node.rexpr, stack, stack_base + 1) stack.pop() return resume_record.left or rexpr except: raise
def visit_KeyValuePair(self, node, stack, stack_base): if stack_base == len(stack): resume_record = BinaryExpressionRR() stack.append(resume_record) else: resume_record = stack[stack_base] try: # We store the key in resume_record.left if resume_record.left is None: resume_record.left = self.visit_and_force_eval( node.key_expr, stack, stack_base + 1) value = self.visit_and_force_eval(node.value_expr, stack, stack_base + 1) except: raise stack.pop() return resume_record.left, value