Conversión de Gramáticas Libres de Contexto. EQUIPO 6 Jardón Jara Micheelle Enrique Perfecto Espinosa Valeria

Documentos relacionados
Gramáticas tipo 0 o Estructura de frase En este tipo de gramáticas no hay restricción en su producciones y tienen la forma siguiente.

Teoría de Autómatas y Lenguajes Formales.

Gramáticas independientes del contexto

TEMA 6 GRAMÁTICAS INDEPENDIENTES DEL CONTEXTO

Teoría de Lenguajes. Gramáticas incontextuales

TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Práctica 5 - Simplificación de gramáticas incontextuales

Clase 15: GLC s limpias y bien formadas

Gramáticas Libres de Contexto

Nivel del ejercicio : ( ) básico, ( ) medio, ( ) avanzado.

Teoría de Autómatas y Lenguajes Formales. Introducción a las Gramáticas. Gramáticas incontextuales

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.

Teoría de Autómatas y Lenguajes Formales.

Lenguajes Incontextuales

Examen de Teoría de Autómatas y Lenguajes Formales

Cátedra Sintaxis y Semántica del Lenguaje

Sea G = (V N, V T, S, P) una gramática libre de contexto, un árbol es un árbol de derivación para G si:

Se pueden agrupar las reglas que tienen la misma parte izquierda:

17 Análisis sintáctico II Compiladores - Profr. Edgardo Adrián Franco Martínez. Gramáticas limpias y bien formadas

Gramáticas Independientes del Contexto (GIC)

Curso Básico de Computación

Tema 5: Autómatas a pila. Teoría de autómatas y lenguajes formales I

Tema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I

Temas. Objetivo 07:00

Ciencias de la Computación I

14 Lenguajes y gramáticas II

1. Cadenas EJERCICIO 1

Introducción. Las gramáticas definen las reglas que definen a los lenguajes Las reglas pueden tener una diversa variedad de esquemas

GRAMÁTICAS y LENGUAJES INDEPENDIENTES DEL CONTEXTO

EJERCICIOS del TEMA 3: Lenguajes independientes del contexto

Eliminación de Símbolos Inútiles

Clase 12: Clasificación de gramáticas

Computabilidad y lenguajes formales: Sesión 19. Gramáticas Incontextuales (Context Free Grammars)

Ciencias de la Computación I

Tema 6: Compiladores e intérpretes. Teoría de autómatas y lenguajes formales I

Tema 3: Gramáticas Formales. Informática Teórica I

La Forma Normal de Chomsky

La Ambigüedad en el Parsing

ANÁLISIS SINTÁCTICO I GRAMÁTICAS

Tarea Nº 2 Introducción a la Informática Lema del Bombeo y Lenguajes de Contexto Libre

Tema 2 Gramáticas y Lenguajes Libres de Contexto

Lenguajes y Compiladores Aspectos Formales (Parte 2) Compiladores

Propiedades de lenguajes independientes del contexto

Proyecto Intermedio Algoritmo de Earley

Teoría de la Computación y Lenguajes Formales

Cualquier lenguaje de contexto libre, L, puede ser generado por medio de una GCL, G, que cumpla las siguientes condiciones:

Ejercicio Guía para obtener FNC y FNG. Forma Intermedia de Chomsky

DEFINICIONES BÁSICAS E INTRODUCCIÓN A LENGUAJES FORMALES

Ingeniería en Computación. Autómatas y Lenguajes Formales. Unidad de competencia IV: Conocer, utilizar y diseñar gramáticas de libre contexto

PROGRAMACIÓN II AÑO 2009 TALLER 3: TEORÍA DE LENGUAJES Y AUTÓMATAS

Propiedades de los Lenguajes Libres de Contexto

SSL Guia de Ejercicios

Jerarquía de Chomsky. 1. Clasificación de gramáticas. 2. Clasificación de lenguajes. 3. Gramáticas regulares. 5. Gramáticas dependientes del contexto

Clase 16: GLC s recursivas y no factorizadas Solicitado: Ejercicios 13: Recursividad y factorización de gramáticas

INGENIERÍA EN INFORMÁTICA MODELOS ABSTRACTOS DE COMPUTO I SOLUCIONES

Practica 05: Limpieza de gramáticas libres de contexto

Teoría de Autómatas y Lenguajes Formales.

Gramáticas de Atributos

INTRODUCCIÓN A COMPILADORES Y LENGUAJES FORMALES LENGUAJES FORMALES

Soluciones a los ejercicios

