def evaluate(self): while self._scanner.hasNext(): currentToken = self._scanner.next() self._expressionSoFar += str(currentToken) + " " if currentToken.getType() == Token.INT: self._operandStack.push(currentToken) elif currentToken.isOperator(): if len(self._operandStack) < 2: raise Exception("Too few operands on the stack") t2 = self._operandStack.pop() t1 = self._operandStack.pop() try: result = Token( self._computeValue(currentToken, t1.getValue(), t2.getValue())) except Exception as error: return error else: self._operandStack.push(result) else: raise Exception("Unknown token type") if len(self._operandStack) > 1: raise Exception("Too many operands on the stack") result = self._operandStack.pop() return result.getValue()
def evaluate(self): for currentToken in self._postfix: self._expressionSoFar += str(currentToken) + " " if currentToken.getType() == Token.INT: self._operandStack.push(currentToken) else: t2 = self._operandStack.pop() t1 = self._operandStack.pop() result = Token(self._computeValue(currentToken, t1.getValue(), t2.getValue())) self._operandStack.push(result) result = self._operandStack.pop() return result.getValue();
def evaluate(self): """Returns the value of the postfix expression.""" for currentToken in self._scanner: if currentToken.getType() == Token.INT: self._operandStack.push(currentToken) elif currentToken.isOperator(): right = self._operandStack.pop() left = self._operandStack.pop() result = Token(self._computeValue(currentToken, left.getValue(), right.getValue())) self._operandStack.push(result) result = self._operandStack.pop() return result.getValue();
def evaluate(self): """Returns the value of the postfix expression.""" for currentToken in self._scanner: if currentToken.getType() == Token.INT: self._operandStack.push(currentToken) elif currentToken.isOperator(): right = self._operandStack.pop() left = self._operandStack.pop() result = Token( self._computeValue(currentToken, left.getValue(), right.getValue())) self._operandStack.push(result) result = self._operandStack.pop() return result.getValue()
def evaluate(self): while self._scanner.hasNext(): currentToken = Token(self._scanner.next()) self._expressionSoFar += str(currentToken) + " " if currentToken.getType() == Token.INT: self._operandStack.push(currentToken) elif currentToken.isOperator(): if len(self._operandStack) < 2: raise AttributeError( "Too few operands on the stack") t2 = self._operandStack.pop() t1 = self._operandStack.pop() result = Token(self._computeValue( currentToken,int(t1.getValue()), int(t2.getValue()))) self._operandStack.push(result) else: print(currentToken.getValue(),currentToken.getType()) raise AttributeError("Unknown token type") if len(self._operandStack) > 1: raise AttributeError("Too many operands \ on the stack") result = self._operandStack.pop() return result.getValue()
def evaluate(self): """Returns the value of the postfix expression.""" # For each token in our scanner or list, # If it's an operand, push the token # If it's an operator pop off two tokens from the stack, # compute the value, and then push the value back on the stack as a new Token for currentToken in self._scanner: if currentToken.getType() == Token.INT: self._operandStack.push(currentToken) elif currentToken.isOperator(): right = self._operandStack.pop() left = self._operandStack.pop() result = Token(self._computeValue(currentToken, left.getValue(), right.getValue())) self._operandStack.push(result) # The result is the last thing left in the stack result = self._operandStack.pop() return result.getValue()
def evaluate(self): while self._scanner.hasNext(): currentToken = self._scanner.next() self._expressionSoFar += str(currentToken) + " " if currentToken.getType() == Token.INT: self._operandStack.push(currentToken) elif currentToken.isOperator(): if len(self._operandStack) < 2: raise AttributeError("Too few operands on the stack") t2 = self._operandStack.pop() t1 = self._operandStack.pop() result = Token(self._computeValue(currentToken, t1.getValue(), t2.getValue())) self._operandStack.push(result) else: raise AttributeError("Unknown token type") if len(self._operandStack) > 1: raise AttributeError("Too many operands on the stack") result = self._operandStack.pop() return result.getValue();