Está en la página 1de 16

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO

Jos Miguel Puerta Antonio Fernndez Caballero


Departamento de Informtica Universidad de Castilla-la Mancha
Teora de Autmatas y Lenguajes Formales 1

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO INDICE Introduccin Conceptos sobre GLCs Limpieza de GLCs (a) Eliminacin de smbolos y producciones intiles (b) Eliminacin de producciones nulas (c) Eliminacin de producciones unitarias Formas normales (a) Forma normal de Chomsky (FNC) (b) Forma normal de Greibach (FNG)
Teora de Autmatas y Lenguajes Formales 2

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO


INTRODUCCIN
Como sabemos, en una gramtica libre de contexto (GLC) G = (N, T, P, S) las producciones tienen la siguiente forma: A con A N , (N T )+ S Las GLCs tienen una gran importancia en la definicin de lenguajes de programacin, interpretacin del lenguaje natural, construccin de compiladores, etc ... Por comodidad a la hora de definir lenguajes, la definicin anterior se extiende a la siguiente: A con A N , (N T )* En este tema veremos que una GLC escrita de esta forma ms general, siempre puede escribirse en la versin ms restrictiva (slo S puede producir ).
Teora de Autmatas y Lenguajes Formales 3

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO CONCEPTOS SOBRE GLCs


rbol de derivacin Las derivaciones se pueden representar en forma de rbol Derivacin ms a la izquierda y ms a la derecha Si existe un rbol de derivacin con la raz etiquetada con A y resultado w, entonces A * w, A mi* w, A md* w. Gramtica ambigua Una sentencia w se denomina ambigua si puede obtenerse por ms de un rbol de derivacin (o equivalentemente, ms de una derivacin ms a la izquierda o ms a la derecha). Una gramtica G se denomina ambigua si el lenguaje que genera contiene alguna sentencia ambigua. Lenguaje inherentemente ambiguo Un lenguaje se denomina inherentemente ambiguo si no existe una gramtica no ambigua que lo genere.
Teora de Autmatas y Lenguajes Formales 4

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO Ejercicio Obtener la gramtica que genera el lenguaje

