Está en la página 1de 12

Gramticas Libres de Contexto

Universidad Iberoamericana (UNIBE) Escuela de Ingeniera en Tecnologas de la Informacin y Comunicacin

Anaury Batista 11-1146

Lenguajes Formales y Teoras de Autmata Profesora: Rina Familia

Periodo 2013-3 Lunes 25 de Noviembre del 2013 Gramticas Libres de Contexto Abstract Una Gramtica Libre de Contexto es un conjunto finito de variables, cada una de las cuales representa un lenguaje. Las gramticas libre de contexto permite describir la mayora de los lenguajes de programacin, de hecho, la sintaxis de la mayora de lenguajes de programacin est definida mediante gramtica libres de contexto.

Gramticas Libres de Contexto

Introduccin
La gramtica es un conjunto finito de smbolos o variables que representan categoras aplicables a elementos de lxico. Las gramticas libre de contexto son las que nos permite describir la mayora de los lenguajes de programacin, de hecho, la sintaxis de la mayora de lenguajes de programacin est definida mediante gramtica libres de contexto. La gramtica libre de contexto es muy til para definir relaciones entre objetos sintcticos tales como la sintaxis de un lenguaje de programacin. Una gramtica libre de contexto tiene un smbolo de arranque o de objetivo. Son smbolos terminales que representan ejemplos de variables y son reglas de produccin que combinan entre s para el logro del objetivo. Como la gramtica libre de contexto es un tema que nos incumbe a cada persona que utilizamos lenguajes de programacin, que estudiamos informtica, en este trabajo de investigacin se desarrollara este tema, para as tener unos conocimientos ms amplios del mismo. Entender que es y de qu forma se utiliza.

Gramticas Libres de Contexto

Gramticas Libres de Contexto

Qu es una gramtica? Modelo de estructuras recursivas. Definicin de reglas para representar las expresiones de los lenguajes. Especificacin rigurosa y explicita de estructura de un lenguaje.

Caractersticas: Ausencia de ambigedad, por tanto bien definidas. Rigurosas (claridad, explicitud). Facilitan evaluacin: comprobar, conclusiones, derivar. Hacer predicciones: generalizacin. Desarrollo de aplicaciones.

Gramticas Formales Gramtica regulares. Gramticas independientes de contexto. Gramticas sensibles al contexto. Gramtica sin restricciones o de estructura de frase.

Tipos de Gramticas N. Chomsky clasifica las gramticas en cuatro tipos: o Gramticas sin restricciones o gramticas de estructura de frases (Tipo 0). o Gramticas sensibles al contexto (Tipo 1). o Gramticas independientes de contexto (Tipo 2). o Gramticas regulares (Tipo 3).

Gramticas Libres de Contexto


Definicin Formal Una Gramtica Libre de Contexto se denota por una 4-tupla G = (V, T, P, S), donde V y T son conjuntos finitos de variables y terminales, respectivamente. Asumimos que V y T son disjuntos. P es un conjunto finito de producciones; cada produccin es de la forma A , donde A es una variable y es una cadena de smbolos en (V U T)*. Finalmente, S es una variable especial llamada el smbolo de inicio. Tambin se puede decir que: V es un conjunto de variables. T es un conjunto de terminales. P es un conjunto finito de producciones de la forma A , donde A es una variable y (V T)*. S es una variable designada llamada el smbolo inicial.

Las gramticas se especifican dando una lista de sus producciones, donde las producciones del smbolo inicial se listan primero. Las producciones con el mismo no terminal del lado izquierdo pueden tener sus lados derechos agrupados, separados por es smbolo |. Se dice que una produccin es para un no terminal si el no terminal aparece en el lado izquierdo de la produccin. Ejemplo: Usamos E en lugar de <expresin> para la siguiente gramtica:

Entonces formalmente esta gramtica se expresa como ({E}, {+, *, (,), id}, P, E). Segn la Jerarqua de Chomsky: las gramticas generativas se clasifican en 4 tipos. Esta clasificacin es inclusiva, es decir tipo 3 tipo 2 tipo 1 tipo 0.

Gramticas Libres de Contexto

Gramticas Libres de Contexto Estas gramticas, conocidas tambin como gramticas de tipo 2 o gramticas independientes del contexto, son las que generan los lenguajes libres o independientes del contexto. Los lenguajes libres del contexto son aquellos que pueden ser reconocidos por un autmata de pila determinstico o no determinstico. Una Gramtica Libre de Contexto es un conjunto finito de variables, cada una de las cuales representa un lenguaje. Los lenguajes representados por las variables se describen recursivamente en trminos de otros lenguajes o de smbolos primitivos llamados terminales. Las reglas que describen el lenguaje asociado con cada variable se llaman producciones. La motivacin original para las gramticas libres de contexto fue la descripcin de lenguajes naturales tal como ocurre con las siguientes reglas:

