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

29
1 Gramáticas

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

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

1

Gramáticas

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

2

Importancia de las gramáticas

Son una herramientamuy poderosa paradescribir y analizar

lenguajes.

Page 3: 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?

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

4

Definición recursiva de PAL

1. , a, b PAL2. Si S PAL entonces aSa y bSb PAL3. 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

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

5

Gramática que define PAL

1. S , S a, S b.Abreviando: S | a | b.

2. S aSa, S bSb.Abreviando: S aSa | 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.

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

6

Ejemplo: palabras no palíndromes

• S aSa | bSb | A

• A aBb | bBa

• B aB | bB |

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

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 uv produce la palabra uv, por lo que las reglas pueden ser vistas como reglas de remplazo.

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

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.

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

9

Lenguaje generado por una gramática

Definición: Decimos que la cadena w1 deriva en un paso a la cadena w2 (w1 G w2) 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.

* G

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

10

Ejemplo• G = (V, , R, S)

– V = {a, b, c, S, A, B} = {a, b, c}– R: S AccA A BA | B a | b | c

w1 = abcc L(G) y w2 = acb L(G)Cadena Regla DerivaciónS S AccA S AccAAccA A BA BAccABAccA B a aAccAaAccA A BA aBAccAaBAccA B b abAccAabAccA A abccAabccA A abcc

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

11

Jerarquía de Chomsky

Gramáticas Lenguajes Máquinas que los aceptan

Sin restricción (tipo 0)

Recursivamente numerables

Máquinas de Turing

Sensitivas al contexto (tipo 1)

Sensitivos al contexto

Autómatas lineales

Libres de contexto (tipo 2)

Libres de contexto Autómatas de pila

Regulares (tipo 3)

Regulares Autómatas finitos deterministas o no

deterministas

G3 G2 G1 G0

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

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 |

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

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

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

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 sonS aS | aA A bA | b

S Za b

b

A

a

M:

G y M son equivalentes, ambos reconocen a+b+.

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

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

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

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.

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

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 A B

Z

aa

a

abb

b

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

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.

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

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

• 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

q0

b

a

a

a

a,b

b

b

q1

q2q3

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

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?

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

21

Ejemplos• Ejemplo 1: La LLC (V, , R, S) donde V = {S, A, a, b}, = {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, , R, S) donde V = {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.

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

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.

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

23

Derivaciones de ababaa

aA AAAA Aa aA

aAAA aAAA AAAa aAAA

abAAA abAAA AAbAa aAAa

abaAA abaAA AAbaa abAAa

ababAA ababAA AbAbaa abAbAa

ababaA ababaA Ababaa ababAa

ababaa ababaa ababaa ababaa

S AA S AA S AA S AA

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

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.

wS G*

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

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 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.

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

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 aa S 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

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

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 + y x

E

E E+

x * yx

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

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.

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

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