Está en la página 1de 22

Tema 4: Gramticas independientes del contexto

Teora de autmatas y lenguajes formales I

Bibliografa
Hopcroft, J. E., Motwani, R., y Ullman, J. D. Introduccin a la Teora de Autmatas, Lenguajes y Computacin. Addison Wesley. 2002.
captulo 5

Sudkamp, Thomas A. Languages and machines : an introduction to the theory of computer science. Addison-Wesley Publishing Company, 1998.
captulos 3 y 4

Manuel Mucientes

Tema 4: Gramticas independientes del contexto

Introduccin
Lenguajes independientes del contexto (LIC) Gramticas independientes del contexto (GIC)
implementacin de analizadores sintcticos descripcin de formatos de documentos: XML

rboles sintcticos: representan grficamente la estructura de la gramtica Autmatas con pila

Manuel Mucientes

Tema 4: Gramticas independientes del contexto

Un ejemplo de GIC
Palndromo: w = wR Este lenguaje no es regular. Se comprueba aplicando el lema del bombeo a la cadena 0n10n Para generar el lenguaje de los palndromos con el alfabeto {0, 1}:
Base: , 0, 1 son palndromos Paso inductivo: si w es palndromo, tambin lo son 0w0 y 1w1

Reglas que definen la gramtica que genera el lenguaje de los palndromos con alfabeto {0, 1}:
P P 0 P 1 P 0P0 P 1P1 En notacin compacta: P

| 0 | 1 | 0P0 | 1P1
4

Manuel Mucientes

Tema 4: Gramticas independientes del contexto

Definicin de gramtica
Las GIC estn formadas por cuatro componentes:
el alfabeto de smbolos terminales, que son los smbolos finales del lenguaje el conjunto finito de smbolos no terminales o variables, que permiten representar subconjuntos del lenguaje o estados intermedios en la generacin de las palabras del lenguaje el smbolo inicial o axioma de la gramtica (una de las variables), a partir de cual se obtiene cualquier palabra del lenguaje un conjunto finito de producciones o reglas, que indican las transformaciones posibles desde los smbolos no terminales a las palabras del lenguaje. Las reglas estn formadas por:
una variable, cabeza de la produccin el smbolo de produccin una cadena de 0 o ms smbolos terminales y variables, que son el cuerpo de la produccin las producciones son de la forma B x, donde B V, y x (V T ) *

G = (V, T, P, S)
ejemplo: Gpalndromo = ({P}, {0, 1}, A, P), donde A son las producciones o reglas: P | 0 | 1 | 0P0 | 1P1

Manuel Mucientes

Tema 4: Gramticas independientes del contexto

Definicin de gramtica (II)


Ejemplo: G = ({E, I}, {+, *, (, ), a, b, 0, 1}, P, E), donde P es el conjunto de producciones:

Manuel Mucientes

Tema 4: Gramticas independientes del contexto

Derivaciones de una gramtica


Aplicando las producciones de una GIC se infieren las cadenas que estn en el lenguaje Sea G = (V, T, P, S), y A una cadena de terminales y variables, donde A est en V, y y estn en (V T ) *. Sea A una produccin de G. Entonces:

A
G

Extensin a varios pasos de derivacin


si

, entonces
G G

Ejemplo: inferencia de a * (a + b00)

Manuel Mucientes

Tema 4: Gramticas independientes del contexto

Derivaciones izquierda y derecha


Derivacin ms a la izquierda:
mi * *

Derivacin ms a la derecha: Ejemplo:

md

E a * (a + b00)
mi

E a * (a + b00)
md

Manuel Mucientes

Tema 4: Gramticas independientes del contexto

Lenguaje de una gramtica


Si G = (V, T, P, S) es una GIC, el lenguaje de G ser:
L(G) = {w que estn en T * | S w }
G *

