Você está na página 1de 15

/*

Automata.java
Este es un automata que valida cadenas a partir de un archivo de texto.
Las condiciones son:
La cadena debe de empezar por una o ms letras maysculas (L) (Cualquier letra del
abecedario),
seguido de una o ms letras minsculas (l) (Cualquier letra del abecedario),
despus puede seguir un digito cualquiera una o ms veces (d),
y ah puede terminar el autmata.
Sin embargo entra una condicin ms que contempla la entrada de un guion bajo (_)
y seguido de un digito una o ms veces.
Concluye cuando despus de la cadena se encuentra con un Enter, un Tabulador o un
Espacio.
Scorpion Black 2009
http://vscorpionblack.blogspot.com
*/
import java.io.*;
public class Automata
{
public static void main(String args[]) throws IOException
{
String cadena;
String cadena2;
try
{
BufferedReader n=new BufferedReader(new
FileReader("Cadenas.txt"));
while((cadena=n.readLine())!=null){
//cadena=n.readLine();
comprueba(cadena);
}
}
catch(FileNotFoundException e)
{
System.out.println("No se encuentra el archivo");
}

}
public static void comprueba(String palabra)
{
String nuevacadena=palabra;
int tam=nuevacadena.length();
int matriz [][]=new int [4][8];

//

[4]=200;
[4]=200;
[4]=200;
[4]=100;

L
_

enter
matriz[0][0]=1;
matriz[0][5]=200;
matriz[1][0]=1;
matriz[1][5]=200;
matriz[2][0]=0;
matriz[2][5]=200;
matriz[3][0]=0;
matriz[3][5]=100;

l
d
espacio
cualquier simbolo
matriz[0][1]=0; matriz[0][2]=0; matriz[0][3]=0;
matriz[0][6]=200; matriz[0][7]=0;
matriz[1][1]=2; matriz[1][2]=0; matriz[1][3]=0;
matriz[1][6]=200; matriz[0][7]=0;
matriz[2][1]=2; matriz[2][2]=3; matriz[2][3]=0;
matriz[2][6]=200; matriz[0][7]=0;
matriz[3][1]=0; matriz[3][2]=3; matriz[3][3]=2;
matriz[3][6]=100; matriz[0][7]=0;

int ren=0,col=0,flag=0;
try
{
for(int i=0;i<tam;i++)
{
switch(nuevacadena.charAt(i))
{
case 'A':
System.out.print("A");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'B':
System.out.print("B");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'C':
System.out.print("C");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'D':
System.out.print("D");
col=0;
if(ren==0||ren==1)

tabular
matriz[0]
matriz[1]
matriz[2]
matriz[3]

else

ren=matriz[ren][col];
flag=1;

break;
case 'E':
System.out.print("E");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'F':
System.out.print("F");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'G':
System.out.print("G");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'H':
System.out.print("H");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'I':
System.out.print("I");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;

break;
case 'J':
System.out.print("J");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'K':
System.out.print("K");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'L':
System.out.print("L");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'M':
System.out.print("M");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'N':
System.out.print("N");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;

case 'O':
System.out.print("O");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'P':
System.out.print("P");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'Q':
System.out.print("Q");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'R':
System.out.print("R");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'S':
System.out.print("S");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'T':
System.out.print("T");
col=0;

if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'U':
System.out.print("U");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'V':
System.out.print("V");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'W':
System.out.print("W");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'X':
System.out.print("X");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'Y':
System.out.print("Y");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else

flag=1;
break;
case 'Z':
System.out.print("Z");
col=0;
if(ren==0||ren==1)
ren=matriz[ren][col];
else
flag=1;
break;
case 'a':
System.out.print("a");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 'b':
System.out.print("b");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 'c':
System.out.print("c");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 'd':
System.out.print("d");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;

case 'e':
System.out.print("e");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 'f':
System.out.print("f");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 'g':
System.out.print("g");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 'h':
System.out.print("h");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 'i':
System.out.print("i");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 'j':
System.out.print("j");

col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 'k':
System.out.print("k");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 'l':
System.out.print("l");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 'm':
System.out.print("m");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 'n':
System.out.print("n");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 'o':
System.out.print("o");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];

else

flag=1;

break;
case 'p':
System.out.print("p");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 'q':
System.out.print("q");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 'r':
System.out.print("r");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 's':
System.out.print("s");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 't':
System.out.print("t");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;

break;
case 'u':
System.out.print("u");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 'v':
System.out.print("v");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 'w':
System.out.print("w");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 'x':
System.out.print("x");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 'y':
System.out.print("y");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case 'z':

System.out.print("z");
col=1;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case '0':
System.out.print("0");
col=2;
if(ren==1||ren==2)
ren=matriz[ren][col];
else
flag=1;
break;
case '1':
System.out.print("1");
col=2;
if(ren==2||ren==3)
ren=matriz[ren][col];
else
flag=1;
break;
case '2':
System.out.print("2");
col=2;
if(ren==2||ren==3)
ren=matriz[ren][col];
else
flag=1;
break;
case '3':
System.out.print("3");
col=2;
if(ren==2||ren==3)
ren=matriz[ren][col];
else
flag=1;
break;
case '4':
System.out.print("4");
col=2;
if(ren==2||ren==3)

else

ren=matriz[ren][col];
flag=1;

break;
case '5':
System.out.print("5");
col=2;
if(ren==2||ren==3)
ren=matriz[ren][col];
else
flag=1;
break;
case '6':
System.out.print("6");
col=2;
if(ren==2||ren==3)
ren=matriz[ren][col];
else
flag=1;
break;
case '7':
System.out.print("7");
col=2;
if(ren==2||ren==3)
ren=matriz[ren][col];
else
flag=1;
break;
case '8':
System.out.print("8");
col=2;
if(ren==2||ren==3)
ren=matriz[ren][col];
else
flag=1;
break;
case '9':
System.out.print("9");
col=2;
if(ren==2||ren==3)
ren=matriz[ren][col];
else
flag=1;

break;
case '_':
System.out.print("_");
col=3;
if(ren==3)
ren=matriz[ren][col];
else
flag=1;
break;
case 32:
col=4;
ren=matriz[ren][col];
if(ren==100) //estado de aceptacin
{

System.out.println(" Cadena Valida \n");


ren=0;

else if(ren==200||flag==1)
{

//estado de error

System.out.print(" Cadena invalida \n");


ren=0;
}
break;
case 9:
col=5;
ren=matriz[ren][col];
if(ren==100) //estado de aceptacin
{

System.out.println(" Cadena Valida \n");


ren=0;

else if(ren==200||flag==1)
{

//estado de error

System.out.print(" Cadena invalida \n");


ren=0;
}
break;
case 11:
col=6;
ren=matriz[ren][col];
if(ren==100) //estado de aceptacin

{
System.out.println(" Cadena Valida \n");
ren=0;
}
else if(ren==200||flag==1)
{

}
break;

//estado de error

System.out.print(" Cadena invalida \n");


ren=0;

default:
System.out.print(nuevacadena.charAt(i));
col=7;
if(ren==0||ren==1||ren==2)
flag=1;
ren=matriz[ren][col];
break;

}
}
catch (ArrayIndexOutOfBoundsException exc)
{
}
}
}

Você também pode gostar