Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 4 - Gramaticas Independientes Del Contexto PDF
Tema 4 - Gramaticas Independientes Del Contexto PDF
Gramticas independientes
del contexto
Bibliografa
Hopcroft, J. E., Motwani, R., y Ullman, J. D.
Introduccin a la Teora de Autmatas, Lenguajes y
Computacin. Addison Wesley. 2002.
captulo 5
Manuel Mucientes
Introduccin
Lenguajes independientes del contexto (LIC)
Gramticas independientes del contexto (GIC)
implementacin de analizadores sintcticos
descripcin de formatos de documentos: XML
Manuel Mucientes
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
P
0
P
1
P
0P0
P
1P1
En notacin compacta: P
Manuel Mucientes
| 0 | 1 | 0P0 | 1P1
Definicin de gramtica
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
Manuel Mucientes
A
G
si
, entonces
G
Manuel Mucientes
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
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
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
10
Problemas
1. Disear las GIC para los siguientes lenguajes
1. {0n1n | n 1 }
2. {aibjck | i j o
jk }
Manuel Mucientes
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
12
Ejemplos:
Manuel Mucientes
EI + E
P 0110
13
Manuel Mucientes
14
Un ejemplo
*
E a * ( a + b00)
Manuel Mucientes
15
A w
*
w
A
mi
*
A w
md
Manuel Mucientes
16
Ambigedad
EE+EE+IE+bI+ba +b
Manuel Mucientes
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
18
Manuel Mucientes
19
Manuel Mucientes
20
Manuel Mucientes
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
22