Você está na página 1de 14

Gramtica Libre de Contexto Autores: Jean M. Bernard 13-0860 Samuel E.

Alcntara 13-0665

Introduccin En este artculo generalizaremos los conceptos de autmatas finitos y gramticas regulares a fin de obtener tcnicas para el anlisis sintctico de una mayor gama de lenguajes, conocidos como lenguajes independientes del contexto. Para esto se necesita de autmatas con un sistema de memoria interna (en forma de pila). Esta adicin incrementa de manera considerable el potencial de procesamiento de lenguaje de autmata y proporciona un marco en el cual se formulan varios algoritmos eficientes para el anlisis sintctico. Los Lenguajes Regulares son los ms simples y restringidos dentro de la jerarqua de Chomsky. Estos lenguajes pueden adems ser descritos mediante dos representaciones: las Expresiones Regulares y las Gramticas Regulares. Los lenguajes regulares se llaman as porque sus palabras contienen regularidades o repeticiones de los mismos componentes. Palabras Claves Lenguaje Formal: es un conjunto de palabras de longitud finita formadas a partir de un alfabeto. Palabras: Cadena de smbolos formados de acuerdo a la gramtica, tambin se le conoce como frmula bien formada.

Alfabeto o Vocabulario: Son el conjunto de smbolos primitivos finitos del lenguaje. Gramtica: Define un lenguaje utilizando reglas que nos permiten producir o generar cadenas de un lenguaje. Autmata: Mquina reconocedora de cadenas (palabras) de un lenguaje determinado. Terminales y No terminales: son los elementos lxicos usados en la especificacin de las normas de produccin que constituyen una gramtica formal. Normas de Produccin: Es una preposicin lgica que relaciona dos o ms objetos e incluye dos partes, la premisa y la conclusin.

Expresiones Regulares El objetivo de las expresiones regulares es representar todos los posibles lenguajes definidos sobre un alfabeto , en base a una serie de lenguajes primitivos, y unos operadores de composicin. Lenguajes primitivos: el lenguaje vaco, el lenguaje formado por la palabra vaca, y los lenguajes correspondientes a los distintos smbolos del alfabeto. Operadores de composicin: la unin, la concatenacin y el cierre. Ejemplo: Lenguaje formado por palabras de longitud par sobre as y bs : {aa,ab,ba,bb}* = ({aa} U {ab} U {ba} U {bb} )* => Expresion: (aa+ab+ba+bb)*

Gramticas Regulares En la gramtica se emplean reglas para distinguir aquellas cadenas de smbolos que constituyen enunciados aceptables de las que no. Por ejemplo, una frase sencilla en espaol puede describirse como una estructura con un sujeto seguido por un

predicado. El sujeto podra ser un nombre sencillo, mientras que el predicado podra ser un verbo intransitivo o quizs un verbo transitivo seguido por un objeto. Esta descomposicin descendente podra continuar hasta llegar a un nivel de detalle donde describimos los smbolos literales que aparecen en una frase en espaol. Podramos describir un verbo transitivo como golpear o la palabra quiere. El siguiente ejemplo muestra esta descomposicin: <frase> -> <sujeto> <predicado> <punto> <sujeto> -> <sustantivo> <sustantivo> -> Maria <sustantivo> -> Juan <predicado> -> <verbo intransitivo> <predicado> -> <verbo transitivo> <objeto> <verbo intransitivo> -> patinar <verbo transitivo> -> golpear <verbo transitivo> -> <quiere> <objeto> -> a <sustantivo> <punto> -> . Hay que sealar varios puntos con respecto al ejemplo anterior. En primer lugar, algunos de los trminos se encuentran entre corchetes se llaman terminales, o smbolos que pueden aparecer en una frase. Los trminos que se hallan encerrados

