You are on page 1of 9

Teora de la Computacin 1 de diciembre de 2009

Contenido
Gramtica libre de contexto ...................................................................................................... 2 Definicin formal ..................................................................................................................... 2 Ejemplos .................................................................................................................................. 3 Ejemplo 1 ............................................................................................................................. 3 Ejemplo 2 ............................................................................................................................. 3 Ejemplo 3 ............................................................................................................................. 3 Ejemplo 4 ............................................................................................................................. 3 Otros ejemplos .................................................................................................................... 3 Derivaciones y rboles sintcticos....................................................................................... 4 Formas normales .................................................................................................................... 6 Problemas indecidibles .......................................................................................................... 6 Propiedades de los lenguajes libres de contexto .............................................................. 7 Gramtica Regular ................................................................................................................. 8 Bibliografa ............................................................................................................................... 9

Antonio Acosta Murillo

Pgina 1

Ing. En Sistemas Computacionales

Teora de la Computacin 1 de diciembre de 2009

Gramtica libre de contexto


En lingstica e informtica, una gramtica libre de contexto es una gramtica formal en la que cada regla de produccin es de la forma: Vw Donde V es un smbolo no terminal y w es una cadena de terminales y/o no terminales. El trmino libre de contexto se refiere al hecho de que el no terminal V puede siempre ser sustituido por w sin tener en cuenta el contexto en el que ocurra. Un lenguaje formal es libre de contexto si hay una gramtica libre de contexto que lo genera. Las gramticas libres de contexto permiten describir la mayora de los lenguajes de programacin, de hecho, la sintaxis de la mayora de lenguajes de programacin est definida mediante gramticas libres de contexto. Por otro lado, estas gramticas son suficientemente simples como para permitir el diseo de eficientes algoritmos de anlisis sintctico que, para una cadena de caracteres dada determinen como puede ser generada desde la gramtica. Los analizadores LL y LR tratan restringidos subconjuntos de gramticas libres de contexto. La notacin ms frecuentemente utilizada para expresar gramticas libres de contexto es la forma Backus-Naur.

Definicin formal
As como cualquier gramtica formal, una gramtica libre de contexto puede ser definida mediante la 4-tupla: G = (Vt,Vn,P,S) donde; Vt es un conjunto finito de terminales Vn es un conjunto finito de no terminales P es un conjunto finito de producciones el denominado Smbolo Inicial los elementos de P son de la forma

Antonio Acosta Murillo

Pgina 2

Ing. En Sistemas Computacionales

Teora de la Computacin 1 de diciembre de 2009

Ejemplos
Ejemplo 1
Una simple gramtica libre de contexto es S aSb | Donde | es un o lgico y es usado para separar mltiples opciones para el mismo no terminal, indica una cadena vaca. Esta gramtica genera el lenguaje no regular .

Ejemplo 2
Aqu hay una gramtica libre de contexto para expresiones enteras algebraicas sintcticamente correctas sobre las variables x, y y z: S x | y | z | S + S | S - S | S *S | S/S | (S) Generara, por ejemplo, la cadena (x + y) *x - z *y / (x + x)

Ejemplo 3
Una gramtica libre de contexto para un lenguaje consistente en todas las cadenas que se pueden formar con las letras a y b, habiendo un nmero diferente de una que de otra, sera: SU|V U TaU | TaT V TbV | TbT T aTbT | bTaT | T genera todas las cadenas con la misma cantidad de letras a que b, U genera todas las cadenas con ms letras a, y V todas las cadenas con ms letras b.

Ejemplo 4
Otro ejemplo para un lenguaje es . No es un lenguaje

regular, pero puede ser generado por la siguiente gramtica libre de contexto. S aSc | B B bBc | E

Otros ejemplos
Las gramticas libres de contexto no estn limitadas a lenguajes matemticos formales. La gramtica de Lojban, un lenguaje artificial hablado con gran capacidad expresiva, es tambin libre de contexto y no ambiguo. El lingista indio Pnini describi el snscrito usando una gramtica libre de contexto. Recientemente se ha sugerido que una clase de poesa Tamil llamada Venpa utiliza principalmente una gramtica libre de contexto.

Antonio Acosta Murillo

Pgina 3

