You are on page 1of 8

Gramticas y

Lenguajes
Lenguajes y Gramticas
Matemticas
Discretas Tenemos dos clases de lenguaje:
Natural
Lenguaje

Lenguaje Formal
Lenguajes y
Gramticas

Gramticas y Gramticas y
Lenguajes Lenguajes
Cont Lenguaje Formal

 Definicin:
 De acuerdo al diccionario Webster, un lenguaje es un cuerpo  Sea A un conjunto finito. Un lenguaje (formal) L sobre A es un
de palabras y mtodos de combinacin de palabras utilizado, subconjunto de A*, el conjunto de todas las cadenas sobre A.
y comprendido por una comunidad de tamao considerable,
tales lenguajes se llaman Lenguajes Naturales.  Por Ejemplo
 Sea A = {a , b}.
a) El conjunto L de todas las cadenas sobre A que contiene un
 Los Lenguajes Formales se utilizan para modelar los lenguajes
nmero impar de letras a es un lenguaje sobre A.
naturales y para comunicarse con las computadoras.
b) L es precisamente el conjunto de cadenas sobre A aceptadas
por el autmata de estado finito.
c) Una forma de definir un lenguaje es dar una lista de reglas
(gramtica) que ste debe cumplir.
Escribimos G=(N, T, P, )

1
Gramticas y Gramticas y
Lenguajes Lenguajes
Gramtica Simple Cont
 Ejemplo 1:
 Definicin:  Sean:

 Una gramtica con estructura de frases (o simplemente  N = {, S}


una gramtica) G consta de:  T = {a, b}
 P = { b , aS,S bS, S b}
a) Un conjunto finito N de smbolos no terminales.
 Entonces G = (N, T, P ,) es una gramtica.
b) Un conjunto finito T de smbolos terminales, donde NT=.
c) Un subconjunto finito P de [(NT)*-T*] x (NT)*,llamado el
conjunto de producciones.  Podemos construir un Lenguaje L(G) a partir de una gramtica G.
Se usan las producciones para deducir las cadenas que forman el
d) Un smbolo inicial N. 
leguaje.

 Generalmente, una produccin (A,B) P se escribe:  A partir del smbolo inicial se utilizan (remplazan) varias veces las
AB producciones hasta obtener una cadena de smbolos terminales (T).
 A debe incluir al menos un smbolo no Terminal, mientras que B
puede constar de cualquier combinacin de smbolos terminales y  El lenguaje L(G) es el conjunto de todas las cadenas que se
no terminales. obtienen.

Gramticas y Gramticas y
Lenguajes Lenguajes
Derivacin Cont
 Definicin:  Ejemplo 2:
 Sea G=(N,T,P, ) una gramtica.  Sea G la gramtica
 Si es una produccion y xy (NT)*, decimos que x y se  N={,S}
deriva directamente de x y y escribimos  T={a,b}
 P={ b , aS,S bS, S b}
xy xy  G={N,T,P,}

 Si i (NT)* para i=1,.....,n y i+1 se deriva directamente de i para


i=1,...,n-1, decimos que n se deriva de i y escribimos  La cadena abSbb se deriva directamente de aSbb, lo cual se
escribe
i n
aSbb abSbb
 Decimos que n es la derivacin de i
 La cadena bbab se deriva de :
1 2 n

El lenguaje generado por G, denotado L(G), consta de todas las cadenas


b bb bbaS bbab
sobre T derivables de .

2
Gramticas y Gramticas y
Lenguajes Gramtica BNF Lenguajes
Cont (Forma normal de Backus)

 Cont Ejemplo 2:  Es una forma alternativa de establecer las


 Las nicas derivaciones de son:
b producciones de una gramtica.
 Los smbolos no terminales comienzan con < y
bn n0 terminan con>.
bnaS
 La produccin S T se escribe S ::= T
