Vous êtes sur la page 1sur 0

UNIVERSIDAD TECNOLOGICA DE LOS ANDES

CARRERA PROFESIONAL DE INGENIERIA DE SISTEMAS E INFORMATICA



TEORIA DE COMPILADORES
AUTMATAS DE ESTADO FINITOS
CONTENIDO
En esta gua se aborda la aplicacin de los autmatas en el
campo de los procesadores de lenguaje, haciendo nfasis en
los Autmatas de Estado Finito.
OBJETIVOS ESPECFICOS
Conocer las caractersticas bsicas de un Autmata de
Estado Finito.
Crear algunas secuencias de cadenas evaluadas por
un Autmata Finito en Jflap, e implementarlos en C++.
MATERIAL Y EQUIPO
Computadora con Dev-C++ y el simulador Jflap.
Dispositivo de Almacenamiento (USB).
INTRODUCCIN TERICA
Aplicacin de los autmatas en los procesadores de lenguaje
La tarea de comprobar si una sentencia pertenece o no a un
determinado lenguaje se encomienda a los autmatas. En
el campo de estudio de los traductores, compiladores,
procesadores e intrpretes los autmatas se utilizan como
reconocedores de lenguajes, que dada una cadena de smbolos
indican si dicha cadena pertenece o no al lenguaje.
Una cadena pertenece a un lenguaje si el autmata reconocedor
de dicho lenguaje lo toma como entrada, y partiendo del
estado inicial transita a travs de varias configuraciones
hasta que alcanza el estado final
Autmatas finitos
Un autmata finito es un conjunto de nodos y
aristas que representan trayectorias para generar una
expresin bajo un alfabeto. Un diagrama de transicin es
un autmata finito. Existen dos tipos autmatas finitos, los
cuales son:
Autmatas finitos deterministas (AFD)
Autmatas finitos no deterministas (AFND)
UNIVERSIDAD TECNOLOGICA DE LOS ANDES
CARRERA PROFESIONAL DE INGENIERIA DE SISTEMAS E INFORMATICA

Autmatas finitos deterministas (AFD)
Definicin. Una mquina de estados finitos M es un quntuplo
(K, Z, 5, s, F), donde:
K es conjuntos de estados.
es el alfabeto de entrada.
: K X K, es la funcin de transicin, que a partir
de un estado y un smbolo del alfabeto obtiene un nuevo
estado.
s K es el estado inicial.
F K es un conjunto de estados finales.
: K X K, es la funcin de transicin, que a partir
de un estado y un smbolo del alfabeto obtiene un nuevo
estado.
Ejemplo:

Figura 1. Autmata Finito Determinista
Este autmata finito determinista puede ser expresado
formalmente como: M = (K, Z, 5, q0, F)
K = {q0, q1, q2}
= {a, b}
= {((q0, a), q1), ((q0, b), q2), ((q1, a), q1), ((q1,
b), q1), ((q2, a), q0), ((q2, b), q2)}
F = {q1, q2}

Diagrama de transiciones determinista.
Estar caracterizado porque debe estar totalmente definido:
para cada estado solo debe salir un arco y solo uno para
cada smbolo (el autmata no puede determinar la transicin
en el caso de que haya dos arcos con el mismo smbolo o no
haya ninguno).
Smbolos
UNIVERSIDAD TECNOLOGICA DE LOS ANDES
CARRERA PROFESIONAL DE INGENIERIA DE SISTEMAS E INFORMATICA


Importante: Para que un AFD sea vlido, el nmero de
transiciones que salen de cada estado debe ser igual a la
cantidad de caracteres del alfabeto, puesto que es una
funcin que est definida para todas las entradas posibles.
Para el AFD anterior, el alfabeto es {a, b} de cada estado
deben salir exactamente dos transiciones, una con a y otra
con b.
Otra condicin es que debe tener exactamente un estado
inicial. En cambio, la cantidad de estados finales puede
ser cualquiera, inclusive cero, hasta un mximo de |K| (la
cantidad de estados).

