Beispiel #1
0
 def evaluate(self):
     """
     Evaluates the variable to retrieve its stored value.
     :exception: raises a runtime_error.RuntimeError if the variable name
         is not in the symbol table, with the message,
         'Unrecognized variable {variable}'
     :return: The value associated with the variable (int)
     """
     if self.id not in self.symTbl:
         raise runtime_error.RuntimeError("Unrecognized variable {variable}")
     return self.symTbl[self.id]
    def evaluate(self):
        """
        Evaluates the math expression and returns the result.
        :exception: raises a runtime_error.RuntimeError if division by zero
            is attempted, with the message, 'Division by zero error'
        :return: The result of performing the math operation (int)
        """

        if self.token == '+':
            return self.left.evaluate() + self.right.evaluate()
        elif self.token == '-':
            return self.left.evaluate() - self.right.evaluate()
        elif self.token == '//':
            if self.right.emit() == '0':
                raise runtime_error.RuntimeError("Division by zero error")
            return self.left.evaluate() // self.right.evaluate()
        elif self.token == '*':
            return self.left.evaluate() * self.right.evaluate()
Beispiel #3
0
 def evaluate(self):
     """
     Evaluates the math expression and returns the result.
     :exception: raises a runtime_error.RuntimeError if division by zero
         is attempted, with the message, 'Division by zero error'
     :return: The result of performing the math operation (int)
     """
     if self.token is "+":
         return self.left.evaluate() + self.right.evaluate()
     elif self.token is "-":
         return self.left.evaluate() - self.right.evaluate()
     elif self.token is "*":
         return self.left.evaluate() * self.right.evaluate()
     elif self.token == '//':
         if isinstance(self.right,
                       literal_node.LiteralNode) and self.right.val == 0:
             raise runtime_error.RuntimeError('Division by zero error')
         return self.left.evaluate() // self.right.evaluate()
 def evaluate(self):
     """
     Evaluates the math expression and returns the result.
     :exception: raises a runtime_error.RuntimeError if division by zero
         is attempted, with the message, 'Division by zero error'
     :return: The result of performing the math operation (int)
     """
     if self.token == "+":
         return self.left.evaluate() + self.right.evaluate()
     elif self.token == "-":
         return self.left.evaluate() - self.right.evaluate()
     elif self.token == "*":
         return self.left.evaluate() * self.right.evaluate()
     elif self.token == "//":
         if str(self.right.evaluate()) == "0":
             raise runtime_error.RuntimeError('Division by zero error')
         else:
             return self.left.evaluate() // self.right.evaluate()
     pass
    def evaluate(self):
        """
        Evaluates the math expression and returns the result.
        :exception: raises a runtime_error.RuntimeError if division by zero
            is attempted, with the message, 'Division by zero error'
        :return: The result of performing the math operation (int)
        """

        left_value = self.left.evaluate()
        right_value = self.right.evaluate()

        if self.token == pretee.PreTee.ADD_TOKEN:
            return left_value + right_value
        elif self.token == pretee.PreTee.SUBTRACT_TOKEN:
            return left_value - right_value
        elif self.token == pretee.PreTee.MULTIPLY_TOKEN:
            return left_value * right_value
        elif self.token == pretee.PreTee.DIVIDE_TOKEN:
            if right_value == 0:
                raise runtime_error.RuntimeError('Division by zero error')
            else:
                return left_value // right_value
Beispiel #6
0
    def evaluate(self):
        """
        Evaluates the math expression and returns the result.
        :exception: raises a runtime_error.RuntimeError if division by zero
            is attempted, with the message, 'Division by zero error'
        :return: The result of performing the math operation (int)
        """
        if self.token == pretee.PreTee.ADD_TOKEN:
            return self.left.evaluate() + self.right.evaluate()

        elif self.token == pretee.PreTee.SUBTRACT_TOKEN:
            return self.left.evaluate() - self.right.evaluate()

        elif self.token == pretee.PreTee.MULTIPLY_TOKEN:
            return self.left.evaluate() * self.right.evaluate()

        elif self.token == pretee.PreTee.DIVIDE_TOKEN:
            divisor = self.right.evaluate()

            if divisor != 0:
                return self.left.evaluate() // divisor
            else:
                raise runtime_error.RuntimeError("Division by zero error")