1 / 29

Gramáticas

Gramáticas. Importancia de las gramáticas. Son una herramienta muy poderosa para describir y analizar lenguajes. 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.

maddock
Download Presentation

Gramáticas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Gramáticas

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

  3. Ejemplo: Palíndromes • Un palíndrome es una palabra w que cumple w = wR, donde wR es la misma palabra w sólo que escrita en orden inverso. • Sea PAL = {w (a + b)*| w = wR}, 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. Definición recursiva de PAL • , a, bPAL • Si SPAL entonces aSa y bSbPAL • 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: • S puede tomar el valor , a o b. • 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. Gramática que define PAL • S  , S  a, S  b.Abreviando: S   | a | b. • S  aSa, S  bSb.Abreviando: S  aSa | bSb. • 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. Ejemplo: palabras no palíndromes • S  aSa | bSb | A • A  aBb | bBa • B  aB | bB | 

  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. 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 <variable>. • 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. Lenguaje generado por una gramática Definición: Decimos que la cadena w1deriva en un paso a la cadena w2 (w1 Gw2) si y solo si existen cadenas x, y V* tales que w1 = xuy y w2 = 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 cadenaw: S = w1 w2 w3 wn= 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. Ejemplo • G = (V,, R, S) • V = {a, b, c, S, A, B} •  = {a, b, c} • R: S  AccAA  BA |  B  a | b | c w1 = abcc L(G) y w2 = acb L(G) CadenaReglaDerivación SS  AccA S AccA AccA A  BA BAccA BAccA B  a aAccA aAccA A  BA aBAccA aBAccA B  b abAccA abAccA A   abccA abccAA   abcc

  11. Jerarquía de Chomsky G3G2G1G0

  12. Descripción de las gramáticas • Gramáticas Regulares (tipo 3 o G3): 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 G2): 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. ...Descripción de las gramáticas • Gramáticas Sensitivas al Contexto (tipo 1 o G1): 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 | aAbc Ab  bA Ac  Bbcc bB  Bb aB  aa | aaA • Gramáticas sin restricción (tipo 0 o G0): 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 | aBC CB  BC aB  ab bB  bb bC  bc cC  cc A  bc

  14. a b M: a b A S Z 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 sonS aS | aA A bA | b G y M son equivalentes, ambos reconocen a+b+.

  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, SM, , 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 KF ={A | A  es una regla}en caso contrario

  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. 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 a a a S A B b b a b Z

  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. Ejemplo • Convertir un autómata finito a una gramática regular. • Q0 aQ1 • Q0 bQ0 • Q1 aQ2 • Q1 bQ0 • Q2 aQ3 • Q2 bQ0 • Q3 aQ3 • Q3 bQ3 • Q0 a • Q0 b • Q1 a • Q1 b • Q2 b b • Convertir un autómata finito a una gramática regular. • Q0 aQ1 • Q0 bQ0 • Q1 aQ2 • Q1 bQ0 • Q2 aQ3 • Q2 bQ0 • Q3 aQ3 • Q3 bQ3 • Q0 a • Q0 b • Q1 a • Q1 b • Q2 b b q1 q0 a a b q2 q3 a a,b

  20. Gramáticas y Lenguajes Libres de Contexto (GLC’s y LLC’s) • 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 LLC’s que no sean lenguajes regulares?

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

  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, S, R, S) • V = {S, A, a, b} • = {a, b} • R: S AAA AAA | bA | Ab | a En esta gramática existen, por lo menos cuatro derivaciones de la palabra ababaa.

  23. Derivaciones de ababaa S AA S AA S AA S AA

  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 x1x2...xn (con xi V) es la regla de derivación aplicada a la cadena uAv, entonces añadir x1,x2,..., xn 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. ... Á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 x1x2...xn, cada xi se convierte en hoja y en el orden de las hojas A se reemplaza por x1, x2, ...,xn. • Al utilizar la regla A , simplemente se reemplaza Apor . • 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. S S a S a S a a 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 izquierdaS aS  aa S Sa  aaEsta gramática genera el lenguaje a+ que también es el lenguaje generado por la gramática no ambigua S aS| a.

  27. E E E E + E  E x x x * y + y x 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).

  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 = {anbncmdm} {anbmcmdn}, n  1, m  1.

  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: {anbncn | n  0} no es LLC.

More Related