Donde las variables se escriben dentro de corchetes angulares y las terminales son por ejemplo, la palabra nio. 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.

Gramticas Libres de Contexto


Las gramticas libre de contexto permite describir la mayora de los lenguajes de programacin, de hecho, la sintaxis de la mayora de lenguajes de programacin est definida mediante gramtica libres de contexto. Hemos visto que muchos lenguajes no son regulares. Un lenguaje formal es libre de contexto si hay una gramtica libre de contexto que lo genera. Por lo que se necesita una clase ms grande de lenguajes. Las Gramticas Libres de Contexto jugaron un papel central en los lenguaje natural desde los 50s y en los compiladores desde los 60s. Forman la base de la sintaxis BNF. Son actualmente importantes para XML y sus DTDs (Document Type Denition). Se usan las siguientes convenciones con respecto a las gramticas: Las letras maysculas A, B, C, D, E y S denotan variables; y el S es el smbolo de inicio. Las letras minsculas a, b, c, d, e, dgitos, y cadenas en letras negrillas son terminales. Las letras maysculas X, Y, y Z denotan smbolos que pueden ser terminales o variables. Las letras minsculas u, v, w, x, y y z denotan cadenas de terminales. Las letras griegas denotan cadenas de variables y terminales.

Si cada quien se apega a esas conversiones mencionadas anteriormente, podemos deducir las variables, terminales y el smbolo de inicio de una gramtica nicamente examinando sus producciones. As, se puede representar una gramtica por una simple lista de producciones. Si son las producciones para las variables A de alguna gramtica, entonces se pueden expresar por la notacin: donde la lnea vertical se lee como 0. La gramtica del ejemplo anterior se escribe como .

Otra Definicin Las GIC (Gramticas Independientes del Contexto) o GLC (Gramticas Libres del Contexto) son llamadas tambin Gramtica en la Forma de Backus-Naur (BNF) (usado para describir lenguajes de programacin). Las GIC se usan para inferir si ciertas cadenas estn en el lenguaje expresado por la gramtica. Hay 2 tipos de inferencia:

Gramticas Libres de Contexto


Inferencia recursiva (cuerpo a cabeza/de cadenas a variables). Derivacin (cabeza a cuerpo, expansin de producciones).

Ejemplo: cadenas palndromas en {0,1} S | 0 | 1 | 1S1 | 0S0

Derivacin El proceso de derivacin es el mtodo que nos permite obtener a partir, de una gramtica establecida, el conjunto de palabras del lenguaje correspondiente. Este proceso solo nos exige partir del smbolo inicial o sea un no terminal. Para el caso de las Gramticas Libres del Contexto, podemos implementar procesos de derivacin especficos como el de izquierda y el de derecha, siempre y cuando las producciones lo permitan. Las derivaciones a la izquierda significan reemplazar el primer no terminal que encontramos en la cadena de b recorrindola de izquierda a derecha, en todo el proceso de derivacin.

Las derivaciones a la derecha significan reemplazar el primer no terminal que encontramos en la cadena de b recorrindola de derecha a izquierda, en todo el proceso de derivacin.

Gramticas Libres de Contexto


Aplicacin de las producciones de una Gramtica para obtener una cadena de terminales. Consiste en sustituir la variable de la cabeza por el cuerpo de la produccin. Smbolo empleado es: (un paso de derivacin) A si existe la produccin A A en V y , , en (V U T)* * Este smbolo indica mltiples pasos de derivacin Por ejemplo de la GLC anterior S | 0 | 1 | 1S1 | 0S0 Una derivacin sera la siguiente: S 1S1 11S11 110S01 1101011 esta cadena es binaria palndroma.

rboles de derivacin Es un rbol formado a partir de la derivacin de una gramtica. Sirve para estudiar la ambigedad (ms de un rbol de derivacin y por tanto de interpretaciones). Los arboles de derivacin permiten hacer una clasificacin jerrquica en las palabras de un lenguaje que es til en aplicaciones como la compilacin de lenguajes de programacin. Los vrtices de una rbol de derivacin son etiquetados con terminales o variables de la gramtica o posiblemente con . Si un vrtice interior n es etiquetado con A, y los hijos de n son etiquetados con X1, X2, , Xk por la izquierda, entonces A X1X2Xk debe ser una produccin. Caractersticas: Cada nodo interior es variable. Cada nodo hoja es Terminal o . Si existe una produccin A X1X2Xk, ver el siguiente rbol:

