Sunteți pe pagina 1din 18

Gramtica

Gramaticas
Francisco Javier Bucio Castillo
22 de octubre de 2013
Francisco Javier Bucio Castillo Leng y Aut
Gramtica
Aspectos teoricos
Si nos referimos a los lenguajes naturales el concepto de gramtica
es muy antiguo. Los primeros trabajos aparecen en la India
durante los comienzos del primer milenio antes de Cristo,
alcanzndose el mximo apogeo con Panini (siglos VII y VI a. C.).
Al mismo tiempo en Grecia se desarrollaba una corriente de
investigacin gramatical, cuyo mximo representante sera
Pitgoras. Sin embargo, el concepto de gramtica desde un punto
de vista formal tiene su origen en los trabajos de Chomsky a
mediados del siglo XX.
Francisco Javier Bucio Castillo Leng y Aut
Gramtica
Deniciones
Denicin Produccin
Sea un alfabeto, llamamos produccin (o regla) denida sobre
ese alfabeto a un par ordenado de palabras (x, y) donde x, y
+
.
Se dice que x es la parte izquierda de la produccin y que y es la
parte derecha. A las producciones tambin se las llama reglas de
derivacin. Se representa x ::= y.
Denicin Produccin compresora
Se dice que una produccin es compresora si la longitud de su
parte derecha es menor que la de la parte izquierda.
Francisco Javier Bucio Castillo Leng y Aut
Gramtica
Deniciones
Denicin Derivacin directa
Sea un alfabeto, P un conjunto de producciones denidas sobre
ese alfabeto
P =
8
>
>
<
>
>
:
x
1
::= y
1
x
2
::= y
2

x
n
::= y
n
9
>
>
=
>
>
;
y v, w
+
.
Decimos que v produce directamente a w, o que w deriva
directamente de v, si z, u
+
y una produccin x
i
::= y
i
tal que
v = zx
i
u y w = zy
i
u
La notacin utilizada para representar una derivacin directa es
v w
Francisco Javier Bucio Castillo Leng y Aut
Gramtica
Deniciones
Denicin Derivacin
Sea un alfabeto, P un conjunto de producciones denidas sobre
ese alfabeto y v, w
+
.
Decimos que v produce a w, o que w deriva de v, si
w
0
, w
1
, . . . , w
m

+
tales que
v = w
0
w
1
w
1
w
2

w
m1
w
m
= w
La notacin utilizada en este caso es v
+

