Exemplo n.º 1
0
 def execute_evaluated(self, operands: List[Expression],
                       frame: Frame) -> Expression:
     verify_exact_callable_length(self, 2, len(operands))
     assert_all_numbers(operands)
     negate = (operands[0].value < 0) != (operands[1].value < 0)
     negate = -1 if negate else 1
     return Number(negate * operands[0].value // operands[1].value)
Exemplo n.º 2
0
 def execute_evaluated(self, operands: List[Expression], frame: Frame):
     verify_min_callable_length(self, 1, len(operands))
     assert_all_numbers(operands)
     if len(operands) == 1:
         return Number(-operands[0].value)
     return Number(operands[0].value - sum(operand.value
                                           for operand in operands[1:]))
Exemplo n.º 3
0
    def execute_evaluated(self, operands: List[Expression],
                          frame: Frame) -> Expression:
        verify_min_callable_length(self, 1, len(operands))
        assert_all_numbers(operands)
        if len(operands) == 1:
            return Number(1 / operands[0].value)

        out = operands[0].value
        for operand in operands[1:]:
            out /= operand.value
        return Number(out)
Exemplo n.º 4
0
 def execute_evaluated(self, operands: List[Expression],
                       frame: Frame) -> Expression:
     verify_exact_callable_length(self, 2, len(operands))
     assert_all_numbers(operands)
     return Number(operands[0].value % abs(operands[1].value))
Exemplo n.º 5
0
 def execute_simple(self, operand: Expression) -> Expression:
     assert_all_numbers([operand])
     return Number(abs(operand.value))
Exemplo n.º 6
0
 def execute_evaluated(self, operands: List[Expression], frame: Frame):
     assert_all_numbers(operands)
     out = 1
     for operand in operands:
         out *= operand.value
     return Number(out)
Exemplo n.º 7
0
 def execute_simple(self, operand: Expression) -> Expression:
     assert_all_numbers([operand])
     return bools[operand.value == 0]
Exemplo n.º 8
0
 def execute_evaluated(self, operands: List[Expression], frame: Frame):
     assert_all_numbers(operands)
     return Number(sum(operand.value for operand in operands))