package expr; import java.util.ArrayList; import java.util.List; /** * Created by IBM on 2017/4/15. */ public class ExprParser { public static List<String> parse(InfixExpr infixExpr) { if (infixExpr == null || infixExpr.expr == null || infixExpr.expr.trim().isEmpty()) return null; String[] split = infixExpr.expr.split(""); List<String> results = new ArrayList<String>(); StringBuilder numberBuffer = new StringBuilder(); for (int i = 0; i < split.length; i++) { String ele = split[i]; if (ele.equals(OperEnum.ADD.getOperator()) || ele.equals(OperEnum.SUBTRACT.getOperator()) || ele.equals(OperEnum.MINUS.getOperator()) || ele.equals(OperEnum.MULTIPLY.getOperator())) { results.add(numberBuffer.toString()); numberBuffer.delete(0, numberBuffer.length()); results.add(ele); } else numberBuffer.append(ele); } results.add(numberBuffer.toString()); return results; } public static boolean belongsHighPriority(String operEle) { return belongsOperator(operEle) && (operEle.trim().equals(OperEnum.MINUS.getOperator()) || operEle.trim().equals(OperEnum.MULTIPLY.getOperator())); } public static boolean belongsOperator(String operEle) { return (operEle != null) && (operEle.trim().equals(OperEnum.ADD.getOperator()) || operEle.trim().equals(OperEnum.SUBTRACT.getOperator()) || operEle.trim().equals(OperEnum.MULTIPLY.getOperator()) || operEle.trim().equals(OperEnum.MINUS.getOperator())); } }