entre corchetes se denominan no terminales. Uno de estos no terminales se considera como smbolo de inicio. Cada una de las lneas se llama regla de reescritura y consiste en una parte izquierda y una derecha, conectadas por una flecha. Esta coleccin de de no terminales y terminales, junto con un smbolo de inicio y un conjunto finito de reglas de reescritura, se denomina gramtica o, ms precisamente, gramtica estructurada por frases, ya que se basa en la composicin de cadenas en trminos de frases, donde cada frase est representada por un no terminal. De manera ms formal, una gramtica se define como una cudrupla (V, T, S, R) donde V es un conjunto finito de no terminales, T es un conjunto finito de terminales, S es el smbolo inicial y R es un conjunto finito de reglas de reescritura. En general, los lados derecho e izquierdo de las reglas de reescritura de una gramtica pueden ser cualquier combinacin de terminales o no terminales, siempre y cuando el lado izquierdo contenga por lo menos un no terminal. Las no terminales se representan con letras maysculas y a los terminales con las letras minsculas. De esta manera, una regla de la forma S -> xN significar que el no terminal S se puede refinar como el terminal x seguido por el no terminal N. Una gramtica genera una cadena de terminales si, al comenzar con el smbolo de inicio, se puede producir esa cadena sustituyendo sucesivamente los patrones que se encuentran en el lado izquierdo de las reglas de reescritura de la gramtica con las expresiones correspondientes de la derecha, hasta que solo queden terminales. La secuencia de pasos de este proceso se le conoce como derivacin de la cadena. La gramtica regular adhiera a una serie de restricciones: el lado izquierdo de cualquier regla de reescritura de una gramtica regular debe consistir en un solo no terminal, mientras que el lado derecho debe ser un terminal seguido por un no terminal, o un solo terminal, o la cadena vaca. La importancia de las gramticas regulares reside en que los lenguajes generados por ella son exactamente aquellos que reconocen los autmatas finitos.

Limitaciones de los lenguajes regulares Los Autmatas Finitos estn limitados a los estados de que disponen como nico medio para recordar la serie de smbolos recibidos hasta un momento dado. Puesto de otra manera, debemos considerar que, en un AF, la nica traza de los smbolos recibidos es el estado en que se encuentra. Por lo mismo, varias secuencias distintas de caracteres que llevan a un mismo estado son consideradas como indistinguibles. Esta limitacin de los AF los hace nalmente incapaces de distinguir las palabras aceptables de las no aceptables en ciertos lenguajes, ms complicados que los lenguajes regulares. Gramticas Independientes del Contexto Para caracterizar los lenguajes que reconocen los autmatas de pilas, se presenta la gramtica independiente del contexto. A diferencia de las gramticas regulares, estas gramticas no tienen restricciones con respecto a la forma del lado derecho de sus reglas de reescritura, aunque an se requiere que el lado izquierdo de cada regla sea un solo un terminal. 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. Una gramtica libre de contexto: S -> zMNz M -> aMa

M -> z N -> bNb N -> z El trmino independiente del contexto refleja que, como el lado izquierdo de cada regla de reescritura nicamente puede contener un solo no terminal, la regla puede aplicarse sin importar el contexto donde se encuentre dicho no terminal. Por el contrario, considere una regla de reescritura cuyo lado izquierdo no contenga ms de un no terminal, como xNy -> xzy. Esta regla dice que el no terminal N puede sustituirse con el terminal z solo cuando este rodeado por los terminales x y y. Por lo tanto, la capacidad de eliminar N aplicando la regla depender del contexto en vez de ser independiente. Al igual que las gramticas regulares, las gramticas independientes del contexto generan cadenas por medio de derivaciones. No obstante, en el caso de las gramticas independientes del contexto pueden surgir dudas con respecto a cul ser el no terminal que deber reemplazarse en un paso especfico de la derivacin. Al generar una cadena con la gramtica del ejemplo anterior, el primero produce la cadena zMNz, que presenta la opcin de reemplazar el no terminal M o el N en el siguiente paso. Por consiguiente, para generar la cadena zazabzbz, se podra producir la derivacin: S -> zMNz -> zaMaNz -> zazaNz -> zazabNbz -> zazabzbz Siguiendo la regla rutinaria de aplicar siempre una regla de reescritura al no terminal situado ms a la izquierda en la cadena actual (esto se llama derivacin por la izquierda). Tambin podra producirse la derivacin: S -> zMNz -> zMbMbz -> zMbzbz -> zaMabzbz -> zazabzbz Aplicando siempre la regla de reescritura al no terminal situado ms a la
6

