04 - Guia-2

12
Compiladores. Guía N° 2 Facultad: Ingeniería Escuela: Sistemas, Informática Asignatura: Compiladores Tema: Autómata de Estado Finito En esta guía se aborda la aplicación de los autómatas en el campo de los procesadores de lenguaje, haciendo énfasis en los Autómatas de Estado Finito. Conocer las características básicas de un Autómata de Estado Finito. Crear algunas secuencias de cadenas evaluadas por un Autómata Finito en Jflap. Guía No 2. El simulador Jflap Aplicación de los autómatas en los procesadores de lenguaje La Tarea de comprobar si una sentencia pertenece o no a un determinado lenguaje se encomienda a los autómatas. En el campo de estudio de los traductores, compiladores, procesadores e intérpretes los autómatas se utilizan como reconocedores de lenguajes, que dada una cadena de símbolos indican si dicha cadena pertenece o no al lenguaje. Ing. Carlos Enrique Chinga Ramos 1 Contenido Objetivos Material y Introducción

Transcript of 04 - Guia-2

Page 1: 04 - Guia-2

Compiladores. Guía N° 2

Facultad: IngenieríaEscuela: Sistemas, InformáticaAsignatura: Compiladores

Tema: Autómata de Estado Finito

En esta guía se aborda la aplicación de los autómatas en el campo de los procesadores de lenguaje, haciendo énfasis en los Autómatas de Estado Finito.

Conocer las características básicas de un Autómata de Estado Finito. Crear algunas secuencias de cadenas evaluadas por un Autómata Finito en Jflap.

Guía No 2. El simulador Jflap

Aplicación de los autómatas en los procesadores de lenguaje

La Tarea de comprobar si una sentencia pertenece o no a un determinado lenguaje se encomienda a los autómatas. En el campo de estudio de los traductores, compiladores, procesadores e intérpretes los autómatas se utilizan como reconocedores de lenguajes, que dada una cadena de símbolos indican si dicha cadena pertenece o no al lenguaje.

Una cadena pertenece a un lenguaje si el autómata reconocedor de dicho lenguaje lo toma como entrada, y partiendo del estado inicial transita a través de varias configuraciones hasta que alcanza el estado final.

Autómatas finitos

Un autómata finito es un conjunto de nodos y aristas que representan trayectorias para generar una expresión bajo un alfabeto. Un diagrama de transición es un autómata finito. Existen dos tipos autómatas finitos, los cuales son:

Autómatas finitos deterministas (AFD) Autómatas finitos no deterministas (AFND)

Ing. Carlos Enrique Chinga Ramos 1

Contenido:

Objetivos Específicos:

Material y Equipo:

Introducción Teórica

Page 2: 04 - Guia-2

Compiladores. Guía N° 2

Autómatas finitos deterministas (AFD)

Definición. Una máquina de estados finitos M es un quíntuplo (K, Σ, δ, s, F), donde:

K es conjuntos de estados.

Σ es el alfabeto de entrada.

δ : K X Σ → K, es la función de transición, que a partir de un estado y un símbolo 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 función de transición, que a partir de un estado y un símbolo del alfabeto obtiene un nuevo estado.

Ejemplo:

Figura 1. Autómata Finito Determinista

Este autómata finito determinista puede ser expresado formalmente como:

M = (K, Σ, δ, 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 }

Ing. Carlos Enrique Chinga Ramos 2

Page 3: 04 - Guia-2

Compiladores. Guía N° 2

IMPORTANTE: Para que un AFD sea válido, el número de transiciones que salen de cada estado debe ser igual a la cantidad de caracteres del alfabeto, puesto que δ es una función 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 condición es que debe tener exactamente un estado inicial. En cambio, la cantidad de estados finales puede ser cualquiera, inclusive cero, hasta un máximo de |K| (la cantidad de estados).

Autómatas finitos no deterministas (AFND)

Una extensión de los AFD’S es la de permitir que de cada estado o nodo del diagrama de estados salga un número de flechas mayor o menor que |Σ|. Así se puede permitir que falte la flecha correspondiente a alguno de los símbolos 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 vacía.

