La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

1 Gramáticas. 2 Importancia de las gramáticas Son una herramienta muy poderosa para describir y analizar lenguajes.

Presentaciones similares


Presentación del tema: "1 Gramáticas. 2 Importancia de las gramáticas Son una herramienta muy poderosa para describir y analizar lenguajes."— Transcripción de la presentación:

1 1 Gramáticas

2 2 Importancia de las gramáticas Son una herramienta muy poderosa para describir y analizar lenguajes.

3 3 Ejemplo: Palíndromes Un palíndrome es una palabra w que cumple w = w R, donde w R es la misma palabra w sólo que escrita en orden inverso. Sea PAL = {w (a + b) * | w = w R }, es decir, PAL es el lenguaje que consiste de las palabras palíndromes sobre {a, b}. Ejemplos de palíndromes sobre {a, b} –a, aba, aabbaa, babaabab. ¿Es PAL un lenguaje regular?

4 4 Definición recursiva de PAL 1., a, b PAL 2.Si S PAL entonces aSa y bSb PAL 3.Ninguna cadena pertenece a PAL a menos que pueda ser obtenida utilizando las reglas 1 y 2 un número finito de veces. Podemos considerar a S como una variable que representa genericamente un elemento de PAL cuyo valor queremos calcular. Informalmente, las reglas que definen PAL pueden reescribirse como: 1.S puede tomar el valor, a o b. 2.S puede tomar el valor aSa o bSb, donde la nueva S debe ser calculada. Y si en lugar de escribir puede tomar el valor escribimos el símbolo, entonces escribiríamos

5 5 Gramática que define PAL 1.S, S a, S b. Abreviando: S | a | b. 2.S a Sa, S bSb. Abreviando: S a Sa | bSb. 3.Cualquier palíndrome sobre {a, b} debe poder ser obtenido aplicando un número finito de veces las reglas de reemplazo 1 y 2.

6 6 Ejemplo: palabras no palíndromes S a Sa | bSb | A A a Bb | bBa B a B | bB |

7 7 Definición Una gramática G es un cuádruplo (V,, R, S) donde –V es un alfabeto. –, el conjunto de los símbolos terminales, es un subconjunto de V. –R, el conjunto de reglas de transformación o de producción, es un subconjunto de V * × V *. –S, el símbolo inicial, es un elemento de V. Los elementos de V son llamados variables o símbolos no terminales. Por lo general las reglas se escriben en lugar de (, ). Aplicar la regla a una palabra u v produce la palabra u v, por lo que las reglas pueden ser vistas como reglas de remplazo.

8 8 Explicación de los elementos de una gramática Símbolos terminales: son elementos del alfabeto que no se pueden transformar, por eso se llaman terminales. Normalmente se denotan por letras minúsculas. Variables o símbolos no terminales: son elementos auxiliares que permiten poner restricciones sintácticas a un lenguaje. Las variables sí se pueden transformar, utilizando las reglas, en una cadena de variables y/o terminales. Por lo general se denotan por letras mayúsculas o por la notación. Reglas: permiten reemplazar variables para generar oraciones válidas de un lenguaje. Puede haber varias reglas para una misma variable, en este caso y para ahorrar espacio, las distintas opciones se colocan en una sola regla con los distintos reemplazos separados por |. Por ejemplo | | abrevia las tres reglas Símbolo inicial: es el símbolo a partir del cual se generan todas las palabras válidas.

9 9 Lenguaje generado por una gramática Definición: Decimos que la cadena w 1 deriva en un paso a la cadena w 2 (w 1 G w 2 ) si y solo si existen cadenas x, y V * tales que w 1 = xuy y w 2 = xvy y además existe una regla u v en R. Si no hay lugar a confusión, se acostumbra omitir el subíndice que indica la gramática G. Definición: una cadena w V * es derivable a partir de la gramática G si y solo si existe una secuencia de derivación iniciando en el símbolo inicial y terminando en la cadena w: S = w 1 w 2 w 3 w n = w. Escribimos si deriva a en 0 o más pasos. Definición: el lenguaje generado por una gramática G, L(G), es igual al conjunto de las palabras en * (es decir, consisten de símbolos terminales) derivables a partir de G. Una gramática describe las reglas sintácticas del lenguaje. Si una palabra no sigue las reglas, entonces no pertenecen al lenguaje generado por la gramática.

10 10 Ejemplo G = (V,, R, S) –V = {a, b, c, S, A, B} – = {a, b, c} –R: S AccAA BA | B a | b | c w 1 = abcc L(G) y w 2 = acb L(G) CadenaReglaDerivación S S AccAS AccA AccA A BA BAccA BAccAB a aAccA aAccAA BA aBAccA aBAccAB b abAccA abAccAA abccA abccA A abcc

11 11 Jerarquía de Chomsky G 3 G 2 G 1 G 0

