package com.coding.basic.stack.expr;
import java.util.List;
import java.util.Stack;
public class PostfixExpr {
String expr = null;
public PostfixExpr(String expr) {
this.expr = expr;
}
public float evaluate() {
TokenParser tokenParser=new TokenParser();
List<Token> tokens=tokenParser.parse(expr);
Stack stack=new Stack();
for(Token token:tokens){
if(token.isNumber()){
stack.push(new Float(token.getIntValue()));
}
else{
float one =(float) stack.pop();
float two=(float) stack.pop();
float result = 0;
String ope=token.toString();
if(ope.equals("-")){
result=two-one;
}
else if(ope.equals("*")){
result=two*one;
}
else if(ope.equals("/")){
result=two/one;
}
else if(ope.equals("+")){
result=two+one;
}
stack.push(result);
}
}
return (float) stack.pop();
}
}