si w=ay por tanto a Σ e y Σ*

Teoría de Autómatas y Lenguajes Formales.

Máquinas Secuenciales, Autómatas y Lenguajes. Tema 4: Expresiones Regulares. Luis Peña

PRACTICA TEORIA DE LA COMPUTACION INGENIERIA EN SISTEMAS COMPUTACIONALES CATEDRATICA: LIC. YESENIA PEREZ REYES ALUMNO: EDUARDO DOMINGUEZ JUAREZ

Ciencias de la Computación I

Compiladores. Análisis Sintáctico Ascendente. Adrian Ulises Mercado Martínez. Facultad de Ingeniería, UNAM. 5 de septiembre de 2013

autómatas finitos y lenguajes regulares LENGUAJES FORMALES Y

Teoría de la Computación y Leguajes Formales

LENGUAJES Y GRAMÁTICAS

Texto: Hopcroft, J. E., Motwani, R., Ullman, J.D., Introduction to Automata Theory, Languajes, and Computation. 3rd Edition. Addison Wesley, 2007.

MODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular.

Teoría de la Computación y Lenguajes Formales

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002

B b A. Notar que las gramáticas utilizadas son sin recursión por la izquierda:

UNIVERSIDAD TECNOLOGICA DE PEREIRA FACULTAD DE INGENIERIAS

Gramáticas independientes del contexto TEORÍA DE LA COMPUTACIÓN LENGUAJES INDEPENDIENTES DEL CONTEXTO Y AUTÓMATAS DE PILA. Otras definiciones I

AUTÓMATAS DE PILA Y LENGUAJES INDEPENDIENTES DEL CONTEXTO

Autómatas Finitos Deterministicos (DFA)

Modelos De Computación. Guía Modelos de Computación. Tema I: Lenguajes y Gramáticas

Teoría de Lenguajes. Clase Teórica 1 Gramáticas y Jerarquía de Chomsky. Primer cuartimestre 2016

! "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Procesadores de Lenguaje

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 3.

El análisis descendente LL(1) 6, 7 y 13 de abril de 2011

TÍTULO: TIPO DE DOCUMENTO: FORMATO SISTEMA DE GESTIÓN DE LA CALIDAD DE INGENIERIA Y APLICACIONES OSRI

Lección 3: Fundamentos para el análisis sintáctico

Propiedades de los Lenguajes Libres de Contexto

NÚMEROS ENTEROS Y RACIONALES GUÍA DE EJERCITACIÓN Teorema de Thales y división de segmentos

TEORIA DE AUTOMATAS.

Matrices y operaciones con Matrices.

ESCUELA INTERNACIONAL DE IDIOMAS Avenida Pedro de Heredia, Calle 49a #31-45, barrio el Libano

NOTAS PARA LA MATERIA LENGUAJES DE PROGRAMACIÓN

Autómatas Finitos Deterministicos (DFA)

Las Gramáticas Formales

ELEMENTOS DE ALGEBRA LINEAL

ESCUELA: UNIVERSIDAD DEL ISTMO

Tema 5 Lenguajes independientes del contexto. Sintaxis

Matemáticas Discretas L. Enrique Sucar INAOE. Permutaciones y Combinaciones