12 12 Descripción de las gramáticas Gramáticas Regulares (tipo 3 o G 3 ): el conjunto de reglas es un subconjunto finito de (V ) [ (V ) ), es decir: –El lado izquierdo consiste sólo de una variable. –El lado derecho consiste de Un símbolo terminal seguido de una variable ó Sólo un símbolo terminal ó La cadena vacía. Ejemplo: A aB | a | Gramáticas Libres de Contexto, GLC, (tipo 2 o G 2 ): el conjunto de reglas es un subconjunto finito de (V ) V *, es decir: –El lado izquierdo consiste sólo de una variable. –No hay restricciones para el lado derecho. Ejemplo: S aSb | ab |

13 13...Descripción de las gramáticas Gramáticas Sensitivas al Contexto (tipo 1 o G 1 ): el conjunto de reglas es un subconjunto finito de V + × V +, es decir, las reglas son de la forma A donde,, V * y A V, es decir, A es un símbolo no terminal. Además, las reglas son no- contractivas, es decir, la longitud del lado izquierdo es menor o igual a la longitud del lado derecho. Esta propiedad de no- contracción garantiza que un lenguaje sensitivo al contexto no contiene. Ejemplos: S abc | aAbcAb bAAc Bbcc bB BbaB aa | aaA Gramáticas sin restricción (tipo 0 o G 0 ): el conjunto de reglas es un subconjunto finito de V + × V *, es decir, no hay restricciones para las reglas, excepto que el lado izquierdo no es. Ejemplos: S aSBC | aBCCB BCaB ab bB bbbC bccC ccA bc

14 14 Autómatas y gramáticas Decimos que una gramática regular G es equivalente a un autómata M (G M) si el lenguaje reconocido por el autómata es igual al lenguaje generado por la gramática, es decir, si L(G) = L(M). Ejemplo: Gramática G con V = {a, b, S, A}, = {a, b}, variables = {S, A}, el símbolo inicial es S y las reglas de producción son S aS | aAA bA | b S Z ab b A a M:M: G y M son equivalentes, ambos reconocen a + b +.

15 15 Conversión de gramáticas regulares a autómatas finitos Sea G = (V, G, R, S) una gramática regular. Un AFN que reconoce el mismo lenguaje que G es el autómata M = (K,,, s, F) definido por (V ) {Z} si existe alguna regla A a (A variable y a símbolo terminal) K = (V ) (variables) en caso contrario. El alfabeto del autómata consiste de los símbolos terminales de la gramática, es decir, M = G. B cuando exista una regla A aB (a símbolo terminal y A, B variables) (A,a) = Z cuando exista una regla A a (a símbolo terminal y A variable) El estado inicial del autómata es el símbolo inicial de la gramática. {A | A es una regla} {Z} si Z K F = {A | A es una regla} en caso contrario

16 16 Conversión de gramáticas regulares a... En palabras: –Asociar a los símbolos no terminales (variables) de la gramática los estados del autómata. –Cada regla A bC de la gramática nos define una transición (A, b) = C; A y C son variables, b es terminal. –Las reglas A b, en caso que haya, nos definen transiciones (A, b) = Z, donde Z es un nuevo estado para el que no hay un símbolo no-terminal asociado.

17 17 Ejemplo Convertir una gramática regular a un autómata finito. –S aA –S bA –A aB –A bB –A a –B aA –B bA S AB Z a a a a b b b

18 18 Conversión de autómatas finitos a gramáticas regulares Asociar a los estados del autómata los símbolos no terminales de la gramática. El símbolo inicial de la gramática corresponde al estado inicial del autómata. La transición (A, b) = C define la regla A bC. En caso de que el estado C en la transición (A, b) = C sea un estado final, entonces añadimos la regla A b, además de la regla A bC, ya incluida en el paso anterior.

19 19 Ejemplo Convertir un autómata finito a una gramática regular. –Q 0 aQ 1 –Q 0 bQ 0 –Q 1 aQ 2 –Q 1 bQ 0 –Q 2 aQ 3 –Q 2 bQ 0 –Q 3 aQ 3 –Q 3 bQ 3 –Q 0 a –Q 0 b –Q 1 a –Q 1 b –Q 2 b Convertir un autómata finito a una gramática regular. –Q 0 aQ 1 –Q 0 bQ 0 –Q 1 aQ 2 –Q 1 bQ 0 –Q 2 aQ 3 –Q 2 bQ 0 –Q 3 aQ 3 –Q 3 bQ 3 –Q 0 a –Q 0 b –Q 1 a –Q 1 b –Q 2 b q0q0 b a a a a,b b b q1q1 q2q2 q3q3

20 20 Gramáticas y Lenguajes Libres de Contexto (GLCs y LLCs) Una gramática puede generar lenguajes finitos o infinitos. En el caso de lenguajes infinitos la recursión es necesaria; esto se logra con reglas recursivas como A uAv. Toda gramática regular es libre de contexto, pero ¿Existen GLC que no sean regulares? En otras palabras: ¿Existen LLCs que no sean lenguajes regulares?