La cadena resultado del rbol: las hojas del rbol concatenadas de izquierda a derecha, recorrido en pre orden.

Gramticas Libres de Contexto

Por ejemplo, para la siguiente gramtica:

Su rbol de derivacin es:

Formalmente, sea G = (V, T, P, S) una Gramticas Libres de Contexto. Un rbol es de derivacin es G si: Cada vrtice tiene una etiqueta y es un smbolo en V u T u {}. La etiqueta de la raz es S. Si un vrtice es interior y tiene etiqueta A, entonces A V. Si un vrtice n tiene etiqueta A y los vrtices n1, n2, , nk son hijos del vrtice n, ordenados por la izquierda, con etiquetas X1, X2, , Xk, respectivamente, entonces A X1X2 Xk debe ser una produccin en P. Si el vrtice n tiene etiqueta , entonces n es una hoja y es el nico hijo de su padre.

Gramticas Libres de Contexto


BNF (Backus-Naur Form) Las gramticas libres del contexto se escriben, frecuentemente, utilizando una notacin conocida como BNF (Backus-Naur Form). BNF es la tcnica ms comn para definir la sintaxis de los lenguajes de programacin. El BNF se utiliza extensamente como notacin para las gramticas de los lenguajes de programacin de la computadora, de los sistemas de comando y de los protocolos de comunicacin, as como una notacin para representar partes de las gramticas de la lengua natural (por ejemplo, el metro en la poesa de Venpa). La mayora de los libros de textos para la teora o la semntica del lenguaje de programacin documentan el lenguaje de programacin en BNF. Algunas variantes, tales como la Augmented Backus-Naur Form (ABNF) y la Extended Backus Naur Form (EBNF), tienen su propia documentacin. En esta notacin se deben seguir las siguientes convenciones: Los no terminales se escriben entre parntesis angulares < >. Los terminales se representan con cadenas de caracteres sin parntesis angulares. El lado izquierdo de cada regla debe tener nicamente un no terminal (ya que es una gramtica libre del contexto). El smbolo ::=, que se lee se define como o se reescribe como, se utiliza en lugar de . Varias producciones del tipo: o <A> ::= <B1> o <A> ::= <B2> o . o . o . o <A> ::= <Bn>

Se pueden escribir como <A> ::= <B1> | <B2> | ... | <Bn>. Ejemplo: La siguiente es una definicin BNF del lenguaje que consiste de cadenas de parntesis anidados: <cadena_par> :: = <cadena_par> <parntesis> | <parntesis> <Parntesis> ::= (<cadena_par> ) | ( ) Por ejemplo las cadenas ( ) ( ( ) ) y ( ) ( ) ( ) son cadenas vlidas. En cambio las cadenas ( ( ) y ( ) ) ) no pertenecen al lenguaje.

10

Gramticas Libres de Contexto


Conceptos Sobre Gramticas Libres de Contexto rbol de derivacin o Las derivaciones se pueden representar en forma de rbol Derivacin ms a la izquierda y ms a la derecha o 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 o 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). o Una gramtica G se denomina ambigua si el lenguaje que genera contiene alguna sentencia ambigua. Lenguaje inherentemente ambiguo o Un lenguaje se denomina inherentemente ambiguo si no existe una gramtica no ambigua que lo genere.

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. 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 porque pueden ser descritos mediante una gramtica de libre contexto. 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.

11

Gramticas Libres de Contexto

Conclusin
Habiendo concluido con el desarrollo del tema gramticas libres de contexto, podemos entender que cada lenguaje debe de tener una gramtica libre de contexto empleada. Que para entender la gramatical libre de contexto se debe tener en cuenta los siguientes tema: rbol de derivacin, Derivacin ms a la izquierda y ms a la derecha, Gramtica ambigua, y los lenguajes inherentemente ambiguos. Las gramticas libres del contexto se escriben, frecuentemente, utilizando una notacin conocida como BNF (Backus-Naur Form). El cual es la tcnica ms comn para definir la sintaxis de los lenguajes de programacin.

Referencia
http://acme.math.cinvestav.mx/~basico/cuatro.html http://www.slideshare.net/abelrod12/gramtica-de-contexto-libre-abel-rodriguez-081297 http://ccc.inaoep.mx/~emorales/Cursos/Automatas/GramsLibresContexto.pdf http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r43399.PDF http://www.exa.unicen.edu.ar/catedras/ccomp1/Apunte5.pdf http://es.wikipedia.org/wiki/Notaci%C3%B3n_de_Backus-Naur http://webdelprofesor.ula.ve/ingenieria/hyelitza/materias/preteoria/apuntes/tema4.p df http://gramaticas.galeon.com/gramatica.html

12