La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Teoría de lenguajes y compiladores Analizadores lexicográficos

Presentaciones similares


Presentación del tema: "Teoría de lenguajes y compiladores Analizadores lexicográficos"— Transcripción de la presentación:

1 Teoría de lenguajes y compiladores Analizadores lexicográficos
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 Expresiones regulares
Contenidos Autómatas finitos Gramáticas Regulares Expresiones regulares

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

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

8 PROCESO RECONOCIMIENTO AF
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 Indicador de estado 1 6 2 Alfabeto de entrada 5 3 4

9 Análisis de expresiones regulares
RECONOCIMIENTO DE FRASES Automatas Finitos 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 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

10 LENGUAJE ACEPTADO POR UN AUTOMATA FINITO
Autómatas Finitos 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.

11 AUTOMATA FINITO NO DETERMINISTA
Automatas Finitos 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.

12 M esta representada por:
AUTOMATA FINITO NO DETERMINISTA Automatas Finitos Ejemplo: El siguiente grafo de transiciones corresponde a un AFN que reconoce el lenguaje: (a | b)* abb a a b b 1 2 3 b M esta representada por: Donde: P = { 0 , 1 , 2 , 3 } V = { a , b } So = { 0 } F = { 3 } estados entrada a b { 0 , 1} { 0 } 1 - { 2 } 2 { 3 }

13 AUTOMATA FINITO DETERMINISTA
Automatas Finitos 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.

14 M esta representada por:
AUTOMATA FINITO DETERMINISTA Autómatas Finitos Ejemplo: El siguiente grafo de transiciones corresponde a un AFD que reconoce el lenguaje: (a | b)* abb 1 2 3 a b Donde: P = { 0 , 1 , 2 , 3 } V = { a , b } So = { 0 } F = { 3 } M esta representada por: estados entrada a b { 1 } { 0 } 1 { 2 } 2 { 3 } Reconocer Secuencia de estados ababb , 1, 2, 1 , 2 , 3 ababaabb , 1, 2, 1, 2, 1, 1, 2, 3

15 Autómatas Finitos Ejercicio Diseñ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. a,c 1 2 b c Aceptación 3 a,b Error Solución 1 a,c a,b,c a,b b c 1 2 Solución 2

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

17 Gramáticas Regulares 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 | λ

18 Expresiones Regulares
Definición Expresiones Regulares 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 }

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

20 Identificador de un lenguaje de programación
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 = … + 9

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

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

23 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

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

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

26 Expresiones Regulares
EJEMPLO 3 Si ∑ = {a, b, c} entonces ∑2 = {aa, ab, ac, ba, bb, bc, ca, cb, cc} EJEMPLO 4 Sea § = {0, 1} y L = {01, 1}, entonces L3 = {010101, 01011, 01101, 0111, 10101, 1011, 1101, 111}

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

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

29 UNION DE LENGUAJES REGULARES
Expresiones Regulares Ejemplo: Sean y x 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. Nuevo estado inicial x y Anterior estado inicial

30 CONCATENACION DE LENGUAJES REGULARES
Expresiones Regulares Ejemplo: Sean 4 x x y y y x 1 2 3 T1 T2 Se procede de la siguiente forma: ·  A partir de cada extremo de aceptación de T1, dibuje un arco hacia cada estado de T2. ·  Rotule cada uno de estos arcos con las etiquetas del arco correspondiente T2. ·  Deje que los estados de aceptación de T1 sigan siendo estados de aceptación si solo si el estado inicial T2 es también un estado de aceptación.

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

32 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

33 M esta representada por:
Ejercicios 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. 1 M esta representada por: estados entrada 1 { 0 } { 1 } Donde: P = { 0 , 1 } V = { 0 , 1 } So = { 0 } F = { 1 }

34 M esta representada por:
Ejercicios 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: Donde: P = { q0 , q1, q2, q3 } V = { 0 , 1 } So = {q0 } F = { q0 }

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

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


Descargar ppt "Teoría de lenguajes y compiladores Analizadores lexicográficos"

Presentaciones similares


Anuncios Google