ER (_ letra) (letra numero _)*
Ademas debe aceptar palabras reservadas como el for, while do, break.
package Javaapplet2;
import javax.swing.JOptionPane;
/**
*
* @author Carlos Alfredo
*/
public class Lexico2 {
public String comprueba(String palabra)
{
String nuevacadena=palabra+ '%';
int tam=nuevacadena.length();
String resultado=null;
int mat [][]=new int [5][4];
// TABLA DE TRANSICIONES
// l N - FC
mat[1][0]=2; mat[1][1]=4; mat[1][2]=2; mat[1][3]=90;
mat[2][0]=3; mat[2][1]=3; mat[2][2]=3; mat[2][3]=100;
mat[3][0]=3; mat[3][1]=3; mat[3][2]=3; mat[3][3]=100;
mat[4][0]=4; mat[4][1]=4; mat[4][2]=4; mat[4][3]=90;
//comienza el ciclo, donde compara cada una de las letras de la palabra.
int x=0,y=0,z;
for(int i=0;i<1;i++) z="i;" z="z+1;" z="z+1;" x="1;" z="i;" z="z+1;" x="2;" z="i;" z="z+1;" z="z+1;" z="z+1;" z="z+1;" x="3;" k="k+1;}" z="i;" z="z+1;" z="z+1;" z="z+1;" z="z+1;" x="4;" ren="1," col="0;" y="0;" reng="1,colu=" i="0;i
if(Character.isLetter(nuevacadena.charAt(i)))
{
colu=0;
reng=mat[reng][colu];
}
if(Character.isDigit(nuevacadena.charAt(i)))
{
colu=1;
reng=mat[reng][colu];
}
if(nuevacadena.charAt(i)=='-')
{
colu=2;
reng=mat[reng][colu];
}
if(nuevacadena.charAt(i)=='%') //Marca el fin de cadena
{
nuevacadena=palabra;
colu=3;
if(mat[reng][colu]==100)
{
resultado= "Cadena Valida";
}
else
resultado= "Cadena Invalida";
}
}
}
}catch (ArrayIndexOutOfBoundsException exc)
{
}
return resultado;
}
}
Creacion del applet :
Programacion del boton:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
JOptionPane.showMessageDialog(null, jTextField1.getText());
Lexico2 app= new Lexico2();
jTextField2.setText(app.comprueba(jTextField1.getText()));
}

No hay comentarios:
Publicar un comentario