bnabm-1S  Se puede tener S ::= T1| T2 | T3 | T4 .| Tn
bnabmS n0, m1
 La barra | se lee o
 As, L(G) consta de las cadenas sobre {a,b} que
contienen precisamente una a y terminan con b.

Gramticas y Gramticas y
Lenguajes Lenguajes
Cont Cont
 Ejemplo 3:
 Un entero se define como una cadena que consta de un signo  Ejemplo 4:
opcional (+ o -) seguido de una cadena de dgitos (0 a 9). La  Escriba una gramtica BNF para el conjunto de nmeros con
siguiente gramtica genera a todos los nmeros enteros.
<dgito> ::=0|1|2|3|4|5|6|7|8|9
decimales (por ej: 487.34 o 8.3)
<entero> ::=<entero con signo>|<entero sin signo>  <digito>::=0|1|2|3|4|5|6|7|8|9
<entero con signo> ::=+<entero sin signo>|-<entero sin signo>  <numero>::=<digito>|<digito><numero>
<entero sin signo> ::=<dgito>|<dgito><entero sin signo>
 <numero decimal>::=<numero>.<numero>

 El smbolo inicial es <entero>


 La derivacin del entero -901  Para sta gramtica:
 <entero> <entero con signo>
 T = {0,1,2,3,4,5,6,7,8,9,.}
 -<entero sin signo>
 -<dgito><entero sin signo>  N = {digito, numero, numero decimal}
 -<dgito><dgito><entero sin signo>
 -<dgito><dgito><dgito>
 -9<dgito><dgito>
 -90<dgito>
 -901.

3
Gramticas y Gramticas y
Lenguajes Lenguajes
Cont Tipos de Gramticas
 Las gramticas se clasifican por los tipos de producciones que
 Ejemplo 5: las definen.
 Escriba una gramtica BNF para el conjunto de nmeros enteros
con signo.  Definicin:
 <digito>::=0|1|2|3|4|5|6|7|8|9
 Sea G una gramtica y la cadena nula.
 <numero>::=<digito><numero> | <digito> a) Si cada produccin es de la forma
 <signo>::=+ | -  A , donde , (N T)*, A N, (N T)*, - {}.
 <numero con signo>::=<signo><numero>
 Entonces G es una gramtica sensible al contexto (o de tipo 1).

b) Si cada produccin es de la forma.


 Para esta gramtica:  A , donde A N, (N T)*,
 T={0,1,2,3,4,5,6,7,8,9,+,-}  Entonces G es una gramtica libre de contexto (o de tipo 2).
 N={digito, numero, signo, numero con signo}
c) Si cada produccin es de la forma.
 A o A B o A donde A,B N, T,
 Entonces G es una gramtica regular (o de tipo 3).

Gramticas y Gramticas y
Lenguajes Lenguajes
Tipos de Gramticas Cont
 En una gramtica sensible al contexto  Gramtica sensible al contexto
 Se puede remplazar A por si A est en el contexto de y  Ejemplo 6:
 La gramtica G definida por T = {a, b, c}, N = {, A, B, C, D, E}, smbolo
 En una gramtica libre de contexto inicial y con producciones
 Establece que podemos remplazar A por en cualquier momento. aAB, aB, A aAC, A aC, B Dc,
D b, CD CE, CE DE, DE DC, Cc Dcc,
 En una gramtica regular
 En la produccin CE DE podemos reemplazar C con D si C va seguida de E y
 Se tienen reglas de sustitucin particularmente sencillas:
 En la produccin Cc Dcc podemos reemplazar C con Dc si C va seguida de c.
 Remplazamos un smbolo no terminal por
 un smbolo terminal  Podemos derivar DC de C, pues CD CE DE DC
 un smbolo terminal seguido de un smbolo no terminal
 la cadena nula  La cadena a3b3c3 esta en L(G), pues tenemos
