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