Hola a todos los de
psicofxp:
Bueno al grano, como ya vieron el tema se trata de que si me pueden ayudar con un análizador léxico que estoy haciendo, de hecho ya lo tengo bien avanzado solo que no entiendo como hacer que el programa diferencie si es una palabra, un número entero o real,constantes y delimitadores, pues esa parte esta medio bien, jejeje solo que no se como combinarlas bien para determianar un erroro sintactico, por el momento solo lee las palabras reservadas y las cuenta.
Esto solo es una parte del programa.
-------------------------------------------------------------------------------------------
public static boolean Delimitador(String lexema)throws IOException{
switch(lexema.charAt(0)){
case ' ':
case '\t':;
case '\n':
case '\r':
return true;
default:
for(int i=tPalRes;i<tDel;i++)
if(lexema.compareTo(matToken[i])==0)
return true;
}
return false;
}
public static boolean Numero(String lexema)throws IOException{
for(int i=0;i<lexema.length();i++)
if(!Character.isDigit(lexema.charAt(i))||lexema.ch arAt(i)!='.')
return false;
return true;
}
public static boolean Variable(String lexema)throws IOException{
if(lexema.startsWith("_")||Character.isLetter(lexe ma.charAt(0)))
return true;
return false;
}
public static boolean PalRes(String lexema)throws IOException{
for(int i=0;i<tPalRes;i++){
if(lexema.compareTo(matToken[i])==0)return true;
else if(i==matToken.length-1)return false;
}
return false;
}
public static void Analizador(String lexema)throws IOException{
String token="";
for(int i=0;i<lexema.length();i++){
token+=""+lexema.charAt(i);
if(PalRes(token)&&Delimitador(""+lexema.charAt(i+1 ))){
System.out.println("ya");
token="";
good++;
i++;
}else{
System.out.println("aun no");
bad++;
}
}
System.out.println("Correctos: "+good);
}
-------------------------------------------------------------------------------------------
Espero alguien me pueda ayudar en el metodo de Analizador que se encuentra en el archivo que adjunto junto a una lista de las palabras reservadas (que ya la lee y guarda en una matriz) y un archivo de ejemplo (que tambien lo lee y lo guarda en un String)