!"#$%&%#'(!$#')! &*"%+',-%"*.#!"/&#'(!$#!-*"%+' #)%'%(%0*!!1$!"/&#'(!1$#1*!*$!1#'#!"#1!$##*-! *"%+'$#

Lenguajes independientes de contexto o incontextuales

Transcripción:

Conversión de Gramáticas Libres de Contexto EQUIPO 6 Jardón Jara Micheelle Enrique Perfecto Espinosa Valeria

Objetivo Desarrollar el tema de Conversión de Gramáticas Libres de Contexto (GLC): Algoritmos para la conversión a una gramática limpia, a una bien formada y a una normalizada según Chomsky (FNC), mediante una presentación de Power Point que incluya teoría y ejercicios sobre el mismo. Ejercicio Realizar los árboles de derivación de cada ejemplo explicado durante la presentación. Deberán ser 2 árboles por cada ejemplo: uno con la gramática inicial y otro con la gramática modificada, comprobando una cadena aceptada por ambos árboles. NOTA: 7 ejemplos en total.

Gramática Libre de Contexto (GLC) De tipo 2 según la Jerarquía de Chomsky. Elementos G= {V, T, S, P} donde: *V = Conjunto finito de símbolos No Terminales (MAYÚSCULAS). *T= Conjunto finito de símbolos Terminales (minúsculas). *S= Símbolo o elemento inicial (el arranque). *P= Reglas de Producción (Definición recursiva del lenguaje). FUENTE: Apuntes Profa. Hilda Yelitza Contreras Zambrano.

Gramática Limpia No contiene reglas innecesarias. No contiene símbolos superfluos. No contiene símbolos inaccesibles. Gramática Bien Formada Es limpia. No contiene reglas no generativas o producciones nulas (reglas ). No contiene reglas unitarias o de redenominación. FUENTE: Apuntes Profa. Hilda Yelitza Contreras Zambrano.

Conversión a Gramática Bien Formada Algoritmo para obtener una gramática bien formada. 1. Eliminar reglas innecesarias. 2. Eliminar reglas no generativas (reglas ). 3. Eliminar reglas unitarias. 4. Eliminar símbolos superfluos. 5. Eliminar símbolos inaccesibles. FUENTE: Apuntes Profa. Hilda Yelitza Contreras Zambrano.

Reglas innecesarias Una regla de la forma A::= A es innecesaria y puede ser eliminada. No se necesita seguir un algoritmo para eliminarse. Ejemplo (1) : Sea G = {V,T,S,P} con las siguientes producciones: S::=A B A::=A 0 B::=A B 1 2 se elimina A::=A y nos queda A::=0 FUENTE: Apuntes Profa. Hilda Yelitza Contreras Zambrano.

Reglas No Generativas Es una regla de la forma A::=, siendo A V. Los símbolos A, tales que A *, se denominan anulables. Algoritmo Sea la GLC G={V,T,S,P}. Transformamos G en G ={V,T,S,P } de forma que L(G)=L(G ). 1) Obtención de los símbolos anulables en G (conjunto SA). SA={A A V y (A::= ) P}.

2) Creación de G : 2.1 P =. 2.2 Se separa cada regla de producción y se sustituye de la siguiente forma: * Si un símbolo de la parte izquierda no es anulable ( SA) no se modifica. * Si un símbolo de la parte izquierda es anulable ( SA) se agrega una opción donde este símbolo se sustituye por. 2.3 De estas nuevas reglas se eliminan los que tienen la forma B::=, y de las reglas restantes se eliminan los. Las reglas resultantes se incluyen en P. 2.4 Si S SA entonces P = P {S::= }. FUENTE: Apuntes Profa. Hilda Yelitza Contreras Zambrano.

Ejemplo (2) Sea G una gramática definida por las siguientes reglas: S::=Aa B A::=Aa ba BE B::= bb b E::= 1) Obtención de los símbolos anulables en G (conjunto SA). SA= {B,E} (por B::= y E::= ) SA={B,E,S} SA={B,E,S,A} (por S::=B) (por A::=E)

SA={B,E,S,A} 2) Creación de G 2.1 P =. 2.2 y 2.3 S::= Aa S::=Aa a S::=Aa a S::= B S::=B S::= B A::= Aa A::=Aa a A::=Aa a A::= ba A::=bA b A::= ba b S::=Aa B A::=Aa ba BE B::= bb b E::= A::= BE A::= BE B E A::= BE B E B::= bb B::=bB b B::= bb b B::= b B::= b B::= b B::= B::= SE ELIMINA E::= E::= SE ELIMINA

2.4 Se añade la regla S::= porque S SA. Reglas de Producción modificadas: P = { S::=Aa a B A::= Aa a ba b BE B E B::= bb b } Ahora existe la regla A::=E. E es un símbolo superfluo que se eliminará más adelante según el algoritmo. FUENTE: Apuntes Profa. Hilda Yelitza Contreras Zambrano.

Reglas No Generativas Son de la forma A::=B, siendo A,B V Existen 2 algoritmos para eliminar reglas unitarias. 1) Algoritmo para derivaciones unitarias que no sean cíclicas de la forma: A B A. 2) Algoritmo general; funciona en todos los casos. FUENTE: Apuntes Profa. Hilda Yelitza Contreras Zambrano.

1) Algoritmo Simple Repetir Para cada regla unitaria A::=B se sustituye B por sus propias reglas. Hasta que no haya más reglas unitarias. Ejemplo (3) Sea G una gramática definida por las siguientes reglas: S::= Aa C E CE B::= bb b C::= B A::= Aa ba b B E::= c Primero sustituiremos a B en la regla C y en la regla A.

