Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porSosimo Bejarano Modificado hace 9 años
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
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.