derecha, lo cual dara como resultado una derivacin por la derecha. Incluso se podran seguir otros patrones y obtener otras derivaciones de la misma cadena. 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. As como cualquier gramtica formal, una gramtica libre de contexto puede ser definida mediante la cudrupla: G=(Vt,Vn,P,S) donde Vt es un conjunto finito de terminales que forman las palabras del lenguaje. Vn es un conjunto finito de no terminales que permiten representar estados intermedios de la generacin de palabras del lenguaje. P es un conjunto de reglas de produccin que permiten generar las palabras del lenguaje. S Vn denominado smbolo inicial o axioma a partir del que se aplican las reglas de la gramtica para obtener las distintas palabras del lenguaje. Los elementos de P son de la forma Vn (Vt Vn). Denotacin gramatical:

Las letras A, B, C, D, E y S denotan variables, recordando que S es el smbolo de inicio. las letras minsculas a, b, c, d, e, dgitos y cadenas en letras negritas son terminales. Las letras maysculas X, Y y Z denotan smbolos que pueden terminales o variables. Las letras minsculas u, v, w, x, y, z denotan cadenas de terminales. Las letras griegas , y denotan cadenas de variables y terminales. Autmatas de Pila Al igual que un autmata finito, un autmata de pila cuenta con un flujo de entrada y un mecanismo de control que puede encontrarse en uno de entre un nmero finito de estados. Uno de estos estados se designa como el inicial y por lo menos un estado se designa como estado de aceptacin. La principal diferencia entre los autmatas de pila y los finitos es que los primeros cuentan con una pila en donde pueden almacenar informacin para recuperarla ms tarde.

Autmata de pila

Los smbolos que pueden almacenarse en esta pila (conocidos como smbolos de pila de la mquina) constituyen un conjunto finito que puede incluir algunos o todos los smbolos del alfabeto de la mquina y quiz algunos smbolos adicionales que la mquina utiliza como marcas internas. Por ejemplo, una mquina podr almacenar smbolos especiales en su pila para separar secciones que tengan interpretaciones distintas. Si una mquina inserta un smbolo especial en la pila antes de efectuar algn otro clculo, entonces la presencia de ese smbolo en la cima de la pila puede usarse como indicador de pila vaca para clculos posteriores.

Gramticas independientes del contexto y autmatas de pila Antes de considerar la relacin entre las gramticas independientes del contexto y los autmatas de pila, debemos esclarecer un aspecto de la notacin. En los anlisis que se presentan a continuacin, ser conveniente considerar transiciones nicas que insertan ms de un smbolo en la pila como, (p, a, s; q, xyz). En este caso, se insertan en la pila los smbolos z, y y,x (en ese orden). As, despus de efectuar la transicin, x

se hallar en la cima de la pila (con y debajo y z en el fondo). Las transiciones de este tipo slo representan una forma conveniente de notacin y no aaden capacidades adicionales a la mquina. La transicin de insercin mltiple ( p, a, s; q, xyz) podra simularse con la secuencia de transiciones tradicionales (p, a, s; ( , ,; q, x) , donde y z), ( , ,; ) y

son estados adicionales a los que no puede llegar

ninguna otra secuencia de transiciones. Los lenguajes generados por gramticas independientes del contexto son exactamente los mismos lenguajes que aceptan los automatos de pilas. Demostracin Para cada gramtica G independiente del contexto, existe un autmata de pila M tal que L(G) = L(M). Dada una gramtica G independiente del contexto, construimos un autmata de pila M de la manera siguiente: 1. Designe el alfabeto M como los smbolos de terminales de G, y los smbolos de pila de M como los smbolos terminales y no terminales de G, junto con el smbolo especial # (podemos suponer que # no es un smbolo terminal o no terminal de G). 2. Designe los estados de M como l,p,q y f, donde l es el estado inicial y f es el nico estado de aceptacin. 3. Introduzca la transicin (l, ,; p, #). 4. Introduzca una transicin (p,,; q, S) donde S es el smbolo inicial de G. 5. Introduzca una transicin de la forma (q, , N; q, w) para cada regla de reescritura N -> w en G (aqu empleamos nuestra nueva convencin que permite que una sola transicin inserte ms de un smbolo de pila. Especficamente, w puede ser una cadena de cero o ms smbolos, incluyendo terminales y no terminales). 6. Introduzca una transicin de la forma (q, x, x; q, ) para cada terminal x de G (es
10