L = a n b n c m d m | n, m 1 a n b m c m d n | n, m 1
y probar que es ambigua.

} {

Teora de Autmatas y Lenguajes Formales

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (1) El objetivo de esta parte del tema, es probar que dada una gramtica G, siempre podemos encontrar otra gramtica G equivalente y escrita de forma ms correcta. En concreto, la nueva gramtica no tendr: Producciones intiles Producciones nulas (excepto S si L(G)) Producciones unitarias En algunos textos este proceso se denomina simplificacin de GLCs, aunque como veremos slo el primer paso "simplifica" realmente la gramtica.
Teora de Autmatas y Lenguajes Formales 6

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (2) Eliminacin de producciones intiles (1) Un smbolo X (N T) es til si aparece en una secuencia de derivaciones S * 1X2 * z T* Una produccin se dice til si y solo si todos sus smbolos son tiles. Esto es equivalente a que pueda usarse en la derivacin de alguna palabra del lenguaje asociado a la gramtica. Eliminando todos los smbolos y producciones intiles el lenguaje generado por la gramtica no cambia.
Teora de Autmatas y Lenguajes Formales 7

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (3) Eliminacin de producciones intiles (2) El algoritmo para eliminar los smbolos y producciones intiles consta de dos pasos: 1.Smbolos no generativos: Eliminar los smbolos no terminales desde los que no se puede llegar a una palabra de T y las producciones en las que aparezcan. 2.Smbolos no accesibles: Eliminar aquellos smbolos que no sean alcanzables desde el smbolo inicial, S, y las producciones en las que aparecen.

Teora de Autmatas y Lenguajes Formales

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (4) Eliminacin de producciones intiles (3) Es importante aplicar los algoritmos anteriores en el orden especificado. S AB, S a, A a En el primer paso se elimina B y la produccin S AB. Entonces en el segundo se elimina la variable A y la produccin A a. Si aplicamos en orden inverso, entonces no se elimina nada. Al aplicar despus el primero de los algoritmos se elimina B y la produccin S AB. En definitiva, nos queda la gramtica S a, A a donde todava nos queda la variable intil A.
Teora de Autmatas y Lenguajes Formales 9

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (5) Eliminacin de producciones intiles (4) Eliminacin de smbolos no generativos (1) Se disea un algoritmo calculando Nt , conjunto de no terminales que se pueden sustituir por smbolos terminales.
Condicin Bsica: Si A u, u T, entonces A Nt Condicin Recursiva: Si A 1...k y cada j est en TNt , entonces A Nt.

Teora de Autmatas y Lenguajes Formales

10

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (6) Eliminacin de producciones intiles (5) Eliminacin de smbolos no generativos (2) 1.Nt = 2.Para cada produccin de la forma A w, A se introduce en Nt . 3.Mientras Nt cambie 1.Para cada produccin B 1.Si todas las variables de pertenecen a Vt, B se introduce en Nt 4.Eliminar las variables que estn en N y no en Nt 5.Eliminar todas las producciones donde aparezca una variable de las eliminadas en el paso anterior
Teora de Autmatas y Lenguajes Formales 11

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO

Ejercicio

Teora de Autmatas y Lenguajes Formales

12

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (7) Eliminacin de producciones intiles (6) Eliminacin de smbolos no accesibles La idea es hacer una bsqueda recursiva a partir del smbolo S para ver qu smbolos se pueden alcanzar desde l. 1. Inicializacin: N {S}, T {}, P {} 2. Bucle 1. Para cada A N hacer
1.Para cada (A w) P hacer P P {A w} N N {smbolos no terminales de w} T T {smbolos terminales de w}
Teora de Autmatas y Lenguajes Formales

13

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO

Ejercicio

Teora de Autmatas y Lenguajes Formales

14

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (8) Eliminacin de producciones nulas (1) Definiciones. Dada una gramtica G = (N, T, P, S), Una produccin de la forma A se llama nula. Un smbolo A N es anulable si existe una secuencia de derivaciones A * . Algoritmo: Anulables 1. Inicializacin: H {A N | (A ) P}. 2. Repetir H H {A N H | (A w) P y w H*} hasta que H no cambie.
Teora de Autmatas y Lenguajes Formales 15

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (9) Eliminacin de producciones nulas (2) 1. Calcular H (anulables) 2. P P {producciones nulas} 3. Para cada produccin A X1...Xn P hacer P P {A1...n} donde - si Xi H, entonces i = Xi - si Xi H, entonces i = Xi o i = (las dos posibilidades) - eliminar A , si ha sido generada 4. Si S H eliminar S de P
Teora de Autmatas y Lenguajes Formales 16

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO

Ejercicio

Teora de Autmatas y Lenguajes Formales

17

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (10) Eliminacin de producciones unitarias (1) Definiciones. Dada una gramtica G, Se llama produccin unitaria a la que tiene la forma A B Dado A N, se llama unitarios de A, al conjunto unit(A) = {B N | A * B}

Teora de Autmatas y Lenguajes Formales

18

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (11) Eliminacin de producciones unitarias (2)
1. P P {producciones unitarias} 2. Para cada A N hacer (a) Calcular unit(A) (b) Para cada B unit(A) hacer si B w P no unitaria P P {A w}

Teora de Autmatas y Lenguajes Formales

19

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO

Ejercicio

Teora de Autmatas y Lenguajes Formales

20

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (12) Gramtica limpia Dada una GLC G podemos obtener una GLC limpia y equivalente G, tras aplicar la siguiente secuencia de algoritmos:
1. 2. 3. 4. Eliminar producciones intiles Eliminar producciones nulas Eliminar producciones unitarias Eliminar producciones intiles

Teora de Autmatas y Lenguajes Formales

21

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO Forma Normal de Chomsky (1) Definicin: Una GLC se dice que est en Forma Normal de Chomsky (FNC) si todas sus producciones son de la forma: A BC, A a, donde A, B, C N, a T. Excepcionalmente se permite la produccin S cuando L(G). La idea de la transformacin de una gramtica limpia a FNC se ejecuta en dos pasos:
Hacer que en la parte derecha de las producciones de longitud mayor o igual que dos slo haya terminales. Trocear estas producciones para que tengan longitud dos.
Teora de Autmatas y Lenguajes Formales 22

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO Forma Normal de Chomsky (2) Algoritmo FNC: 1. Para cada produccin de la forma A 1..n, i (N T), n 2 (a) Para cada i, si i es terminal: i = a T - Se aade la produccin Ca a - Se cambia i por Ca en A 1..n 2. Para cada produccin de la forma A B1...Bm, m 3 (a) Se aaden (m-2) no terminales D1, D2, ..., Dm-2 (distintos para cada produccin) (b) La produccin A B1...Bm se reemplaza por A B1D1, D1 B2D2, ... Dm-2 Bm-1Bm
Teora de Autmatas y Lenguajes Formales 23

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO

Ejercicio Pasar a FNC la siguiente gramtica:

Teora de Autmatas y Lenguajes Formales

24

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO Forma Normal de Greibach (1) Definicin: Una GLC se dice que est en Forma Normal de Greibach (FNG) si todas sus producciones son de la forma: A a, donde A N, a T, N* Excepcionalmente se permite la produccin S cuando , L(G). Hasta qu profundidad deberamos explorar el rbol de expansin para decidir si una cadena w de longitud n es generada o no por una gramtica en FNC/FNG?
Teora de Autmatas y Lenguajes Formales 25

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO Forma Normal de Greibach (2) Eliminacin de recursividad a izquierdas (1): Dada una GLC G, se dice que una produccin es recursiva a izquierdas si tiene la forma: A A, donde A N, (NT)* Para pasar una GLC G a FNG necesitaremos que est limpia y que no contenga recursividad a izquierdas.

Teora de Autmatas y Lenguajes Formales

26

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO Forma Normal de Greibach (3) Eliminacin de recursividad a izquierdas (2): Algoritmo:
1. Para cada smbolo no terminal A con recursividad a izquierdas tendremos: A A1 | ... | Ar | 1 | ... | s 2. Para cada smbolo de este tipo, crear un nuevo no terminal Bi y sustituir el anterior conjunto de producciones por el siguiente: A 1 | ... | s | 1Bi | ... | sBi Bi 1 | ... | r | 1Bi | ... | rBi
Teora de Autmatas y Lenguajes Formales 27

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO

Ejercicio

Teora de Autmatas y Lenguajes Formales

28

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO Forma Normal de Greibach (4) Algoritmo (1): Sea G una GLC limpia y en FNC (bastara con el primer paso de FNC).
1. Eliminar recursividad por la izquierda 2. Establecer un orden entre los smbolos de N. Por ejemplo: N = {A1, ..., Am}, Ai Ai+1 3. Clasificar las producciones en tres grupos (i) A a, a T, N* (ya en FNG) (ii) Ai Aj, i < j, N+ (iii) Ak Aj, k > j, N+
Teora de Autmatas y Lenguajes Formales 29

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO Forma Normal de Greibach (5) Algoritmo (2): 4. Eliminar las producciones del grupo (iii) Hacer, de menor a mayor valor de k: (a) Sustituir Ak Aj por Ak j1 | ... | js, usando las producciones Aj j1 | ... | js. (b) Eliminar la recursividad por la izquierda que pueda surgir. El nuevo smbolo aadido Bi se pone al principio del orden establecido para N. 5. Eliminar las producciones del grupo (ii) Hacer de mayor a menor valor de i: (a) Sustituir Ai Aj por Ai a1j1 | ... | aljs usando las producciones Aj a1j1 | ... | aljs.
Teora de Autmatas y Lenguajes Formales 30

TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO

Ejercicio

Teora de Autmatas y Lenguajes Formales

31

TEMA 3: GRAMTICAS FORMALES


PROBLEMA Obtener la FNG de la siguiente gramtica: G = ( {S1,S2,S3}, {a,b,c,d,e}, S1, P ) P = { S1 --> S1S2c | S3bS3, S2 --> S1S1 | d, S3 --> S2e }

Teora de Autmatas y Lenguajes Formales

32