390 likes | 876 Views
Teoría de lenguajes y compiladores. Unidad I. Analizadores lexicográficos. Semana 3. Autómatas finitos. Objetivo General.
E N D
Teoría de lenguajes y compiladores Unidad I Analizadores lexicográficos Semana 3 Autómatas finitos
Objetivo General El alumno al finalizar el curso podrá desarrollar aplicaciones que le permitan determinar si una estructura gramatical corresponde a una sentencia valida en la definición de un lenguaje en particular, teniendo en cuenta el contexto sintáctico y semántico. Así mismo estará capacitado para proponer nuevas formas estructurales en la definición de lenguajes de programación.
Objetivos Específicos Desarrollar un analizador lexicográfico
Objetivos Instruccionales Comprender el funcionamiento de los autómatas para el reconocimiento o aceptación de cadenas que forman parte o son generadas por un lenguaje.
DIAGRAMA PRINCIPAL AFN Autómatas AFD Expresiones Regulares Manejador de Tabla Implementación de AFD Especificación léxica
AUTOMATAS FINITOS • Son modelos matemáticos de los dispositivos que aceptan una entrada y producen una salida apropiada. La característica de un autómata es que la entrada pasa por varios estados para producir la salida. • Un autómata finito puede ser determinista (AFD) o no determinista (AFN), donde “no determinista” significa que en un estado se puede dar el caso de tener más de una transición para el mismo símbolo de entrada. Automatas Finitos
PROCESO RECONOCIMIENTO AF Tanto los AFD como los AFN pueden reconocer con precisión a los conjuntos regulares. Dispositivo de entrada a b a a … cabeza lectura dirección movimiento cabeza Mecanismo de control Automatas Finitos Indicador de estado 1 6 2 Alfabeto de entrada 5 3 4
RECONOCIMIENTO DE FRASES Ejemplo: Sea G = (N, T, P, S) T = { a , b } N = { A , B, C } P = { A Aa | Ba B Cb C Ca | a } S = { A } Que genera el lenguaje: L(G) = { am b an | n, m >= 1} Luego la frase aaabaa que pertenece a L(G) tiene la siguiente derivación. A Aa Baa Cbaa Cabaa Caabaa aaabaa Automatas Finitos Análisis de expresiones regulares Se lee de izquierda a derecha la frase y la acepta como elemento del lenguaje si se puede reducir al símbolo inicial de la gramática Ejemplo: aaabaa Estado inicial 1ra reduccion : Caabaa Regla : C a 2da reduccion : Cabaa Regla : C Ca 3ra reduccion : Cbaa Regla : C Ca 4ta reduccion : Baa Regla : B Cb 5ta reduccion : Aa Regla : A Ba 6ta reduccion : A Regla : A Aa
LENGUAJE ACEPTADO POR UN AUTOMATA FINITO Formalmente el lenguaje aceptado por un AF llamado A es: L(A)= w (q0,w) F Los lenguajes aceptados por AFs se conocen como regulares. Autómatas Finitos
AUTOMATA FINITO NO DETERMINISTA • Hay que reconocer que las cadenas que deben analizarse en una aplicación están construidas a partir de un conjunto de símbolos, y este conjunto de símbolos es finito. A este conjunto lo llamaremos alfabeto. • Este dispositivo consta de un conjunto finito de estados internos P entre los cuales hay un estado inicial específico So y un conjunto designado F de estados finales. • Un autómata finito no determinista consta de una quintupla (P, V , M, So , F ) donde: P es un conjunto de estados, finito y no vació. V es el alfabeto de entrada M es la f unción de transición de estados So es el estado inicial o de partida ( Soε P ) F es el conjunto de estados finales ( F С P ) • Una forma habitual de representar los autómatas finitos es mediante un grafo o diagrama de estados donde los nodos son los estados y las aristas están orientados con los símbolos de alfabeto que hacen que el autómata transite a un nuevo estado. Automatas Finitos
AUTOMATA FINITO NO DETERMINISTA Ejemplo:El siguiente grafo de transiciones corresponde a un AFN que reconoce el lenguaje: (a | b)* abb a a b b 3 2 1 0 Automatas Finitos b M esta representada por: Donde: P = { 0 , 1 , 2 , 3 } V = { a , b } So = { 0 } F = { 3 }
AUTOMATA FINITO DETERMINISTA • Un autómata finito determinista, es un caso especial de AFN en el cual: • a. Ningún estado tiene una transición vacía • b. Para cada estado S y cada símbolo de entrada a hay a lo sumo una arista etiquetada a que sale de S. • Un autómata finito determinista tiene a lo sumo una transición desde cada estado con cualquier entrada. Automatas Finitos
AUTOMATA FINITO DETERMINISTA Ejemplo: El siguiente grafo de transiciones corresponde a un AFD que reconoce el lenguaje: (a | b)* abb a a a b b 1 2 3 0 Autómatas Finitos b M esta representada por: Donde: P = { 0 , 1 , 2 , 3 } V = { a , b } So = { 0 } F = { 3 } Reconocer Secuencia de estados ababb 0, 1, 2, 1 , 2 , 3 ababaabb 0, 1, 2, 1, 2, 1, 1, 2, 3
a,c a,c b 1 1 0 3 c a,b 2 2 a,b,c a,c EjercicioDiseñar el grafo asociado a un AFD, para reconocer palabras sobre {a, b, c} en las cuales toda b es inmediatamente seguida de al menos una c. Autómatas Finitos b b c 0 Aceptación a,b Error Solución 1 Solución 2
Investigar Transformación de un autómata finito no determinístico (AFN) a un autómata finito determinístico (AFD) Automatas Finitos
Se denominan gramáticas regulares a una colección de terminales y no terminales, junto con un símbolo de inicio y un conjunto finito de reglas de reescritura. • Aquí usaremos una notación menos engorrosa. Salvo que se especifique lo contrario, representaremos a los no terminales con letras mayúsculas y a los terminales con letras minúsculas. • Una gramática regular se adhiere a las siguientes restricciones: • S aB | a | λ Gramáticas Regulares
Definición • Es una notación equivalente a la de un lenguaje regular o a un autómata • Los lenguajes regulares son reconocidos por autómatas finitos y son generados por gramáticas regulares. • Una tira de entrada t es reconocida o aceptada por un autómata finito si puede escribirse una secuencia de movimientos entre las configuraciones inicial y final. ( q0 , t ) * ( qi , ) donde qi pertenece a F • Por consiguiente, el conjunto de todas las tiras que son reconocidas por un autómata finito, esto es, el lenguaje deducido por un dispositivo de este tipo puede definirse como: L(AF) = { t / t T* , ( q0 , t ) * ( qi , ) , qi F } Expresiones Regulares
La expresión regular para un alfabeto T, permite definir un conjunto de tiras de caracteres, llamado conjunto regular, de la siguiente forma: • 1.Ø denota al conjunto vacío Ø • Ɛ denota el conjunto regular { γ } • Con a se indica a pertenece a T • 4.Si P y Q son dos expresiones regulares entonces: • P + Q denota P U Q • (P Q) denota P Q • c.(P*) denota P* Expresiones Regulares
Identificador de un lenguaje de programación En notación de expresión regular Identificador = letra (letra + digito)* letra = a + b + c + ……. + z digito = 0 + 1 + 2 + … + 9 Expresiones Regulares
También lo son: • Como ejemplo, si el alfabeto V fuera {X, Y, Z} entonces (X U (ZY)) seria una expresión regular ya que (ZY) también es una expresión regular y en consecuencia X U (ZY) también lo seria: • Cada expresión regular r de un alfabeto V representa un lenguaje denotado por L(r), que se construye a partir de bloques de construcción. Expresiones Regulares
Para ser más precisos: • a.L( ) es el lenguaje • b.L(x) es el lenguaje {x}, para cada x V • c.L((pUq)) = L(p) U L(q) • d.L((pq)) = L(p) L(q) • e.L(p*) = L(p)* • Por ejemplo, la expresión (X U (ZY)) representa el lenguaje {X,ZY}, es decir, representa el lenguaje generado al unir {X} con la concatenación de {Z} y {Y} • De forma similar la expresión ((XY)* U Z*) representa el lenguaje que consiste en cadenas de cero o más copias del patrón XY además de las cadenas de cero o mas Z. Expresiones Regulares
PROPIEDADES ALGEBRAICAS DE LAS EXPRESIONES REGULARES Axioma Descripción r | s s | r | es conmutativa r | ( s | t ) ( r | s ) | t | es asociativo ( r s ) t r ( s t ) La concatenación es asociativa r ( s | t ) r s | r t (s | t ) r sr | tr La concatenación distribuye sobre | r r r r es el elemento identidad r* ( r + )* La relación entre * y r** r * es idempotente Expresiones Regulares
EJEMPLO 1 Sean § = {0, 1} y L, M dos lenguajes sobre § dados por L ={1, 10} y M = {1, 01} Entonces: LM = {11, 101, 1001}. Mientras que ML = {11, 110, 011, 0110}. Expresiones Regulares
EJEMPLO 2 Dado V = {0; 1} y la Expresión Regular α = 0*10*, tenemos que: L(0*10*) = L(0*) L(1) L(0*) = (L(0))* L(1) (L(0))* = {0}*.{1}.{0}* = {0n10m | n, m 0} Expresiones Regulares
EJEMPLO 3 Si ∑ = {a, b, c} entonces ∑2 = {aa, ab, ac, ba, bb, bc, ca, cb, cc} Expresiones Regulares EJEMPLO 4 Sea § = {0, 1} y L = {01, 1}, entonces L3 = {010101, 01011, 01101, 0111, 10101, 1011, 1101, 111}
COMPONENTES BASICOS DE UNA EXPRESION REGULAR a a + b = a | b b Expresiones Regulares a b ab a a*
COMPONENTES BASICOS DE UNA EXPRESION REGULAR Ejemplo: t r s r*st* Expresiones Regulares Ejemplo: t r s (r*st*)(u(r*st*))* u
UNION DE LENGUAJES REGULARES Ejemplo:Sean x y y x Expresiones Regulares Cero o mas x seguidas de una y Cero o mas y seguidas de una x Para unirlos:se crea un nuevo estado inicial a partir del cual podamos entrar a uno de los diagramas originales sin poder regresar. x y Anterior estado inicial x y x y Nuevo estado inicial x y
CONCATENACION DE LENGUAJES REGULARES Ejemplo: Sean x x y y y x 1 2 3 4 Expresiones Regulares T1 T2 Se procede de la siguiente forma: ·A partir de cadaextremo de aceptación de T1, dibuje un arcohaciacadaestado de T2. ·Rotulecadauno de estos arcos con lasetiquetas del arcocorrespondiente T2. ·Dejeque los estados de aceptación de T1 sigansiendoestados de aceptaciónsi solo si el estadoinicial T2 estambién un estado de aceptación.
CONCATENACION DE LENGUAJES REGULARES Solución: x Expresiones Regulares y y x 1 2 3 4 x x y y
Reglas de precedencia de las Expresiones Regulares • El operador * tiene la precedencia más alta . • El siguiente en precedencia es el operador de concatenación. • Finalmente, se aplican los operadores de unión con sus operandos. Ejemplo: la expresión 01* + 1 se aplica así (0(1*))+1 Expresiones Regulares
0 1 1 0 1 0 Ejercicio Propuesto 1 Construir un autómata finito determinista que reconozca el lenguaje sobre {0, 1} que consiste de las palabras que terminan con 1, es decir, (0 + 1)*1. Ejercicios M esta representada por: Donde: P = { 0 , 1 } V = { 0 , 1 } So = { 0 } F = { 1 }
Ejercicio Propuesto 2 Construir un AFD que reconozca cadenas con un número par de 0s y/o un número par de 1s M esta representada por: Ejercicios Donde: P = { q0 , q1, q2, q3 } V = { 0 , 1 } So = {q0 } F = { q0 }
Ejercicio Propuesto 3 Construir un AFD que reconozca la ocurrencia de la palabra 1011 en una cadena conformada por ceros y unos. Ejercicios
Teoría de lenguajes y compiladores Unidad I Analizadores lexicográficos Semana 3 Autómatas finitos