package datastructure.stack.expr; public class Token { public static final String NUMBER = "number"; public static final String OPERATOR = "operator"; private String type; private String value; public Token(String type, String value) { this.type = type; this.value = value; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public int comparePriority(Token token) { String higherLevel = "*/"; String lowerLevel = "+-"; if (higherLevel.contains(token.getValue())) { if (higherLevel.contains(this.value)) { return 0; } return -1; } else if (lowerLevel.contains(token.getValue())){ if (lowerLevel.contains(this.value)) { return 0; } return 1; } else { throw new RuntimeException("不支持的运算符:" + token.getValue()); } } public boolean isNumber() { if (NUMBER.equals(type)) { return true; } return false; } public boolean isOperator() { if (OPERATOR.equals(OPERATOR)) { return true; } return false; } @Override public String toString() { return "Token [type=" + type + ", value=" + value + "]"; } }