Você está na página 1de 29

Gramticas

Importancia de las gramticas

Son una herramienta muy poderosa para describir y analizar lenguajes.


2

Ejemplo: Palndromes
Un palndrome es una palabra w que cumple w = wR, donde wR es la misma palabra w slo que escrita en orden inverso. Sea PAL = {w (a + b)*| w = wR}, es decir, PAL es el lenguaje que consiste de las palabras palndromes sobre {a, b}. Ejemplos de palndromes sobre {a, b}
a, aba, aabbaa, babaabab.

Es PAL un lenguaje regular?

Definicin recursiva de PAL


1. 1. 2. , 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 nmero 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 smbolo , entonces escribiramos
4

Gramtica que define PAL


1. S , S a, S b. Abreviando: S | a | b. 2. S aSa, S bSb. Abreviando: S aSa | bSb.
3. Cualquier palndrome sobre {a, b} debe poder ser obtenido aplicando un nmero finito de veces las reglas de reemplazo 1 y 2.

Ejemplo: palabras no palndromes


S aSa | bSb | A A aBb | bBa B aB | bB |

Definicin
Una gramtica G es un cudruplo (V, , R, S) donde
V es un alfabeto. , el conjunto de los smbolos terminales, es un subconjunto de V. R, el conjunto de reglas de transformacin o de produccin, es un subconjunto de V* V*. S, el smbolo inicial, es un elemento de V . Los elementos de V son llamados variables o smbolos 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.

Smbolos terminales: son elementos del alfabeto que no se Variables o smbolos no terminales: son elementos

Explicacin de los elementos de una gramtica


pueden transformar, por eso se llaman terminales. Normalmente se denotan por letras minsculas. auxiliares que permiten poner restricciones sintcticas 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 maysculas o por la notacin <variable>.

Reglas: permiten reemplazar variables para generar oraciones


vlidas 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

Smbolo inicial: es el smbolo a partir del cual se generan todas


las palabras vlidas.
8

Lenguaje generado por una gramtica


Definicin: 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 adems existe una regla u v en R. Si no hay lugar a confusin, se acostumbra omitir el subndice que indica la gramtica G. Definicin: una cadena w V* es derivable a partir de la gramtica G si y solo si existe una secuencia de derivacin iniciando en el smbolo inicial y terminando en la cadena w: S = w1 w*2 w3 wn = w. G Escribimos si deriva a en 0 o ms pasos. Definicin: el lenguaje generado por una gramtica G, L(G), es igual al conjunto de las palabras en * (es decir, consisten de smbolos terminales) derivables a partir de G. Una gramtica describe las reglas sintcticas del lenguaje. Si una palabra no sigue las reglas, entonces no pertenecen al lenguaje generado por la gramtica.
9

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 Derivacin S S AccA S AccA AccA A BA BAccA BAccA B a aAccA aAccA A BA aBAccA aBAccA B b abAccA abAccA A abccA abccA A abcc
10

Jerarqua de Chomsky
Gramticas
Sin restriccin (tipo 0) Sensitivas al contexto (tipo 1) Libres de contexto (tipo 2) Regulares (tipo 3)

Lenguajes

Mquinas que los aceptan

Recursivamente Mquinas de Turing numerables Sensitivos al Autmatas lineales contexto Libres de contexto Autmatas de pila Regulares Autmatas finitos deterministas o no deterministas

G3 G2 G1 G0
11

Descripcin de las gramticas


Gramticas Regulares (tipo 3 o G3): el conjunto de reglas es un subconjunto finito de (V ) [(V ) ), es decir:
El lado izquierdo consiste slo de una variable. El lado derecho consiste de Un smbolo terminal seguido de una variable Slo un smbolo terminal La cadena vaca.

Ejemplo: A aB | a | Gramticas 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 slo de una variable. No hay restricciones para el lado derecho.

Ejemplo: S aSb | ab |
12

...Descripcin de las gramticas


