Beispiel #1
0
    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
Beispiel #2
0
    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