我正在尝试在一个函数中使用switch语句来匹配令牌,其中一个令牌需要能够识别代码中定义的任何字符串或任何数字。请问是否可以像
很明显,我现在的模式不可到达,除非我将
case "[a-z]+":
这样对案例进行正则表达式定义?很明显,我现在的模式不可到达,除非我将
STRING
或NUMBER
作为参数传递进去。public Token analyzeToken(String token) {
Token tokenType = null;
switch (token) {
case "STRING":
Pattern p = Pattern.compile("[a-z]+");
Matcher m = p.matcher(token);
if(m.matches()) {
tokenType = Token.STRING;
break;
}
case "NUMBER":
Pattern p = Pattern.compile("[0-9]+");
Matcher m = p.matcher(token);
if(m.matches()) {
tokenType = Token.NUMBER;
break;
case "(":
tokenType = Token.LEFT_PAREN;
break;
case ")":
tokenType = Token.RIGHT_PAREN;
break;
case ".":
tokenType = Token.PERIOD;
break;
case ":":
tokenType = Token.COLON;
break;
case ";":
tokenType = Token.SEMICOLON;
default:
tokenType = TOKEN.UNKNOWN;
break;
}
}
case
定义什么? - hax0r_n_code