Gramticas 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 smbolo no terminal. Adems, 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-contraccin garantiza que un lenguaje sensitivo al contexto no contiene . Ejemplos: S abc | aAbc Ab bA Ac Bbcc bB Bb aB aa | aaA Gramticas sin restriccin (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
13

Autmatas y gramticas
Decimos que una gramtica regular G es equivalente a un autmata M (G M) si el lenguaje reconocido por el autmata es igual al lenguaje generado por la gramtica, es decir, si L(G) = L(M). Ejemplo:
Gramtica G con V = {a, b, S, A}, = {a, b}, variables = {S, A}, el smbolo inicial es S y las reglas de produccin son S aS | aA A bA | b a b

M:

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


14

Sea G = (V, G, R, S) una gramtica regular. Un AFN que reconoce el mismo lenguaje que G es el autmata M = (K, , , s, F) definido por
K= (V ) {Z} si existe alguna regla A a (A variable y a smbolo terminal) (V ) (variables) en caso contrario.

Conversin de gramticas regulares a autmatas finitos

El alfabeto del autmata consiste de los smbolos terminales de la gramtica, es decir, M = G. B cuando exista una regla A aB (a smbolo terminal y A, B variables) (A,a) = Z cuando exista una regla A a (a smbolo terminal y A variable) El estado inicial del autmata es el smbolo inicial de la gramtica. {A | A es una regla} {Z} si Z K F= {A | A es una regla} en caso contrario
15

Conversin de gramticas regulares a...


En palabras:
Asociar a los smbolos no terminales (variables) de la gramtica los estados del autmata. Cada regla A bC de la gramtica nos define una transicin (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 smbolo no-terminal asociado.
16

Ejemplo
Convertir una gramtica regular a un autmata finito.
S aA S bA A aB A bB A a B aA B bA a S b A a b Z a a

17

Conversin de autmatas finitos a gramticas regulares


Asociar a los estados del autmata los smbolos no terminales de la gramtica. El smbolo inicial de la gramtica corresponde al estado inicial del autmata. La transicin (A, b) = C define la regla A bC. En caso de que el estado C en la transicin (A, b) = C sea un estado final, entonces aadimos la regla A b, adems de la regla A bC, ya incluida en el paso anterior.
18

Ejemplo
Convertir un autmata finito a una gramtica regular. Convertir un autmata finito a una gramtica regular.
Q0 aQ1 1 Q0 bQ0 0 Q1 aQ2 2 Q1 bQ0 0 Q2 aQ33 Q2 bQ00 Q3 aQ33 Q3 bQ33 Q0 a Q0 b Q1 a Q1 b Q2 b

b b q0 a b q3 q1 a

q2

a,b

19

Gramticas y Lenguajes Libres de Contexto (GLCs y LLCs)


Una gramtica puede generar lenguajes finitos o infinitos. En el caso de lenguajes infinitos la recursin es necesaria; esto se logra con reglas recursivas como A uAv. Toda gramtica regular es libre de contexto, pero Existen GLC que no sean regulares? En otras palabras: Existen LLCs que no sean lenguajes regulares?

20

Ejemplos
Ejemplo 1: La LLC (V, , R, S) donde V = {S, A, a, b}, = {a, b} y las reglas son S 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 son S (S) S SS S () Qu lenguaje genera? El de los parntesis bien balanceados: {(), (()), ()(), (())(), (()()), (()())(()()),...}, el cual no es regular Estos ejemplos demuestran que existen GLCs que no son 21 regulares.

Derivaciones
Derivacin por la izquierda: las reglas de reemplazo son aplicadas a la primera variable de izquierda a derecha. Derivacin 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 gramtica existen, por lo menos cuatro derivaciones de la palabra ababaa.

22

Derivaciones de ababaa
S AA aA S AA AAAA S AA Aa S AA aA

aAAA abAAA abaAA ababaA ababaa

aAAA abAAA abaAA ababaA ababaa

AAAa AAbAa AAbaa AbAbaa Ababaa ababaa

aAAA aAAa abAAa abAbAa ababAa ababaa

ababAA ababAA

23

rbol de derivacin
Para una derivacin S * w su rbol de derivacin G (parse tree) se construye de la siguiente manera:
Inicializar AD con la raz S. Si A x1x2...xn (con xi V) es la regla de derivacin aplicada a la cadena uAv, entonces aadir x1, x2, ..., xn como los hijos de A en el rbol. Si A es la regla de derivacin aplicada a la cadena uAv, entonces aadir como hijo nico de A en el rbol.

Al rbol de derivacin tambin se le llama rbol de anlisis o rbol de anlisis gramatical o rbol de anlisis sintctico.
24

... rbol de derivacin


El orden de las hojas tambin sigue el proceso iterativo de construccin del rbol:
Inicialmente slo 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.
25

Ambigedad en GLC
Una GLC es ambigua si existe una cadena w L(G) que tiene ms de una derivacin por la izquierda o ms de una derivacin por la derecha o si tiene dos o ms rboles de derivacin. En caso de que toda cadena w L(G) tenga un nico rbol de derivacin, la gramtica es no ambigua. Ejemplo: la gramtica S aS | Sa | a es ambigua porque aa tiene dos derivaciones por la izquierda S aS aa S Sa aa S a S a a
26

S S

Esta gramtica genera el lenguaje a+ que tambin es el lenguaje generado por la gramtica no ambigua S aS | a.

La gramtica para expresiones aritmticas sobre las variables x y y:


E E + E E E E E x E y

Otro ejemplo

es ambigua porque la cadena x + y x tiene dos rboles de E derivacin: E


E x + y E x E x + x E * y

La ambigedad 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 programacin: Mara 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 27 de la derecha representa x + (y x).

En algunos casos, la ambigedad de una gramtica se puede eliminar utilizando nuevas variables que eliminen los rboles de derivacin no deseados. En el ejemplo de los operadores aritmticos, adems de la variable E, que representa expresiones, tambin se utilizan las variables F para factores y T para trminos y se tienen las siguientes reglas:
E E + T T T F F (E) F y E T T F F x

Eliminar ambigedad

Existen los LLC inherentemente ambiguos para los que no existe una gramtica no ambigua equivalente. Ejemplo: L = {anbncmdm} {anbmcmdn}, n 1, m 1. 28

Los lenguajes libres de contexto (LLC) son cerrados con respecto a la unin, concatenacin y cerradura de Kleene. Sin embargo no son cerrados con respecto a la interseccin ni con respecto a la complementacin. Esto no quiere decir que la interseccin 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 interseccin no es LLC. Existen lenguajes que no sean libres de contexto? SI Ejemplo: {anbncn | n 0} no es LLC.
29

Propiedades de cerradura de los LLC

Você também pode gostar