import java.util.ArrayList;
import java.util.List;
/**
* Created by Lxx on 2017/4/29.
*/
public class TokenParser {
public List<Token> parse(String expr){
List<Token> tokens = new ArrayList<>();
int i = 0;
while (i < expr.length()) {
char c = expr.charAt(i);
if (isOperator(c)) {
Token t = new Token(Token.OPERATOR,String.valueOf(c));
tokens.add(t);
i++;
}else if(Character.isDigit(c)){
int nextOperatorIndex = indexOfNextOperator(i,expr);
String value = expr.substring(i,nextOperatorIndex);
Token t = new Token(Token.NUMBER,value);
tokens.add(t);
i = nextOperatorIndex;
}else {
//System.out.println("输入值不符合要求");
i++;
}
}
return tokens;
}
private int indexOfNextOperator(int i, String expr) {
while(Character.isDigit(expr.charAt(i))){
i++;
if(i == expr.length()){
break;
}
}
return i;
}
private boolean isOperator(char c) {
String sc = String.valueOf(c);
return Token.OPERATORS.contains(sc);
}
}