Definición. Un autómata finito no determinista es un quíntuplo (K, Σ, Δ, s, F), donde K, Σ, s y F tienen el mismo significado para el caso de los AFD y Δ, llamada la relación de transición, es un subconjunto finito K X Σ* X K.

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

Figura 2. Autómata Finito No Determinista

Solución. La palabra baabbaba puede ser dividida en cuatro pedazos: p1 = b, p2 = a, p3 = abbab y p4 = a, cuya concatenación produce la palabra original. Ahora bien, podemos seguir la siguiente secuencia de estados (trayectoria) en el AFND dado:

Ing. Carlos Enrique Chinga Ramos 3

Page 4: 04 - Guia-2

Compiladores. Guía N° 2

Los autómatas finitos se pueden utilizar para reconocer las expresiones regulares asociadas a los componentes léxicos en los lenguajes de programación.

PARTE I. (Simulación de un autómata de estado finito en Jflap).

Se desea construir una gramática que describe el lenguaje formado por los identificadores de un lenguaje de programación.

Los identificadores de este lenguaje pueden estar formados por las tres primeras letras minúsculas (a,b,c) y el guion bajo(_). Sin embargo, un identificador no puede comenzar por un guion bajo(_).

Crearemos un autómata para validar los identificadores de este lenguaje

Ingrese al Jflap (su instructor le indicará la ubicación para acceder a este aplicativo). Una vez cargada la aplicación se le mostrará la siguiente ventana:

Figura 3. Pantalla de inicio de Jflap

Ing. Carlos Enrique Chinga Ramos 4

Procedimiento

Page 5: 04 - Guia-2

Compiladores. Guía N° 2

Presione el botón Finite Automaton y se deberá cargar la siguiente ventana:

Figura 4. Ventana de edición 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 operación 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 autómata.

Para crear una transición de un estado hacia el mismo, ubíquese en el estado y haga un doble clic.

Y la calavera es para eliminar

Ing. Carlos Enrique Chinga Ramos 5

Page 6: 04 - Guia-2

Compiladores. Guía N° 2

Figura 5. Creación del AF, parte 1/3

Luego de haber agregado los estados, es el momento de indicar cuál es el estado inicial y final, para ello debe estar en modo selección, luego clic derecho del mouse sobre el estado y observará el siguiente submenú:

Figura 6. Creación del AF, parte ½

Ing. Carlos Enrique Chinga Ramos 6

Page 7: 04 - Guia-2

Compiladores. Guía N° 2

Defina el estado q0 como estado inicial y q1 como estado de aceptación. El diagrama debe verse más o menos de la siguiente forma:

Figura 7. Creación del AF, parte 3/3

Para probar el autómata, seleccione Step by State del menú Input para evaluar carácter por carácter de la cadena digitada.

Figura 8. Evaluación de una cadena por el AF, parte 1/3

Ing. Carlos Enrique Chinga Ramos 7

Page 8: 04 - Guia-2

Compiladores. Guía N° 2

Digite la cadena:

Figura 9. Evaluación de una cadena por el AF, parte 2/3

Presione Aceptar para analizar la cadena de estado a estado (carácter por carácter).

El resultado es la siguiente ventana, donde debe dar clic sobre el botón Step para ir observando paso a paso la ejecución del autómata.

Figura 9. Evaluación de una cadena por el AF, parte 3/3

Evalué las siguientes cadenas en el autómata creado y marque con una X las que son aceptadas por este:

Ing. Carlos Enrique Chinga Ramos 8

Page 9: 04 - Guia-2

Compiladores. Guía N° 2

Ejercicios:

1. Verificar si el siguiente AFD es válido para las siguientes palabras

a) aaab) ababc) aaaaa

2. Realizar el Gráfico del siguiente enunciado:

{w ε {a,b} * | ∃ w’ : w’aba}

3. Realizar el Gráfico del siguiente enunciado:

{w ε {a,b} * | ∃ w’ : w’aaa}

4. Realizar el Gráfico del siguiente enunciado:

{w ε {a,b} * | ∃ w’ : w’aab}

Ing. Carlos Enrique Chinga Ramos 9