1 / 36

Teoría de lenguajes y compiladores

Teoría de lenguajes y compiladores. Unidad I. Analizadores lexicográficos. Semana 3. Autómatas finitos. Objetivo General.

len
Download Presentation

Teoría de lenguajes y compiladores

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Teoría de lenguajes y compiladores Unidad I Analizadores lexicográficos Semana 3 Autómatas finitos

  2. 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.

  3. Objetivos Específicos Desarrollar un analizador lexicográfico

  4. 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.

  5. DIAGRAMA PRINCIPAL AFN Autómatas AFD Expresiones Regulares Manejador de Tabla Implementación de AFD Especificación léxica

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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 }

  12. 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

  13. 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

  14. 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

  15. Investigar Transformación de un autómata finito no determinístico (AFN) a un autómata finito determinístico (AFD) Automatas Finitos

  16. 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

  17. 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

  18. 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

  19. 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

  20. 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

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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}

  26. COMPONENTES BASICOS DE UNA EXPRESION REGULAR a a + b = a | b b Expresiones Regulares a b ab a a*

  27. COMPONENTES BASICOS DE UNA EXPRESION REGULAR Ejemplo: t r s r*st* Expresiones Regulares Ejemplo: t r s (r*st*)(u(r*st*))* u

  28. 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

  29. 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.

  30. CONCATENACION DE LENGUAJES REGULARES Solución: x Expresiones Regulares y y x 1 2 3 4 x x y y

  31. 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

  32. 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 }

  33. 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 }

  34. Ejercicio Propuesto 3 Construir un AFD que reconozca la ocurrencia de la palabra 1011 en una cadena conformada por ceros y unos. Ejercicios

  35. Teoría de lenguajes y compiladores Unidad I Analizadores lexicográficos Semana 3 Autómatas finitos

More Related