这个代码分析数字和运营商只我需要它来分析字母只,并把其他事情无效我应该做些什么细节我从教程网站得到这段代码,并修改它,但没有结果。词法分析在Java中的字母
package lexical;
public class Tokenizer {
int pos;
char[] expression;
Tokenizer(String expression) {
this.expression = expression.toCharArray();
this.pos = 0;
}
enum Type { OPERATOR, LITTER, UNKNOWN }
class Lexeme {
String type, token;
Lexeme(String type, String token) {
this.type = type;
this.token = token;
}
}
Lexeme getNextToken() {
StringBuilder token = new StringBuilder();
boolean endOfToken = false;
Type type = Type.UNKNOWN;
while (!endOfToken && hasMoreTokens()) {
while(expression[pos] == ' ' && hasMoreTokens())
pos++;
switch (expression[pos]) {
case '+':
case '-':
case '*':
case '/':
if(type != Type.LITTER) {
type = Type.OPERATOR;
token.append(expression[pos]);
pos++;
}
endOfToken = true;
break;
case ' ':
endOfToken = true;
pos++;
break;
default:
if(Character.isDigit(expression[pos]) || expression[pos] == '.') {
token.append(expression[pos]);
type = Type.LITTER;
} else {
System.out.println("Systax error at position: " + pos);
}
pos++;
break;
}
}
return new Lexeme(type.name().toLowerCase(), token.toString());
}
boolean hasMoreTokens() {
return pos < expression.length;
}
public static void main(String[] args) {
String expression = "54+18+5";
Tokenizer tokenizer = new Tokenizer(expression);
while (tokenizer.hasMoreTokens()) {
Lexeme nextToken = tokenizer.getNextToken();
System.out.print("Type: " + nextToken.type + "\tLexeme: " + nextToken.token + "\n");
}
}
}
我努力,因为你发布你的答案,但没有 你能不能请张贴检查所有字母和什么是所有代码无效 在此先感谢 – user3513220 2014-12-06 14:02:15
什么字符是字母 - 只是AZ,az? – Scooter 2014-12-06 14:18:25
字符是字母a-z – user3513220 2014-12-06 14:55:19