Ing. En Sistemas Computacionales

Teora de la Computacin 1 de diciembre de 2009

Derivaciones y rboles sintcticos


Existen bsicamente dos formas de describir cmo en una cierta gramtica una cadena puede ser derivada desde el smbolo inicial. La forma ms simple es listar las cadenas de smbolos consecutivas, comenzando por el smbolo inicial y finalizando con la cadena y las reglas que han sido aplicadas. Si introducimos estrategias como reemplazar siempre el no terminal de ms a la izquierda primero, entonces la lista de reglas aplicadas es suficiente. A esto se le llama derivacin por la izquierda. Por ejemplo, si tomamos la siguiente gramtica: (1) S S + S (2) S 1 Y la cadena "1 + 1 + 1", su derivacin a la izquierda est en la lista [(1) (1) (2) (2) (2)]. Anlogamente, la derivacin por la derecha se define como la lista que obtenemos si siempre reemplazamos primero el no terminal de ms a la derecha. En ese caso, la lista de reglas aplicadas para la derivacin de la cadena con la gramtica anterior sera la [(1) (2) (1) (2) (2)]. La distincin entre derivacin por la izquierda y por la derecha es importante porque en la mayora de analizadores, la transformacin de la entrada es definida dando una parte de cdigo para cada produccin que es ejecutada cuando la regla es aplicada. De modo que es importante saber qu derivacin aplica el analizador, por que determina el orden en el que el cdigo ser ejecutado. Una derivacin tambin puede ser expresada mediante una estructura jerrquica sobre la cadena que est siendo derivada. Por ejemplo, la estructura de la derivacin a la izquierda de la cadena "1 + 1 + 1" con la gramtica anterior sera:

SS+S (1) SS+S+S (1) S1+S+S (2) S1+1+S (2) S1+1+1 (2) {{{1}S + {1}S}S + {1}S}S

Donde {...}S indica la subcadena reconocida como perteneciente a S. Esta jerarqua tambin se puede representar mediante un rbol sintctico:

Antonio Acosta Murillo

Pgina 4

Ing. En Sistemas Computacionales

Teora de la Computacin 1 de diciembre de 2009

S /|\ / | \ / | \ S '+' S /|\ | / | \ | S '+' S '1' | | '1' '1'

Este rbol es llamado rbol de sintaxis concreta de la cadena (ver tambin rbol de sintaxis abstracta). En este caso, las derivaciones por la izquierda y por la derecha presentada definen la sintaxis del rbol; sin embargo, hay otra derivacin (por la izquierda) de la misma cadena. La derivacin por la derecha: S S + S (1) S 1 + S (2) S 1 + S + S (1) S 1 + 1 + S (2) S 1 + 1 + 1 (2) Define el siguiente rbol sintctico: S /|\ / | \ / | \ S '+' S | /|\ | / | \ '1' S '+' S | | '1' '1'

Si para una cadena del lenguaje de una gramtica hay ms de un rbol posible, entonces se dice que la gramtica es ambigua. Normalmente estas gramticas son ms difciles de analizar por que el analizador no puede decidir siempre que produccin aplicar

Antonio Acosta Murillo

Pgina 5

Ing. En Sistemas Computacionales

Teora de la Computacin 1 de diciembre de 2009

Formas normales
Una gramtica que no genera la cadena vaca puede ser transformada en una equivalente (que genera el mismo lenguaje) en forma normal de Chomsky o en forma normal de Greibach. La simplicidad de las reglas en forma normal de Chomsky tiene implicaciones tericas y prcticas. Por ejemplo, dada una gramtica libre de contexto, se puede usar su forma normal para construir un algoritmo de coste polinomial que decida si una cadena forma parte del lenguaje definido por la gramtica o no (algoritmo CYK).