w
Francisco Javier Bucio Castillo Leng y Aut
Gramtica
Ejemplo
Ejemplo con un lenguaje natural
La gramtica debe describir la estructura de las frases y de las
palabras de un lenguaje. Veamos una serie de reglas muy sencillas
que nos permitiran comprobar que la frase el perro corre deprisa
es correcta.
Reglas gramaticales:
1
<sentencia>::=<sujeto><predicado>
2
<sujeto>::=<articulo><nombre>
3
<predicado>::=<verbo><complemento>
4
<predicado>::=<verbo>
5
<articulo>::= el
6
<nombre>::= perro
7
<verbo>::= corre
8
<complemento>::= deprisa
Francisco Javier Bucio Castillo Leng y Aut
Gramtica
Ejemplo
Estas reglas pueden ser consideradas como un conjunto de
producciones. Si utilizamos algunas de estas producciones para
llevar a cabo derivaciones a partir del item <sentencia> podemos
llegar a obtener frases como: el perro corre deprisa o el perro
corre. Sin embargo, nunca podramos llegar a construir la frase
mucho deprisa perro.
Veamos, paso a paso, como se podra generar la frase la gata
corre a partir del smbolo < sentencia >. En cada fase del
proceso hemos destacado en negrita el smbolo que se transforma.
Francisco Javier Bucio Castillo Leng y Aut
Gramtica
Ejemplo
Aplicando la pr. 1 < sentencia >
+
< sujeto >< predicado >
Aplicando la pr. 2
< sentencia >
+
< articulo >< nombre >< predicado >
Aplicando la pr. 4
< sentencia >
+
< articulo >< nombre >< verbo >
Aplicando la pr. 6 < sentencia >
+
la < nombre >< verbo >
Aplicando la pr. 8 < sentencia >
+
lagata < verbo >
Aplicando la pr. 9 < sentencia >
+
la gata corre
Sin embargo, la forma ms habitual de representar este mismo
proceso de generacin de una cadena de smbolos es mediante un
rbol de derivaciones (o rbol parser) como el que se muestra en la
gura 2.1
Francisco Javier Bucio Castillo Leng y Aut
Gramtica
Ejemplo
Francisco Javier Bucio Castillo Leng y Aut
Gramtica
Ejemplo
Aplicaremos el mismo mtodo para denir un fragmento de un
lenguaje de programacin. Pretendemos describir cmo son las
instrucciones que permiten asignar el valor de una expresin a una
variable en un lenguaje como C.
1
< asignacion >::=< variable > ` = ` < expresion >
2
< expresion >::=< numero >
3
< expresion >::=< variable >
4
< expresion >::=< expresion > ` + ` < expresion >
5
< expresion >::=< expresion > + < expresion >
Francisco Javier Bucio Castillo Leng y Aut
Gramtica
Ejemplo
Si consideramos que A, B y C pueden ser considerados como
< variable > y que 2 y 4 pueden ser considerados como
< numero >, es fcil comprobar que a partir del smbolo
< asignacion > y utilizando diferentes producciones podemos
llegar a construir instrucciones como:
A = B +C
B = B + 2
C = C + 4
Sin embargo, no podramos construir sentencias como
A = +2 + / + 4 o 4 = A.
Es decir, en los ejemplos anteriores podemos ver que hay
construcciones gramaticalmente correctas y otras que no lo son.
Francisco Javier Bucio Castillo Leng y Aut
Gramtica
Denicin de gramtica formal
Analizando los ejemplos anteriores podemos observar como el
objetivo es llegar a tener una secuencia correcta de smbolos (en el
primer ejemplo, estos smbolos son: el, la, perro, gata, etc. y en el
segundo, los smbolos son: A, B, +,+, 2, etc.) partiendo de un
determinado smbolo, que llamaremos inicial, (< oracion > en el
primer caso o < asignacion > en el segundo), y utilizando algunas
de las producciones denidas. A partir de estas ideas intuitivas,
formalizaremos la denicin de gramtica.
Francisco Javier Bucio Castillo Leng y Aut
Gramtica
Denicin
Denicin Gramtica Formal
Se llama gramtica formal denida sobre un alfabeto a una tupla
de la forma G =
T
,
N
, S, P donde:

T
es el alfabeto de smbolos terminales.

N
es el alfabeto de smbolos no terminales (aparecen en los
ejemplos encerrados entre <>)
S es el smbolo inicial de la gramtica
P es un conjunto de producciones gramaticales
Hay que tener en cuenta que:
S
N

T

N
=
=
T
'
N
Francisco Javier Bucio Castillo Leng y Aut
Gramtica
Ejemplo
Sea
T
= +, , 0, 1, 2, ..., 9,

N
= < Signo >, < Digitos >, < Numero >, < Caracter >,
S =< Numero >
P =
8
>
>
>
>
>
>
>
>
>
>
>
>
<
>
>
>
>
>
>
>
>
>
>
>
>
:
< N umero >::=< Signo >< Digito >
< Signo >::= +
< Signo >::=
< Digito >::=< Caracter >< Digito >
< Digito >::=< Caracter >
< Caracter >::= 0
< Caracter >::= 1

< Caracter >::= 9
9
>
>
>
>
>
>
>
>
>
>
>
>
=
>
>
>
>
>
>
>
>
>
>
>
>
;
Francisco Javier Bucio Castillo Leng y Aut
Gramtica
Ejemplo
El lenguaje L = 0
n
10
n
: n _ 1 no es regular ya que si lo fuera,
tambin lo sera h
1
(L) donde h es el homomorsmo
h(0) = h(1) = 0, h(2) = 1. Pero
h
1
(L) = 0, 1
n
20, 1
n
: n _ 1 .
Entonces h
1
(L) 0
+
21
+
sera regular; este ltimo lenguaje es
igual a 0
n
21
n
: n _ 1. Finalmente, por medio del homomorsmo
g(0) = 0, g(1) = 1, g(2) = se concluira que
g (0
n
21
n
: n _ 1) = 0
n
1
n
: n _ 1 es regular, lo cual sabemos
que no es cierto
Francisco Javier Bucio Castillo Leng y Aut
Gramtica
Francisco Javier Bucio Castillo Leng y Aut
Gramtica
Francisco Javier Bucio Castillo Leng y Aut
Gramtica
Francisco Javier Bucio Castillo Leng y Aut

S-ar putea să vă placă și