lunes, 26 de octubre de 2009

Examen Unidad 1

Este es el codigo del analizador:

package analizador;
import java.io.*;
/**
*
* @author Miguel Falcon
*/
public class analizador {
public static void main(String args[]) throws IOException
{
String cadena;

try
{
BufferedReader n=new BufferedReader(new FileReader("C:/Users/Miguel Falcon/Desktop/cadenas.txt"));
while((cadena=n.readLine())!=null){
analizador(cadena);
}
}
catch(FileNotFoundException e)
{
System.out.println("No se encuentra el archivo");
}
}
public static void analizador(String palabra)
{
String cadena=palabra+'#';
int tam=cadena.length();
int matriz [][]=new int [5][4];
matriz [1][1]=2; matriz [1][2]=3; matriz [1][3]=90;
matriz [2][1]=2; matriz [2][2]=3; matriz [2][3]=100;
matriz [3][1]=2; matriz [3][2]=4; matriz [3][3]=100;
matriz [4][1]=4; matriz [4][2]=4; matriz [4][3]=90;
int fila=1, col=1;
try
{
for(int i=0;i{
if(cadena.charAt(i)=='a')
{
col = 1;
fila = matriz[fila][col];
}
if(cadena.charAt(i)=='b')
{
col = 2;
fila = matriz[fila][col];
}
if(cadena.charAt(i)=='#')
{
cadena=palabra;
col = 3;
if(matriz[fila][col]==100)
System.out.println(cadena+"\tPalabra Aceptada");
else
System.out.println(cadena+"\tPalabra No Aceptada");
}
}
}catch(ArrayIndexOutOfBoundsException exc){}
}
}

Este es el codigo de la instanciacion de la clase que contiene el analizador
y el codigo del boton y las cajas de texto para dirigir las impresiones de las validaciones:

clase_applet app = new clase_applet();
jTextField2.setText(app.analizador(jTextField1.getText()));

jueves, 15 de octubre de 2009

2do automata

package Applet;
 
/**
*
* @author Miguel Falcon
*/

/**

*Este es el codigo referente al analizador léxico que utilizamos para resolver el 2do autómata

*/


public class analApplet {
public String analizador(String palabra){
String cadena=palabra+'#';
String res = null;
int tam=cadena.length();
int arr1[][] = new int[4][5];
arr1[1][1]=2; arr1[1][2]=2; arr1[1][3]=3; arr1[1][4]=90;
arr1[2][1]=2; arr1[2][2]=2; arr1[2][3]=2; arr1[2][4]=100;
arr1[3][1]=3; arr1[3][2]=3; arr1[3][3]=3; arr1[3][4]=90;
 
int fila=1,col=1,a=0;
// try{
if(cadena.contentEquals("for#"))
{
fila=100;
a=tam;
}
if(cadena.equals("while#"))
{
fila=100;
a=tam;
}
if(cadena.equals("do#"))
{
fila=100;
a=tam;
}
if(cadena.equals("break#"))
{
fila=100;
a=tam;
}
for(int i=a;i

/*

*Este es el codigo que pertenece al botón, donde se crea la instanciacion de la clase de arriba

*y se manda por este medio el parámetro que analizara y el resultado a mostrar

*/
analApplet app = new analApplet();
jTextField2.setText(app.analizador(jTextField1.getText()));

martes, 13 de octubre de 2009

1er Codigo Analizador

package transiciones;

import java.io.*;
public class tarea
{
public static void main(String args[]) throws IOException
{
String cadena;


try
{

BufferedReader n=new BufferedReader(new FileReader("cadenas.txt"));
while((cadena=n.readLine())!=null){
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 [7][5];
// [a-z] [0-9] + * FC(0)
matriz[0][0]=1; matriz[0][1]=1; matriz[0][2]=3; matriz[0][3]=3; matriz[0][4]=90;
matriz[1][0]=4; matriz[1][1]=5; matriz[1][2]=2; matriz[1][3]=2; matriz[1][4]=100;
matriz[2][0]=1; matriz[2][1]=1; matriz[2][2]=6; matriz[2][3]=6; matriz[2][4]=90;
matriz[3][0]=3; matriz[3][1]=3; matriz[3][2]=3; matriz[3][3]=3; matriz[3][4]=90;
matriz[4][0]=4; matriz[4][1]=4; matriz[4][2]=4; matriz[4][3]=4; matriz[4][4]=90;
matriz[5][0]=5; matriz[5][1]=5; matriz[5][2]=5; matriz[5][3]=5; matriz[5][4]=90;
matriz[6][0]=6; matriz[6][1]=6; matriz[6][2]=6; matriz[6][3]=6; matriz[6][4]=90;

int ren=0,col=0;
try
{
for(int i=0;i[menorque]tam;i++)
{
if(Character.isLetter(nuevacadena.charAt(i)))
{
col=0;
ren=matriz[ren][col];
}
if(Character.isDigit(nuevacadena.charAt(i)))
{
col=1;
ren=matriz[ren][col];
}
if(nuevacadena.charAt(i)=='+')
{
col=2;
ren=matriz[ren][col];
}
if(nuevacadena.charAt(i)=='*')
{
col=3;
ren=matriz[ren][col];
}
if(nuevacadena.charAt(i)=='#')
{
nuevacadena=palabra;
col=4;
if(matriz[ren][col]==100)
{
System.out.print(nuevacadena+"\tCadena Valida\n");
}
else
System.out.print(nuevacadena+"\tCadena Invalida\n");
}
}
}catch (ArrayIndexOutOfBoundsException exc){}
}
}