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
0
P
1
P
0P0
P
1P1
En notacin compacta: P

Manuel Mucientes

| 0 | 1 | 0P0 | 1P1

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

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:

Manuel Mucientes

EI + E

P 0110

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
*

w
A
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

Manuel Mucientes

Tema 4: Gramticas independientes del contexto

17

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