Notacin:
a, b, ..., +, (, ...: smbolos terminales A, B, ...: variables ..., w, x, y, z: cadenas de terminales ..., X, Y, Z: terminales o variables , , , ...: cadenas de terminales y variables

Manuel Mucientes

Tema 4: Gramticas independientes del contexto

Formas sentenciales
Si G = (V, T, P, S) es una GIC, cualquier cadena en (V T ) * * tal que S es una forma sentencial El lenguaje L(G) est formado por las formas sentenciales que estn en T *: se denominan sentencias Ejemplo:

Manuel Mucientes

Tema 4: Gramticas independientes del contexto

10

Problemas
1. Disear las GIC para los siguientes lenguajes
1. {0n1n | n 1 } 2. {aibjck | i j o

jk }

2. La siguiente gramtica genera el lenguaje de expresiones regulares 0*1(0+1)*: S A1B, A 0A | , B 0B | 1B | . Obtener las derivaciones ms a la izquierda y ms a la derecha para la cadena: 00101 3. Sea T = {0, 1, (, ), +, *, , e}. Construir una GIC con el conjunto de terminales T que genere expresiones regulares vlidas con el alfabeto {0, 1} (considerar e como ).

Manuel Mucientes

Tema 4: Gramticas independientes del contexto

11

rboles de derivacin
Representacin de las derivaciones en forma de rbol
muestra la agrupacin de los smbolos de una cadena terminal en subcadenas utilizacin en los compiladores para representar la estructura sintctica del programa fuente

Terminologa
los rboles son conjuntos de nodos unidos entre s por la relacin padrehijo. Un nodo tiene como mximo un padre y cero o ms hijos nodo raz: no tiene padre hojas: nodos sin hijos nodos interiores: nodos que no son hojas el hijo de un hijo de ...: descendiente el padre de un padre de ...: antepasado los hijos de un nodo se ordenan de izquierda a derecha
Manuel Mucientes

Tema 4: Gramticas independientes del contexto

12

Construccin de rboles de derivacin


Sea G = (V, T, P, S). El rbol de derivacin para G tendr las siguientes caractersticas:
cada nodo interior est etiquetado con una variable cada hoja est etiquetada con una variable, un terminal o . Si es , tiene que ser el nico hijo de su padre si un nodo interior est etiquetado con A, y sus hijos estn etiquetados con X1, X2 , ..., Xk (de izquierda a derecha), entonces A X1X2...Xk es una produccin de P

Ejemplos:

EI + E

P 0110

Manuel Mucientes

Tema 4: Gramticas independientes del contexto

13

Resultado de un rbol de derivacin


Concatenando la hojas de un rbol desde la izquierda se obtiene la cadena resultado del rbol, que se deriva desde la raz Son especialmente importantes los rboles de derivacin tales que:
su resultado es una cadena terminal la raz est etiquetada con el smbolo inicial

Estos rboles tienen como resultado las cadenas del lenguaje generado por esa gramtica

Manuel Mucientes

Tema 4: Gramticas independientes del contexto

14

Un ejemplo
E a * ( a + b00)
*

Manuel Mucientes

Tema 4: Gramticas independientes del contexto

15

Inferencia, derivaciones y rboles


Dada G = (V, T, P, S), las siguientes afirmaciones son equivalentes:
el procedimiento de inferencia recursiva determina que la cadena terminal w pertenece al lenguaje de la variable A A w A w mi A w
md
* * *

Existe un rbol de derivacin con la raz etiquetada con A y resultado w

Manuel Mucientes

Tema 4: Gramticas independientes del contexto

16

Ambigedad
Una GIC G = (V, T, P, S) es ambigua si existe al menos una cadena w en T * para la que podemos encontrar dos rboles de derivacin distintos con la raz etiquetada con S y cuyo resultado es w

La existencia de derivaciones diferentes para una cadena no supone un defecto en la gramtica, la existencia de rboles de derivacin diferentes s supone un problema

EE+EI+Ea +Ea +Ia +b


EE+EE+IE+bI+ba +b
Tema 4: Gramticas independientes del contexto 17

Manuel Mucientes

Eliminacin de la ambigedad
No existe un algoritmo que nos indique si una GIC es ambigua Existen LIC que slo tienen GIC ambiguas: inherentemente ambiguos Para las construcciones de los lenguajes de programacin comunes existen tcnicas para la eliminacin de la ambigedad Ejemplo: causas de ambigedad en la siguiente gramtica
no se respeta la precedencia de operadores una secuencia de operadores idnticos puede agruparse desde la izquierda y desde la derecha. Lo convencional es agrupar desde la izquierda

Manuel Mucientes

Tema 4: Gramticas independientes del contexto

18

Eliminacin de la ambigedad (II)


Ejemplo: modificamos la gramtica para forzar la precedencia

Manuel Mucientes

Tema 4: Gramticas independientes del contexto

19

Derivaciones como forma de expresar ambigedad


En una gramtica no ambigua las derivaciones ms a la derecha y ms a la izquierda sern nicas Teorema: para toda gramtica G = (V, T, P, S) y toda cadena w en T *, w tiene dos rboles de derivacin distintos si y slo si w tiene dos derivaciones ms a la izquierda distintas desde S
lo mismo para las derivaciones ms a la derecha

Manuel Mucientes

Tema 4: Gramticas independientes del contexto

20

Derivaciones como forma de expresar ambigedad (II)


Ejemplo:

Manuel Mucientes

Tema 4: Gramticas independientes del contexto

21

Problemas finales
1. Un palndromo es una cadena que se lee igual de izquierda a derecha que de derecha a izquierda. Por ejemplo, las palabras radar, oso y abba son palndromos. Dado el alfabeto = {a, b}, determinar una gramtica que describa palndromos. La gramtica debera generar palabras como abba, aba, bb, babab, a, b, ..., y . 2. Determinar una gramtica que genere el lenguaje L = {ai bj ck | i=j o j=k, i, j, k > 0}. 3. Determinar una gramtica que genere el lenguaje L = {ai bi aj bj | i, j > 0},

Manuel Mucientes

Tema 4: Gramticas independientes del contexto

22

También podría gustarte