Teoría de lenguajes y compiladores Analizadores lexicográficos

Slides:



Advertisements
Presentaciones similares
Autómata finito Determinista
Advertisements

Introducción ¿Qué es un Algoritmo?
INSTITUTO TECNOLÓGICO DE MINATITLÁN
Filminas Tercera Semana CI-1322 Autómatas y Compiladores Elaborado por: Sergio Pastrana Espinoza A33888.
Compiladores e intérpretes
Gramáticas Libres de Contexto
Conceptos básicos Def. Un símbolo es cualquier carácter imprimible.
Gramáticas.
Autómatas Finitos.
Diseño de AFN’s.
Lenguajes y Expresiones Regulares
Autómata Finito Un autómata finito (AF) es un modelo de computación muy restringido, sin embargo tiene una gran aplicación en reconocimiento de patrones.
Teoría de Autómatas y Compiladores
TIPOS DE GRAMATICAS JERARQUIAS DE CHOMSKY
Unidad 2. Análisis léxico
APLICACIONES DE AUTOMATAS Y EXPRESIONES REGULARES
Teoría de lenguajes y compiladores
Expresiones regulares
Tema 2 Autómatas finitos 1. Autómata finito determinista
Tema 1.- Lenguajes. Gramáticas
Traducción dirigida por la Sintaxis
Teoría de lenguajes y compiladores
EJERCICIOS DE EXPRESIONES REGULARES Y AUTOMATAS
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
Teoría de lenguajes y compiladores
Tema 1.- Lenguajes. Gramáticas
Tema 2 Lenguajes Formales.
Introducción a la Teoría de Lenguajes Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.
Programación de sistemas
Teoría de Conjuntos Prof. Carlos Coronel R..
Análisis sintáctico LR: SLR (LR simple)
Teoría de lenguajes y compiladores
Lenguajes Independientes del Contexto
Autómatas de Pila Teoría del Autómata.
CONTENIDO CONJUNTOS RELACIONES FUNCIONES CONJUNTOS.
ANALISIS SINTACTICO Parte I
Tema 2 Análisis Léxico.
Teoría de lenguajes y compiladores
Teoría de lenguajes y compiladores
Todo traductor esta basado en una gramática para el lenguaje fuente. Todo traductor esta basado en una gramática para el lenguaje fuente. Una gramática.
Tema 2 Autómatas finitos 1. Autómata finito determinista
Autómatas Finitos Es un diagrama de transiciones que permite identificar cadenas que pertenecen a un lenguaje. Puede ser determinista o no determinista.
Lenguajes regulares Teoría del Autómata.
Ejemplo de AFN Ej. Diseña un AFN que acepte todas las cadenas que contengan dos ceros consecutivos o dos unos consecutivos. Solución AFN q4 1 q2 q1 q0.
Teoría de Autómatas I 2º curso Ingeniería Técnica en Informática de Sistemas UNED.
MÁQUINAS DE TURING Teoría del Autómata.
Programación de Sistemas
Teoría de lenguajes y compiladores
Tomado de Sudkamp: Languages and Machines Cap. 6.
Análisis Léxico Área Software de Base.
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Lenguajes Formales y Autómatas
UNIVERSIDAD VALLE DEL MOMBOY FACULTAD DE INGENIERIA ESCUELA DE COMPUTACIÓN CATEDRA: EDUMATICA Br: JENNY CORONADO C.I
Programación de Sistemas FEI – 2008
1 AFDAFN AF Gramáticas lineales derecha Expresiones regulares Tema 2 Método de los AF Método de las derivadas Sistemas de Ecuaciones Tema 1.
UNIVERSIDAD LATINA (UNILA)
Teoría de lenguajes y compiladores
Teoría de lenguajes y compiladores
I.- ESTUDIO DE LOS LENGUAJES DE PROGRAMACIÓN.
El proceso de compilación
Presente un cuestionario con los aspectos mas importantes sobre los
Capítulo 3: Conjuntos Autor: José Alfredo Jiménez Murillo.
Unidad 3 Analizador Sintáctico
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
Programación de Sistemas
REPÚBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA EDUCACION SUPERIOR UNIVERSIDAD VALLE DEL MOMBOY CARVAJAL EDO. TRUJILLO ENERO 2014.
República Bolivariana de Venezuela Ministerio del Poder Popular para la Educación Superior Universidad Valle del Momboy Carvajal, Trujillo Alumnas Luzmila.
Unidad 2 Lenguajes, Expresiones Regulares, Autómatas
Centro Universitario Valle de México Gramáticas Libres de Contexto Dra. Maricela Quintana López Elaborado por: Autómatas y Lenguajes Formales.
Tema 2 Autómatas finitos 1. Autómata finito determinista
Transcripción de la presentación:

Teoría de lenguajes y compiladores Analizadores lexicográficos 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.

Expresiones regulares Contenidos Autómatas finitos Gramáticas Regulares Expresiones regulares

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

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.

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

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

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.

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.

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 }

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.

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 0, 1, 2, 1 , 2 , 3 ababaabb 0, 1, 2, 1, 2, 1, 1, 2, 3

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

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

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

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 }

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*

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

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} 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 Expresiones Regulares a b a + b = a | b ab a*

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

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

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.

Solución: CONCATENACION DE LENGUAJES REGULARES Expresiones Regulares x 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

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 }

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 }

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

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