21 21 Ejemplos Ejemplo 1: La LLC (V,, R, S) donde V = {S, A, a, b}, = {a, b} y las reglas son S AA aAb A ¿Qué lenguaje genera? {w = a n b n | n 0}, el cual no es regular. Ejemplo 2: La GLC (V,, R, S) donde V = {S,(, )}, = {(, )} y las reglas son S (S)S SS S () ¿Qué lenguaje genera? El de los paréntesis bien balanceados: {(), (()), ()(), (())(), (()()), (()())(()()),...}, el cual no es regular Estos ejemplos demuestran que existen GLCs que no son regulares.

22 22 Derivaciones Derivación por la izquierda: las reglas de reemplazo son aplicadas a la primera variable de izquierda a derecha. Derivación por la derecha: las reglas de reemplazo son aplicadas a la última variable de izquierda a derecha. Ejemplo: G = (V,, R, S) –V = {S, A, a, b} – = {a, b} –R: S AA A AAA | bA | Ab | a En esta gramática existen, por lo menos cuatro derivaciones de la palabra ababaa.

23 23 Derivaciones de ababaa S AA

24 24 Árbol de derivación Para una derivación su árbol de derivación (parse tree) se construye de la siguiente manera: –Inicializar AD con la raíz S. –Si A x 1 x 2...x n (con x i V) es la regla de derivación aplicada a la cadena uAv, entonces añadir x 1, x 2,..., x n como los hijos de A en el árbol. –Si A es la regla de derivación aplicada a la cadena uAv, entonces añadir como hijo único de A en el árbol. Al árbol de derivación también se le llama árbol de análisis o árbol de análisis gramatical o árbol de análisis sintáctico.

25 25... Árbol de derivación El orden de las hojas también sigue el proceso iterativo de construcción del árbol: –Inicialmente sólo hay la hoja S y el orden es obvio. –Al utilizar la regla A x 1 x 2...x n, cada x i se convierte en hoja y en el orden de las hojas A se reemplaza por x 1, x 2,...,x n. –Al utilizar la regla A, simplemente se reemplaza A por. La cadena de caracteres terminales que se obtiene al recorrer las hojas en orden se llama el producto del árbol. Ver figuras 3.2 y 3.3 del libro de Sudkamp.

26 26 Ambigüedad en GLC Una GLC es ambigua si existe una cadena w L(G) que tiene más de una derivación por la izquierda o más de una derivación por la derecha o si tiene dos o más árboles de derivación. En caso de que toda cadena w L(G) tenga un único árbol de derivación, la gramática es no ambigua. Ejemplo: la gramática S aS | Sa | a es ambigua porque aa tiene dos derivaciones por la izquierda S aS aaS Sa aa Esta gramática genera el lenguaje a + que también es el lenguaje generado por la gramática no ambigua S aS | a. S a S a S S a a

27 27 Otro ejemplo La gramática para expresiones aritméticas sobre las variables x y y: –E E + E –E E E –E x –E y es ambigua porque la cadena x + y x tiene dos árboles de derivación: La ambigüedad puede producir serios problemas en lenguajes cuyo significado depende, en parte, de su estructura, como es el caso de los lenguajes naturales y los de programación: María habló de Leticia embarazada o José vio a Luis con lentes. En el ejemplo de arriba el árbol izquierdo representa (x + y) x y el de la derecha representa x + (y x). E E E x +yx E E E+ x *yx

28 28 Eliminar ambigüedad En algunos casos, la ambigüedad de una gramática se puede eliminar utilizando nuevas variables que eliminen los árboles de derivación no deseados. En el ejemplo de los operadores aritméticos, además de la variable E, que representa expresiones, también se utilizan las variables F para factores y T para términos y se tienen las siguientes reglas: –E E + T E T –T T F T F –F (E) F x –F y Existen los LLC inherentemente ambiguos para los que no existe una gramática no ambigua equivalente. Ejemplo:L = {a n b n c m d m } {a n b m c m d n }, n 1, m 1.

29 29 Propiedades de cerradura de los LLC Los lenguajes libres de contexto (LLC) son cerrados con respecto a la unión, concatenación y cerradura de Kleene. Sin embargo no son cerrados con respecto a la intersección ni con respecto a la complementación. Esto no quiere decir que la intersección de dos LLC necesariamente no sea un LLC o que el complemento de un LLC necesariamente no sea LLC, solamente estipula que hay LLCs cuyo complemento no es un LLC, asimismo, hay LLCs cuya intersección no es LLC. ¿Existen lenguajes que no sean libres de contexto? SI Ejemplo: {a n b n c n | n 0} no es LLC.


Descargar ppt "1 Gramáticas. 2 Importancia de las gramáticas Son una herramienta muy poderosa para describir y analizar lenguajes."

Presentaciones similares


Anuncios Google