Autmatas finitos no deterministas (AFND)

Una extensin de los AFDS es la de permitir que de cada estado
o nodo del diagrama de estados salga un nmero de flechas mayor
o menor que ||. As se puede permitir que falte la flecha
correspondiente a alguno de los smbolos del alfabeto, o bien
que haya varias flechas que salgan de un solo nodo con la misma
etiqueta. Inclusive se permite que las transiciones tengan como
etiqueta palabras de varias letras o hasta la palabra vaca.
Definicin. Un autmata finito no determinista es un quntuplo
(K, , , s, F), donde K, , s y F tienen el mismo significado
para el caso de los AFD y , llamada la relacin de transicin,
es un subconjunto finito K X * X K.
UNIVERSIDAD TECNOLOGICA DE LOS ANDES
CARRERA PROFESIONAL DE INGENIERIA DE SISTEMAS E INFORMATICA

Ejemplo. Verificar si la palabra baabbaba es aceptada por el
autmata finito no determinista siguiente:

Figura 2. Autmata Finito No Determinista
Solucin. La palabra baabbaba puede ser dividida en cuatro
pedazos: p1 = b, p2 = a, p3 = abbab y p4 = a, cuya
concatenacin produce la palabra original. Ahora bien,
podemos seguir la siguiente secuencia de estados
(trayectoria) en el AFND dado:
Estado Cadena que consume Produce estado
1 B 1
1 A 1
1 abbab 2
2 A 2
As probamos que la cadena baabbaba es aceptada por el AFND.

Procedimiento
Los autmatas finitos se pueden utilizar para reconocer las
expresiones regulares asociadas a los componentes lxicos en
los lenguajes de programacin.
PARTE I. (Simulacin de un autmata de estado finito en
Jflap)
Se desea construir una gramtica que describe el lenguaje
formado por los identificadores de un lenguaje de
programacin.
Los identificadores de este lenguaje pueden estar formados
por las tres primeras letras minsculas (a,b,c) y el guion
bajo(). Sin embargo, un identificador no puede comenzar por
un guion bajo().
Crearemos un autmata para validar los identificadores de
este lenguaje
Ingrese al Jflap (su instructor le indicar la ubicacin para
acceder a este aplicativo). Una vez cargada la aplicacin se
le mostrar la siguiente ventana:
UNIVERSIDAD TECNOLOGICA DE LOS ANDES
CARRERA PROFESIONAL DE INGENIERIA DE SISTEMAS E INFORMATICA


Figura 3. Pantalla de inicio de Jflap
Presione el botn Finite Automaton y se deber cargar
la siguiente ventana:

Figura 4. Ventana de edicin de un AF en Jflap
Cree el diagrama de la figura 5 en base a la siguiente ayuda:
Primero seleccione de la barra de men la operacin a realizar,
por ejemplo:
Para crear estados El circulo.
La flecha con punta rellena es para seleccionar , la otra
flecha que apunta hacia la derecha es para indicar las
transiciones, tiene que crear las que sean necesarias o
indicadas en su autmata.
UNIVERSIDAD TECNOLOGICA DE LOS ANDES
CARRERA PROFESIONAL DE INGENIERIA DE SISTEMAS E INFORMATICA

Para crear una transicin de un estado hacia el mismo, ubquese
en el estado y haga un doble clic.
Y la calavera es para eliminar.

Figura 5. Creacin del AF, parte 1/3
Luego de haber agregado los estados, es el momento de indicar
cul es el estado inicial y final, para ello debe estar en
modo seleccin, luego clic derecho del mouse sobre el estado
y observar el siguiente submen:


Figura 6. Creacin del AF, parte 1/2
Defina el estado q
0
como estado inicial y q
1
como estado de
aceptacin. El diagrama debe verse ms o menos de la
siguiente forma:
UNIVERSIDAD TECNOLOGICA DE LOS ANDES
CARRERA PROFESIONAL DE INGENIERIA DE SISTEMAS E INFORMATICA