Problemas indecidibles
Algunas de las propiedades de las gramticas, y en general, de los lenguajes libres del contexto son de naturaleza decidible, existiendo por lo tanto algoritmos de decisin para resolverlos. Sin embargo, al contrario que en el caso de los lenguajes regulares, existen problemas interesantes para los cuales se ha mostrado su naturaleza indecidible, y por lo tanto, se carece del correspondiente algoritmo. Uno de los ms sencillos es el de decidir si una gramtica libre del contexto dada acepta el lenguaje de todas las posibles cadenas de smbolos. Este lenguaje viene a ser una reduccin del problema de parada de una mquina de Turing con una entrada particular, y por lo tanto, un problema indecidible. La reduccin usa el concepto de historia computacional, es decir, una cadena que describa el proceso de computacin global de una mquina de Turing, esta cadena podra describirse mediante una gramtica libre del contexto. Podemos construir, por tanto, una gramtica libre del contexto que genere todas las cadenas no aceptadas por la mquina de Turing indicada. Una consecuencia importante es que tambin es indecidible la comparacin entre dos gramticas libres del contexto para comprobar si el lenguaje generado coincide. Por el contrario, el problema sencillo de determinar si dada una cadena es aceptada por una determinada gramtica libre del contexto, s que es decidible, y por lo tanto podr escribirse el correspondiente algoritmo para decidirlo.

Antonio Acosta Murillo

Pgina 6

Ing. En Sistemas Computacionales

Teora de la Computacin 1 de diciembre de 2009

Propiedades de los lenguajes libres de contexto


Una de las definiciones alternativas y equivalentes de lenguaje libre de contexto emplea autmatas no deterministas: un lenguaje es libre de contexto si puede ser aceptado por ese autmata. Un lenguaje puede ser tambin modelado como un conjunto de todas las secuencias de terminales aceptadas por la gramtica. Este modelo ayuda a entender las operaciones de conjuntos sobre lenguajes. La unin y concatenacin de dos lenguajes libres de contexto es tambin libre de contexto. La interseccin no tiene por que serlo. El inverso de un lenguaje libre de contexto es tambin libre de contexto, pero el complemento no tiene por que serlo. Los lenguajes regulares son libres de contexto por que pueden ser descritos mediante una gramtica regular. La interseccin de un lenguaje libre de contexto y un lenguaje regular es siempre libre de contexto. Existen Gramticas sensibles al contexto que no son libres de contexto. Para demostrar que un lenguaje dado no es libre de contexto, se puede emplear el Lema del bombeo para lenguajes libres de contexto. El problema de determinar si una gramtica sensible al contexto describe un lenguaje libre del contexto es indecidible...

Antonio Acosta Murillo

Pgina 7

Ing. En Sistemas Computacionales

Teora de la Computacin 1 de diciembre de 2009

Gramtica Regular
En informtica una gramtica regular es una gramtica formal (N, , P, S) y puede ser clasificada en regular izquierda o derecha. Las gramticas regulares slo pueden generar a los lenguajes regulares de manera similar a los autmatas finitos y las expresiones regulares. Dos gramticas regulares que generan el mismo lenguaje regular se denominan equivalentes. Toda gramtica regular es una gramtica libre de contexto. En una gramtica regular derecha cuyas reglas de produccin P son de la siguiente forma:

1. A > a, donde A es un smbolo no-terminal en N y a uno terminal en 2. A > aB, donde A y B pertenecen a N y a pertenece a 3. A > , donde A pertenece a N.

En una gramtica regular izquierda, las reglas son las siguientes: 1. A > a, donde A es un smbolo no-terminal en N y a uno terminal en 2. A > Ba, donde A y B pertenecen a N y a pertenece a 3. A > , donde A pertenece a N.

Un ejemplo de una gramtica regular G con N = {S, A}, = {a, b, c}, P se define mediante las siguientes reglas: S S A A aS bA cA

Donde S es el smbolo inicial. Esta gramtica describe el mismo lenguaje expresado mediante la expresin regular a bc . Dada una gramtica regular izquierda es posible convertirla, mediante un algoritmo en una derecha y viceversa.
+ *

Antonio Acosta Murillo

Pgina 8

Ing. En Sistemas Computacionales

Teora de la Computacin 1 de diciembre de 2009

Bibliografa
1. JIMMY WALES Y LARRY SANGER. (2001) HTTP://WIKIPEDIA.ORG : ESTADOS UNIDOS.

2. LARRY PAGE Y SERGEY BRIN. (1998) HTTP://WWW.GOOGLE.COM : ESTADOS UNIDOS.

Antonio Acosta Murillo

Pgina 9

Ing. En Sistemas Computacionales

You might also like