La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Teoría de lenguajes y compiladores

Presentaciones similares


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

1 Teoría de lenguajes y compiladores
Unidad I Analizador lexicográfico Semana 3 Temas 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
Diseñar e implementar un analizador lexicográfico. Diseñar e implementar un analizador sintáctico. Diseñar e implementar un analizador semántico.

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
Temas 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. Los analizadores léxicos deben reconocer componentes léxicos en un flujo de caracteres, y estos componentes son elementos de un lenguaje regular, es decir, pueden ser generados por una gramática regular. Un autómata finito puede ser determinista (AFD) o no determinista (AFND), 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 AFND pueden reconocer con precisión a los conjuntos regulares.   Cinta 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 aaba que pertenece a L(G) tiene la siguiente derivación.   A  Ba  Cba  Caba  aaba Análisis de expresiones regulares Se lee de izquierda a derecha 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. No obstante, en cualquier situación encontramos que el 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 AFND 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 AFND 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 La tabla de transición del autómata es:
Autómatas Finitos EJEMPLO AFD, todas las cadenas con un número par de 0s y un número par de 1s La tabla de transición del autómata es:

16 Autómatas Finitos Ejercicio Diseñar un AFD, para reconocer palabras sobre {a, b, c} en las cuales toda b es inmediatamente seguida de al menos una c. a,c a,b,c a,b b c q0 q1 q2

17 Automatas Finitos TAREA Transformación de un autómata finito no determinístico (AFND) a un autómata finito determinístico (AFD)

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

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

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

21 Identificador de un lenguaje de programación
Expresiones Regulares Identificador de un lenguaje de programación En notación BNF <identificador>  <letra> ( <letra> | <digito>) <letra>  a | b | c …… | z <digito>  0 | 1 | 2 ….. | 9 En notación de expresión regular Identificador = letra (letra + digito)* letra = a + b + c + ……. + z digito = … + 9

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

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

24 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

25 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, 001, 0110}.

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

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

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

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

30 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

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

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

33 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

34 Ejercicio Propuesto 1 A B Ejercicios
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. A B 1

35 Teoría de lenguajes y compiladores
Unidad I Analizador lexicográfico Semana 3 Temas Autómatas finitos


Descargar ppt "Teoría de lenguajes y compiladores"

Presentaciones similares


Anuncios Google