Figura 7. Creacin del AF, parte3/3
Para probar el autmata, seleccione Step by State del men
Input para evaluar carcter por carcter de la cadena
digitada.

Figura 8. Evaluacin de una cadena por el AF, parte 1/3
Digite la cadena:

Figura 9. Evaluacin de una cadena por el AF, parte 2/3
UNIVERSIDAD TECNOLOGICA DE LOS ANDES
CARRERA PROFESIONAL DE INGENIERIA DE SISTEMAS E INFORMATICA



Presione Aceptar para analizar la cadena de estado a estado
(carcter por carcter).
El resultado es la siguiente ventana, donde debe dar clic
sobre el botn Step para ir observando paso a paso la
ejecucin del autmata.

Figura 9. Evaluacin de una cadena por el AF, parte 3/3
Evalu las siguientes cadenas en el autmata creado y marque
con una X las que son aceptadas por este:



Dicha cadena deber ser aceptada (verde) si se llega al
estado final cumpliendo con las reglas del alfabeto
(gramtica) definida por el autmata (de estado a estado). Si
un carcter no forma parte del alfabeto del autmata (si no
es reconocido) o no cumple con las reglas entre un estado y
otro, entonces la cadena es rechazada (rosado).
El autmata puede ser guardado, para ello utilizar el men
File y la opcin Save / Save As

UNIVERSIDAD TECNOLOGICA DE LOS ANDES
CARRERA PROFESIONAL DE INGENIERIA DE SISTEMAS E INFORMATICA

PARTE II. (Simulacin de un autmata de estado finito en C++)
Crearemos un pequeo programa en C++ que simule en autmata
de pila creado en la parte I.

Una forma sencilla de implementar autmatas es mediante
bucles anidados.

Usamos una variable para almacenar el estado actual y una
estructura de seleccin mltiple doblemente anidada. La
primera estructura de seleccin comprueba el estado actual y
el siguiente el carcter en la entrada. Las transiciones se
corresponden con asociar un nuevo estado a la variable y
avanzar en la entrada.
Digite y compile el siguiente cdigo fuente en C++
#include <iostream>
#include <string> using
namespace std;
bool simular_af(char *c) {
int pos = 0; //posicion del caracter a evaluar en la cadena
int state = 0; //estado del automata
int longitud = strlen(c);
while( (state == 0 || state == 1) && pos < longitud)
{
switch(state) {
case 0://estado 0
switch(c[pos]) {
case 'a':
state = 1; break; case
'b':
state = 1; break; case
'c':
state = 1; break; default:
return false; };
break; case 1://estado 1
switch(c[pos])
{
case 'a':
state break;
case 'b':
state break;
case 'c':
state break;
case '_':

state = 1;
break; default:
return false;
};
break;
default:
return false; //error, el estado solo puede ser 0||1
};
pos++; }; if(state == 1)//estado de aceptacion
1;
1;
1;
UNIVERSIDAD TECNOLOGICA DE LOS ANDES
CARRERA PROFESIONAL DE INGENIERIA DE SISTEMAS E INFORMATICA

return true;
else
return false;
}
int main(){
char cadena[80];
cout<<"Ingrese la cadena a analizar: ";
cin.getline(cadena,80);
if(!simular_af(cadena))
cout<<"Error: Identificador no valido"<<endl;
else
cout<<"La cadena '"<<cadena<<"' es un identificador valido"<<endl;
system("pause");
return 0;
}
Evalu las siguientes cadenas en el autmata creado y marque
con una X las que son aceptadas por este:








Actividades para resolver:
1: Actividad
Construya un autmata que cumpla con las caractersticas
presentadas por la tabla de transiciones siguiente:
Estado Smbolo de Entrada

2: Actividad
Describa las cadenas que acepta el autmata finito
determinista representado en el siguiente diagrama de
transiciones:


3: Actividad
Identifique otro autmata finito determinista de la vida
diaria y dibuje su diagrama de transiciones.

Vous aimerez peut-être aussi