aAB aaACB aaaCCDc aaaDCCc aaaDCDcc
Observe que una gramtica regular es una gramtica libre de contexto y una aaaDDCcc aaaDDDccc aaabbbccc
gramtica libre de contexto sin producciones de la forma A es una
 Se puede mostrar que L(G)= { anbncn | n =1,2,}
gramtica sensible al contexto

4
Gramticas y Gramticas y
Lenguajes Lenguajes
Cont Cont

 Lenguaje sensible al contexto  Gramtica libre al contexto


 Definicin:  Ejemplo 7:
 Un lenguaje L es sensible al contexto (respectivamente  La gramtica G definida por T = {a,b}, N = {}, smbolo inicial
Libre de contexto, regular) si existe una gramtica G y con producciones
sensible al contexto tal que L = L(G). ab, ab,

 Continuacin ejemplo 6:  Las nicas derivaciones de son


 De acuerdo con el ejemplo anterior, el lenguaje ab
L = L(G)= { anbncn | n =1,2,} .
an-1 bn-1
 Se puede mostrar que no existe una gramtica libre de an-1 ab bn-1= anbn
contexto G tal que L = L(G); por tanto, L no es un lenguaje  As, L(G) consta de las cadenas sobre {a,b} de la forma anbn,
libre de contexto. n= 1,2,.
 Este lenguaje es libre de contexto.

Gramticas y Gramticas y
Lenguajes Lenguajes
Cont Cont

 Gramtica regular  Definicin:


 Las gramticas G y G son equivalentes si L(G) = L(G).
 Ejemplo 8:
 Sean:
 N = {, S}  Ejemplo 9:
 T = {a, b}  Si definimos una relacin R sobre un conjunto de
 P = { b , aS,S bS, S b} gramticas mediante la regla de G R G si G y G son
 Entonces G = (N, T, P ,) es una gramtica. equivalentes, R es una relacin de equivalencia. Cada
clase de equivalencia consta de un conjunto de gramticas
equivalentes entre s.
 L(G) = {bnabm | n= 1,2,.; m= 1,2,. }
 Este lenguaje, generado por la gramtica regular, es
regular.

5
Gramticas y Gramticas y
Lenguajes Lenguajes
Gramtica de Lindenmayer Cont

 Definicin 1:  Definicin 2:
 Sea G =(N, P, T,) una gramtica de Lindenmayer interactiva libre de
 Una gramtica de Lindenmayer interactiva libre de contexto. Si
contexto consta de: = x1 xn Y existen producciones xi i
 En P, para i = 1,,n, escribimos
 Un conjunto finito N de smbolos no terminales.
i,,n
 Un conjunto finito T de smbolos terminales, donde NT=
 Un conjunto finito P de producciones A B, donde A (N  Decimos que i,,n es derivable de manera directa de . Si i+1 es
T) y B (N T)*. derivable de manera directa de i para i = 1,,n-1, decimos que n
es derivable de 1 y escribimos
 Un smbolo inicial N. 1 n

 La diferencia entre una gramtica de Lindermayer interactiva  Decimos que 1 2 n


 es la derivacin de n (a partir de 1). El lenguaje generado por G,
libre de contexto y una gramtica libre de contexto es que la denotado por L(G), consta de todas las cadenas de sobre T
primera permite el uso de producciones de la forma A B derivables a partir de .
donde A es un smbolo terminal o no terminal.

Gramticas y Gramticas y
Lenguajes Lenguajes
Cont Cont

 Ejemplo 10:  Cont


 Sean  Ahora daremos un significado a las cadenas de L(G).
 N = {D}  Interpretamos el smbolo:
 T = {d,+,-}  d como una instruccin para trazar una lnea recta de una

 P = {D D D + + D D, D d, + +, } longitud fija en la direccin actual;


 + como una instruccin para girar 60hacia la derecha;

 Consideramos a G (N, T, P, D) como una gramtica  como una instruccin para girar 60hacia a la izqui erda.
Lindenmayer interactiva libre de contexto.
 Si comenzamos del lado izquierdo y el primer movimiento es horizontal y
