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()
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
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")