package com.coding.basic.stack.expr;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class InfixToPostfix {
public static List<Token> convert(String expr) {
TokenParser parser=new TokenParser();
List<Token> exprs=parser.parse(expr);
List<Token> numStack=new ArrayList<Token>();
Stack<Token> ope=new Stack<Token>();
for(Token token:exprs){
if(token.isOperator()){
if(!ope.isEmpty()&&!token.hasHigherPriority(ope.peek())){
numStack.add(ope.pop());
}
ope.push(token);
}
else if(token.isNumber()){
numStack.add(token);
}
}
while(!ope.isEmpty()){
numStack.add(ope.pop());
}
return numStack;
}
}