decir, para cada smbolo del alfabeto de M). 7. Introduzca la transicin (q, , #; f, ).

Diagrama de transiciones de un autmata de pila construido a partir de la gramtica anterior utilizando las tcnicas presentadas en la demostracin.

Un autmata de pila construido de esta manera analiza una cadena de entrada marcando primero el fondo de la pila con el smbolo #, luego insertando en la pila el smbolo inicial de la gramtica y despus entrando al estado q. De ah y hasta que el smbolo # vuelve aparecer en la cima de la pila, el autmata extraer un no terminal de la pila y lo reemplazar con el lado derecho de una regla de reescritura aplicable, o extraer un terminal de la pila a la vez que lee el mismo terminal en la entrada. Una vez que el smbolo regresa a la cima de la pila, el autmata cambiar a su estado de aceptacin f, indicando que la entrada recibida hasta ese punto es aceptable. La cadena de smbolos que integran la parte derecha de una regla de reescritura se inserta en la pila de la derecha a izquierda, As, el no terminal situado ms a la izquierda ser el primero en surgir en la cima de la pila; por tanto, tambin ser el primero no terminal de la pila que se reemplazar. Por consiguiente, el autmata analiza su entrada efectuando una derivacin por la izquierda de acuerdo con las reglas de la gramtica en la cual se basa. Sin embargo, como ya vimos, las cadenas generadas por una gramtica independiente del contexto son exactamente aquellas
11

que tienen una derivacin por la izquierda. Entonces, el autmata acepta exactamente el mismo lenguaje que genera la gramtica.

rboles de Anlisis sintctico rboles de anlisis sintctico tambin conocidos como rboles de derivacin son una forma de representar grficamente las derivaciones en las cuales se filtra el orden en que se aplican las producciones para sustituir no terminales, siendo utilizadas, por ejemplo, en la construccin de compiladores para representar el anlisis sintctico de los programas fuente y sirviendo de base para la generacin del cdigo. Solo se puede definir rboles de derivacin para las gramticas de tipo 1 o ms restrictivas (tipo 2 y 3). Un rbol de anlisis sintctico que muestre los valores de los atributos en cada nodo, se denomina rbol de anlisis sintctico con anotaciones. El proceso de calcular los valores de los atributos en cada nodo se denomina anotar o decorar el arbol de analisis sintactico. Las hojas de un rbol de anlisis sintctico se etiquetan mediante terminales o no terminales y ledas de de izquierda a derecha constituyen una forma de frase a la que se le conoce como producto o frontera del rbol . En los rboles de anlisis sintctico: El axioma se representa en la raiz del arbol. Los nodos hojas del rbol son smbolos terminales de la gramtica. Los nodos intermedios son smbolos no terminales de la gramtica. Las derivaciones se representan creando tanto sucesores del smbolo no terminal de la izquierda como smbolos (terminales y no terminales) aparezcan en la parte derecha de las producciones.

12

Forma normal de Chomsky (FNC) Toda gramtica libre de contexto sin la cadena vaca tiene una gramtica equivalente cuyas producciones estn en la Forma Normal de Chomsky. Una gramtica en FNC tiene algunas ventajas, por ejemplo sus rboles de derivacin son binarios, la forma de sus reglas ms simples etc. Una gramtica se dice que est en la Forma Normal de Chomsky si sus reglas son de una de estas formas: A BC A a Siendo A, B, C no terminales y a un terminal ( A, B, C N y a ). La utilidad principal de la forma normal de Chomsky es que permite una mejora en la eficiencia de los algoritmos que operan con gramticas.

Referencias
Brookshear, J. Glenn. Teora de la Computacin. Lenguajes Formales, Autmatas y

13

Complejidad. Addison-Wesley Iberoamericana. 1993.

Captulo 7: Expresiones Regulares. Extraido el 20 de Febrero del 2014 de http://www.ia.urjc.es/grupo/docencia/automatas_itis/apuntes/capitulo7.pdf

Brena, Ramon. Autmatas y Lenguajes. Extraido el 21 de Febrero del 2014 de http://virtual.unibe.edu.do/file.php?file=%2F712%2FRamon.Brena.-.Automatas.y.Lenguajes__By_Santirub.pdf

Pedro, I., Paloma, M. y Daniel, B. Lenguajes, gramticas y autmatas: Un enfoque prctico. Pearson Education. 1997.

14

Você também pode gostar