C::= bb b A::= Aa ba b bb S::= Aa C E CE B::= bb b C::= B A::= Aa ba b B E::= c Se sustituye C (ya modificada) y E en la regla S. S::= Aa bb b c CE Reglas de producción modificadas P = { S::= Aa bb b c CE B::= bb b C::= bb b A::= Aa ba b bb E::= c } FUENTE: Apuntes Profa. Hilda Yelitza Contreras Zambrano.

2) Algoritmo General Sea la GLC G={V,T,S,P}. Transformamos G en G ={V,T,S,P } de forma que L(G)=L(G ). 1) Para cada A V, se define el conjunto: Unitario(A) = {B V A *B usando sólo reglas unitarias}. 2) Inicializar P =. 3) Para cada variable A y cada B Unitario(A): Para cada regla no unitaria B::=w de P, añadir A::=w a P. Este algoritmo también elimina reglas innecesarias. FUENTE: Apuntes Profa. Hilda Yelitza Contreras Zambrano.

Ejemplo (4) Sea G una gramática definida por las siguientes reglas: S::= Aa C E BE B::= bb b S C::= B A::= Aa a E::= c 1) Encontrar conjuntos unitarios *Unitario(S) S C B S (ya está incluido) Por lo tanto, Unitario(S)={S,C,E,B}. E

*Unitario(A) = {A} *Unitario(B) B S C B E Por lo tanto, Unitario(B)={B,S,C,E,}. S::= Aa C E BE B::= bb b S C::= B A::= Aa a E::= c *Unitario(C) C B S C E Por lo tanto, Unitario(C)={C,B,S,E}. *Unitario(E) = {E}

2) P =. 3) Crear reglas de P : Unitario(S)={S,C,E,B} S: S::=Aa BE (por S; C y E son reglas unitarias) nada por C S:= c (por E) S::=bB b (por B) Unitario(A) = {A} A: A::=Aa a (por A) Unitario(B)={B,S,C,E,}. B: B::= bb b (por B) B::= Aa BE (por S) nada por C B::= c (por E) (porque B es regla unitaria) S::= Aa C E BE B::= bb b S C::= B A::= Aa a E::= c

Unitario(C)={C,B,S,E} C: nada por C C::= bb b (por B) C::= Aa BE (por S) C::= c (por E) S::= Aa C E BE B::= bb b S C::= B A::= Aa a E::= c Unitario(E) = {E} E: E::= c (por E) Reglas de producción modificadas P = { S::= Aa BE c bb b A::=Aa a B::= Aa BE c bb b C::= Aa BE c bb b E::= c } FUENTE: Apuntes Profa. Hilda Yelitza Contreras Zambrano.

Símbolos Superfluos Es un símbolo No Terminal A tal que no existe una derivación A *w, donde w T. Algoritmo 1) Sea la GLC G={V,T,S,P}. Transformamos G en G ={V,T,S,P } de forma que L(G)=L(G ). Se construye iterativamente el nuevo V como sigue: Inicializar V,P a. Repetir Añadir a V todo no terminal A para el cual existe A::=w P y w (T V )*. Hasta que no se puedan añadir más símbolos a V.

2) Asignar a P todas las reglas p P cuyos símbolos pertenezcan a T V. 3) Si S V, añadir S a V. Ejemplo (5) Sea G una gramática definida por las siguientes reglas: S::= Aa B D B::=b A::=Aa ba B ce C::=abd E::= D::=Db 1) Inicializar V = ; P =.

S::= Aa B D B::=b A::=Aa ba B ce C::=abd E::= D::=Db 2) Añadir símbolos No Terminales: V ={B} (por B::=b) V ={B,C} (por C::=abd) V ={B,C,E} (por E::= ) V ={B,C,E,S} (por S::=B; porque B V ) V ={B,C,E,S,A} (por A::=B; B V ) SE ELIMINA D::=Db 3) Añadir reglas a P. Reglas de producción modificadas: P = { S::=Aa B B::=b A::=Aa ba B ce C::=abd E::= } FUENTE: Apuntes Profa. Hilda Yelitza Contreras Zambrano.

Símbolos Inaccesibles Un símbolo X (terminal o No terminal) será inaccesible si no existe una derivación: S * axb tal que a,b (V T)* Algoritmo Sea la GLC G={V,T,S,P}. Transformamos G en G ={V,T,S,P } de forma que L(G)=L(G ). Se construye iterativamente el nuevo V,T y P como sigue: 1) Inicializar V de forma que contenga el axioma S, e inicializar P y T a.

