Tengo un ejemplo de un programa en Token y no corre... alguna sugerencia Gracias...
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;
}
}
// 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;
}
}
estarÃa bien que pusieras que tipo de errores te da o si no te termina el programa o algo de eso, tÃo. Que se supone deberÃa hacer y que es lo que realmente hace. También podrÃa ayudar el código de método main de la clase principal por lo menos.