hacia la derecha, la interpretacin de la cadena d-d++d-d produce la
 Como un ejemplo de derivacin D, tenemos siguiente curva fractal
DDD++DDdd++dd

 As, d d + + d d L(G).

6
Gramticas y Gramticas y
Lenguajes Lenguajes
Cont Gramticas para Expresiones

 Cont  Ejemplo 10:


 La siguiente cadena ms larga en L(G) es  Si S es un conjunto de palabras entonces S* es la
d-d++d-d-d-d++d-d++d-d++d-d-d-d++d-d coleccin de todas las oraciones posibles formadas por
las palabras de S.
 Estas oraciones no necesariamente tienen un sentido o
estructura aparente.
 Un lenguaje es una especificacin completa:
1. Deben existir un conjunto S con todas las palabras que se
consideran parte del lenguaje.
Copos de nieve de von Kock 2. Hay que designar un subconjunto de S* como el conjunto
de las oraciones con construccin adecuada en el
lenguaje.
3. Hay que determinar cuales de las oraciones con
construccin adecuada tienen significado y cual es este.

Gramticas y Gramticas y
Lenguajes Lenguajes
Cont Cont
 Cont  Gramtica para estructura de oraciones
 La oracin siguiente es una cadena en S*, pero no tiene una  G = (V, S , vo, ), donde
construccin adecuada (la disposicin de los sustantivos y los verbos no
 V es un conjunto finito,
es valida).
Iba a la tienda Juan Jorge a cantar  S un subconjunto de V,
 v0 V- S y
 La siguiente oracin tiene una construccin adecuada pero carece de  es una relacin finita en V*
sentido.
Los sonidos azules se sientan y cruzan la pierna bajo la cima de la  S es el conjunto de todas las palabras permitidas en el
montaa lenguaje, y
 V consta de S adems de algunos otros smbolos.
 En un lenguaje:  El elemento vo de V es un punto de partida para las
 Sintaxis: regula la construccin adecuada de las oraciones. sustituciones.
 Semntica: se encarga del significado de las oraciones.  Por ultimo la relacio sobre V* especifica los reemplazos
 En un lenguaje de programacin lo que se ensea es la sintaxis. permisibles.

7
Gramticas y Gramticas y
Lenguajes Lenguajes
Cont Cont

 Ejemplo 11:  Cont


 Si G = (V, S , vo, )  supngase que la relacin en V* queda descrita
 S es el conjunto de smbolos terminales y
enumerando todas las producciones como sigue
 Oracin sujeto predicado
 N = V S es el conjunto de smbolos no terminales
 Sujeto Juan
 Sujeto Julia
 Sea  Predicado verbo adverbio
 S = { Juan, Julia, maneja, corre, descuidadamente, rpido,  Verbo maneja
frecuentemente }  Verbo corre
 N = {oracin, sujeto, predicado, verbo, adverbio }  Adverbio descuidadamente
 V=SU N.  Adverbio rpido
 vo = oracin y  Adverbio frecuentemente

Gramticas y
Lenguajes
Cont
 Cont
 El conjunto S contiene todas las palabras permitida en el lenguaje.
 Se afirma que la oracin Julia maneja frecuentemente que esta
denotada por w, es una oracion permisible o con sintaxis correcta,
deacuerdo con las reglas de este lenguaje.
 Para demostrar esto, considerese la siguiente serie de cadenas en V*.
 Oracin
 Sujeto predicado
 Julia predicado
 Julia verbo adverbio
 Julia maneja adverbio
 Julia maneja frecuentemente

 Por definicin w tiene sintaxis correcta, ya que en este ejemplo vo es una


oracin.
 En las gramticas para estructura de oraciones, la bsqueda de una sintaxis
correcta se refiere solo al proceso mediante el cual al formar una oracin se
procura que esta sea correcta gramaticalmente hablando, y nada mas.