2) Repetir Para A V y reglas A::=w P: 2.1 Introducir A::=w en P. 2.2 Para todo No Terminal B de w, introducir B en V. 2.3 Para todo terminal a de w, introducir a en T. Hasta que no se puedan añadir nuevas reglas a P. Ejemplo (6) Sea G una gramática definida por las siguientes reglas: S::= Aa B B::=b A::=Aa ba B ce C::=abd E::= G ={V,T,S,P }

1) Inicializar V = {S}; P = ; T =. 2) Añadir reglas y símbolos: P ={S::=Aa B}; V ={S,A,B}; T ={a}. P ={S::=Aa B, A::=Aa ba B ce}; V ={S,A,B,E}; T ={a,b,c}. P ={S::= Aa B, A::=Aa ba B ce, B::=b}; V ={S,A,B,E}; T ={a,b,c}. P ={S::= Aa B, A::=Aa ba B ce, B::=b, E::= }; V ={S,A,B,E}; T ={a,b,c} SE ELIMINA C::=abd S::= Aa B B::=b A::=Aa ba B ce C::=abd E::=

Reglas de producción modificadas P = { S::= Aa B A::=Aa ba B Ce B::=b E::= } Hasta aquí se obtiene una gramática bien formada eliminando las redundancias mencionadas. A continuación veremos cómo normalizar una gramática por Chomsky. FUENTE: Apuntes Profa. Hilda Yelitza Contreras Zambrano.

Forma Normal de Chomsky (FNC) Una GLC está en la FNC si cada una de sus producciones es de los siguientes 2 tipos: A a A BC S donde A,B,C son variables No Terminales (V), a es un símbolo terminal (T) y S es el axioma. Teorema: Cualquier GLC sin -producciones puede ser transformada a una gramática equivalente en donde las producciones son de la forma A BC o A a. FUENTE: Apuntes Profa. Hilda Yelitza Contreras Zambrano.

Algoritmo Sea A X1 X2 Xm en P. 1) Crear producciones del tipo A a adecuadamente. Si Xi es Terminal y Xi = a entonces agregamos a P la producción Ca a y remplazamos Xi por Ca. Entonces todas las producciones son de forma: A B1 B2 Bm y A a 2) Se crean producciones A BC adecuadamente. Para los casos en que m 3, hacemos: A B1 D1; D1 B2 D2;, Dm-2 Bm-1 Bm 3) Agregamos las respectivas variables y producciones (P ). V = V {D1, D2 Dm-2} FUENTE: Apuntes Profa. Hilda Yelitza Contreras Zambrano. Tema 4 GLC.

Ejemplo (7) Sea G una gramática bien formada definida por las siguientes reglas: S::= AB asb aab ab aa Bb a b A::= aab ab aa a B::=Bb b 1) Crear 2 nuevos símbolos No Terminales siguiendo la regla A a. C a y D b Reemplazando: S::= AB CSD CAB CB CA BD a b A::= CAB CB CA a B::=BD b

2) Crear 2 nuevos símbolos No Terminales siguiendo la regla A BC. E SD y F AB Reemplazando: S::= AB CE CF CB CA BD a b A::= CF CB CA a B::= BD b 3) Nuevas Producciones C a D b E SD F AB S::= AB CSD CAB CB CA BD a b A::= CAB CB CA a B::=BD b

Gramática Normalizada por Chomsky. P = { S::= AB CE CF CB CA BD a b A::= CF CB CA a B::= BD b E::=S D F::=A B C::=a D::=b } V ={S,A,B,E,F,C,D} T={a,b} S={S} FUENTE: Apuntes Profa. Hilda Yelitza Contreras Zambrano.

Fuentes Bibliográficas [1] A.V. Aho, J.E. Hopcroft, and J.D. Ullman. (1974). The Design and Analysis of Computer Algorithms. Addison-Wesley. [2] Copias de apuntes de la Profa. Hilda Yelitza Contreras Zambrano. [3] Contreras Zambrano Hilda Yelitza. (Abril, 2014). Tema 4 GLC. PDF recuperado de: http://webdelprofesor.ula.ve/ingenieria/hyelitza/materias/preteoria/apuntes/tema4.pdf [4] Contreras Zambrano Hilda Yelitza. (Abril, 2014). Unidad 2 GIC. PDF recuperado de: http://webdelprofesor.ula.ve/ingenieria/hyelitza/materias/preteoria/unidad2/glc.pdf [5] Apuntes y ejercicios realizados en Clase. [6] Contreras Zambrano Hilda Yelitza. (Abril, 2014). GLC. Video de Youtube recuperado de: http://www.youtube.com/watch?v=v8a2-o20ebo