Ayuda por pafor ejemplo de un programa basado en token

Rico
01 de Junio del 2005
class Parsel {
// estos son los tipos de token
final int NONE = 0;
final int DELIMITER = 1;
final int VARIABLE = 2;
final int NUMBER = 3;

// estos son los tipos de errores de sintaxis
final int SINTAX = 0;
final int UNBALPARENS = 1;
final int NOEXP = 2;
final int DIVBYZERO = 3;

// estas token indican fin de la expresion
final String EOE = "0";
private String exp; // alude a la cadena de expresion
private int expIdx; // indice actual en la expresion
private String token; // contiene token actual
private int tokType; // contiene tipo de token

// obtiene la siguiente token
private void getToken()
{
tokType = NONE;
token = "";
// busca el final de la expresion
if (expIdx == exp.length()) {
token = EOE;
return;
}
// omite el espacio en blanco
while(expIdx < exp.length() &&
Character.isWhitespace(exp.charAt(expIdx))) ++expIdx;
// espacio en blanco termina la expresion
if (expIdx == exp.length()) {
token = EOE;
return;
}
if (isDelim(exp.charAt(expIdx))) { // es operador
token += exp.charAt(expIdx);
expIdx++;
tokType = DELIMITER;
}
else if(Character.isLetter(exp.charAt(expIdx)))
{
while(!isDelim(exp.charAt(expIdx))) {
token +=exp.charAt(expIdx);
expIdx++;
if(expIdx >=exp.length()) break;
}
tokType=VARIABLE;

}

else if(Character.isDigit(exp.charAt(expIdx))) //ES NUMERO
{while(!isDelim(exp.charAt(expIdx))){
token +=exp.charAt(expIdx);
expIdx++;
if(expIdx >=exp.length()) break;
}

tokType=NUMBER;
}
else {//CARACTER DESCONOCIDO TERMINA LA EXPRESION
token=EOE;
return;
}
}

//DEVUELVE TRUE SI C ES UN DELIMITADOR

private boolean isDelim(char c)
{
if((" +-/*%^=()".indexOf(c)!=1))
return true;
return false;

}
}