Вы находитесь на странице: 1из 16

93

CAPITULO IV

4. LENGUAJES Y TIPOS DE GRAMATICAS


Aqu estudiaremos los diferentes tipos de gramticas y la gramtica generativa,
que es una tcnica clave en el proceso de reconocimiento de cadenas que
cumplen con una estructura gramatical. Debemos tener en cuenta que mientras
los autmatas procesan cadenas, las gramticas generan cadenas.

4.1. GRAMTICA
Para D. K. Rodrigo1 La Gramtica es el estudio de las reglas y principios que
regulan el uso de las lenguas y la organizacin de las palabras dentro de una
oracin. Tambin se denomina as al conjunto de reglas y principios que gobiernan
el uso de un lenguaje determinado; as, cada lenguaje tiene su propia gramtica

4.2. TIPOS DE GRAMATICA

Las gramticas generativas fueron introducidas por Noam Chomsky en 1956


como un modelo para la descripcin de los lenguajes naturales (espaol, ingls,
etc.). Chomsky clasific las gramticas en cuatro tipos: 0, 1, 2 Y 3. Las gramticas
de tipo 2, tambin llamadas gramticas independientes del

contexto, se

comenzaron a usar en la dcada de los sesenta para presentar la sintaxis de


lenguajes de programacin y para el diseo de analizadores sintcticos en
compiladores2.

D.K. Rodrigo. Teora de la Computacin: Lenguajes, Autmatas y Gramticas. Colombia: Unilibros, 2004.
pp. 81.
2

IBIB, 81

93

94

TIPOS DE GRAMTICAS

4.2.1. GSR Tipo 0: Gramtica sin restricciones Tipo 0.

4.2.2. GCSP: Gramtica de Contexto Sensitivo Puro.

4.2.3. GCS Tipo 1: Gramtica de Contexto Sensitivo Tipo 1


G = {
G={

es una GCSP.

4.2.4. GLCP :: Gramtica Libre de Contexto Puro.

94

95

4.2.5. GLC Tipo 2: Gramtica Libre de Contexto.


G = {
G={

es una GLCP.

4.2.6. GLD Tipo 3 :: Gramtica Lineal Derecha Tipo 3

4.2.7.

GRAMTICA
APLICACIN

INDEPENDIENTE
COMO

DEL

RECONOCEDOR

CONTEXTO
DE

SU

ESTRUCTURA

SINTACTICA
Una gramtica independiente del contexto (GIC) es una especificacin para la
estructura sintctica de un lenguaje de programacin. Este tipo de especificacin
es muy similar a la especificacin de un estructura lxica de un lenguaje utilizando
expresiones regulares, solo que una gramtica independiente del contexto
involucra reglas de recursividad. La GIC tambin llamada gramtica no contextual
o gramtica de tipo 2.

1. Terminal: smbolo bsico a partir del cual se pueden formar las cadenas,
ejemplo: una letra, palabra reservada, *, etc. Los terminales son elementos
de un alfabeto .

95

96

2. No terminal: es una variable sintctica que puede ser sustituida por una
terminal, una expresin u otra variable sintctica. Se

les puede llamar

tambin variables

3. Smbolo inicial: es un smbolo no terminal a partir del cual se origina la


gramtica.
4. Producciones: son expresiones que asocian terminales y no terminales.
Una produccin (A, w) y se lee A produce w; su significado es: la variable
A se puede reemplazar (sobre-escribir) por la cadena w. En la produccin
A w, A se denomina la cabeza y w el cuerpo de la produccin3.
Notacin y definiciones. Las variables se denotan con letras maysculas A, B,
C, Los elementos de o smbolos terminales de denotan con letras minsculas
a, b, c

Cada produccin o regla tiene el lado izquierdo una no terminal y del lado derecho
tambin llamado forma de frase puede tener una, terminal, una no terminal o una
concatenatcin de terminales y no terminales as:

NT

NT

NT.T

NT

T.NT

NT

NT.NT

NT

T.T

NT

NT | NT. T| T.NT |

Tambin se puede representar as e caso de


que NT de la izquierda sea la misma

NT.NT | T.T

D.K. Rodrigo. Teora de la Computacin: Lenguajes, Autmatas y Gramticas.


Colombia: Unilibros, 2004. pp. 83.

96

97

Se debe tener en cuenta:

En las gramticas no van a existir cerraduras, las nicas operaciones permitidas


son la concatenacin (.) y la unin (|).

El concepto utilizado es el de la recursividad.

Ejemplo 4.12.

La gramtica Independiente del contexto del siguiente lenguaje L = { ab, aabb,


aaabbb} es

aSb | ab

Explicacin

El (|) indica un (), es decir que podemos sustituir ya sea por la primera o la
segunda expresin, en este caso si entramos por la segunda expresin
encontraremos la primera cadena del lenguaje que es (ab).
Ahora si entramos por la primera expresin, es decir (aSb) tendremos una
recursividad en la no terminal (S) esto te lo desmenuzaremos de esta forma:

aSb

aSb

Cada vez que (S) se hace recursiva, esta llama a


a aSb b

a (aSb) o (ab) y donde est la (S) reemplazo lo


que he llamado, en este caso estoy llamando
(aSb).

aSb

a aSb b

aa aSb bb

97

aaa aSb bbb

98

aaa ab bbb

Se hace recursiva la (S) hasta cuando se genere la expresin que se quiere


alcanzar, le ponemos el tope final cuando llamamos la (S) y no entramos por la
primera expresin, sino por la segunda, es decir (ab) donde por su naturaleza de
terminal dar fin a la recursividad.
El lenguaje anterior lo podemos definir de otra forma, utilizando el ( ) para
finalizar la recursividad y no utilizaremos la cadena inicial (ab).

aSb|

La diferencia de esta produccin con la anterior


es que podemos obtener la cadena ( ) como inicial, ya que
en el (|) esta la opcin de entrar inicialmente por el ( ) o
finalizar la recursidad en un momento. Dado.

Nota: Es importante que al tratar de resolver una gramtica para un


lenguaje, se debe analizar donde se repite alguna cadena o en otras
palabras donde se hace recursivo el lenguaje, de esa forma determinar
donde se debe colocar la no terminal y donde hacer que termine la
recursividad.

4.2.7.1.

Derivacin

La sustitucin de una no terminal por una no Terminal, una terminal o una


expresin se denomina derivacin. Es la situacin de un no terminal.

Izquierda

Derivacin
Derecha

98

99

4.2.7.1.1. Derivacin izquierda

Derivacin izquierda: consiste en sustituir el NT ms a la izquierda de la forma de


frase.

4.2.7.1.2. Derivacin derecha

Derivacin derecha: consiste en sustituir en NT ms a la derecha de la forma de


frase.

Ejemplo 4.13.

AccA

BA|

a|b|c

S: smbolo inicial

Derivacin izquierda:

AccA

aBAccA

abcc

BAccA
abAccA

aAccA
abccA

Derivacin derecha:

AccA

BBcc

Acc
Bbcc

BAcc
abcc

Ejemplo 4.14.
99

BBAcc

100

L= {ai b 2i , i>0}
{abb, aabbbb, aaabbbbbb, aaaabbbbbbbb,}

aAbb

aAbb|

Se recomienda crear una tabla con lo valores de (i) y poder ver las posibles
cadenas.
i

ai b 2i

abb

aabbbb

aaabbbbbb

Tabla 4.1. Tabla de cadenas del lenguaje no regular L= {ai b 2i , i>0}

Ejemplo 4.15.
L= {ai b j / i,j>0 i>j}

aaPb

aPb|aP|

Ejemplo 4.16
L= {ai b j c K / i=j o i=k i,j,k>=0}
S

BA|D
100

101

aBb|

cA|

aDc|C

bC|

Ejemplo 4.17.

Construya una gramtica de todos las cadenas de 0 y 1 donde no aparece la


subcadena 011

0C|1B

0C| 1A|

1B|0C|

0C

4.2.7.2.

Arboles de derivacin y ambigedad

4.2.7.2.1. Arboles de derivacin


Un rbol con raz es un tipo muy particular de grafo no-dirigido; est formado por
un conjunto de vrtices o nodos conectados entre s por arcos o aristas, con la
siguiente propiedad: existe un nodo especial, llamado la raz del rbol, tal que hay
una nica trayectoria entre cualquier nodo y la raz.
De esta manera, la raz se ramifica en nodos, llamados descendientes inmediatos,
cada uno de los cuales puede tener, a su vez, descendientes inmediatos, y as
sucesivamente.

La propiedad que caracteriza a un rbol garantiza que un nodo puede tener 0, 1, o


ms descendientes inmediatos pero un nico antecesor inmediato. El nico nodo
que no tiene antecesores es la raz. Los nodos que tienen descendientes, excepto
la raz, se denominan nodos interiores. Los nodos que no tienen descendientes se
llaman hojas del rbol. En la terminologa usualmente utilizada, los descendientes
101

102

de un nodo tambin se denominan hijos y los antecesores padres o ancestros. El


nmero de vrtices (y por lo tanto, el nmero de arcos) de un rbol puede ser
infinito.
Algunos rboles.

Figura 4.1. Formas de arboles de derivacin

4.2.7.2.2. Una gramtica independiente del contexto no ambigua para


expresiones regulares

Gramtica Independiente del contexto para evaluar una expresin aritmtica que
contiene dgitos y el operador suma, es decir una expresin aritmtica de suma.

P + P | dig

dig 0|1|2|3|9
Si tomamos la cadena 5+7+2 se pueden hacer las siguientes sustituciones. La no
terminal ms a la izquierda P puede ser 5+7 y la P ms a la derecha puede ser 2.
De tal forma que P P + P , luego la primera P se puede sustituir por P+P ya
102

103

que la cadena 5+7 puede ser derivada, entonces queda P P + P + P y por


ltimo cada P se sustituye por dig de manera que quedara P = dig + dig + dig
(Caso1). Pero tambin se podra escoger de la siguiente forma la no terminal ms
a la izquierda P puede ser 5 y la P ms a la derecha puede ser 7+2. De tal forma
que produccin queda P P + P , luego la primera no terminal se puede sustituir
por dig y la segunda P por P + P ya que la cadena 5+7 puede ser derivada,
entonces queda P P + P + P y por ltimo cada P se sustituye por dig de
manera que quedara P = dig + dig + dig (Caso2).

Caso1
P

P+P

P+P+P

dig + dig + dig

Caso2
P

P+P

P+P+P

dig + dig + dig

Como se encontraron dos formas para evaluar la cadena, esto indica que la
gramtica es ambigua. En la seccin siguiente se aborda el tema de ambigedad.

4.2.7.2.3. Gramtica de expresiones aritmtica ambigua: una


gramtica es ambigua cuando una cadena del lenguaje puede
ser representada por 2 rboles de anlisis sintcticos
diferentes.

4.2.7.2.4. rbol de anlisis sintctico

103

104

Indica grficamente como a partir del smbolo inicial de la gramtica se pueden


representar las cadenas del lenguaje.

La raz es el smbolo inicia, los nodos interiores son las no terminales y las hojas
son las terminales.

Caso1
P

P+P

P+P+P

dig + dig + dig

El rbol de Anlisis Sintctico es

Figura 4.6. Arbol de Anlisis sintctico descendente por izquierda

Caso2
P

P+P

P+P+P

dig + dig + dig

El rbol de Anlisis Sintctico es

104

105

Figura 4.7. Arbol de Anlisis sintctico descendente por derecha

Como se observa se generaron dos rboles de anlisis sintcticos a partir de la


misma cadena, eso indica que la gramtica es ambigua.

Para eliminar la ambiguedad debemos hacer que la cadena solo puedar ser
reconocido por la gramtica con una sola derivacin, o sea que se pueda formar
un solo rbol.

La gramtica ambigua es
P P + P | dig
dig 0|1|2|3|9
Para quitar la ambiguedad cambiamos la no terminal P que est ms a la derecha
por la terminal dig, entonces la gramtica queda as.
Este rbol
izquierda

P P + dig
dig 0|1|2|3|9

105

es

descendente

por

106

Ahora si evaluamos la misma cadena (5+7+2). Solo hay una forma de escoger P,
que es 5+7 y dig es 2, por lo tanto la siguiente derivacin es por P de manera que
resultara un rbol descendente por izquierda.

P
P
P

P + dig
P + dig + dig
dig + dig + dig

El rbol de Anlisis sintctico es.

Ahora se mejorar la gramtica incluyendo el signo negativo, parntisis y


manteniendo la gramtica no ambigua

P
T

P + T|P T|T
(P) |dig

Para evaluar la cadena (5+7)-2 se tiene la siguiente representacin

PT

TT

(P) dig
106

107

(P+T) dig

(P+dig) dig

(T+dig) dig

(dig+dig) dig

Para evaluar la cadena 5+(7-2) se tiene la siguiente representacin

P+T

T + (P)

dig + (Pdig)

dig + (Tdig)

dig + (digdig)

Para evaluar la cadena (5+7-2) se tiene la siguiente representacin

(P)

(P-T)

(P+T-dig)

(T+dig-dig)

(dig+dig-dig)

Como se puede observar las cadenas anteriormente evaluadas solo tienen una
forma de ser representados a travs de la gramtica y por lo tanto solo se pueden
implementar mediante un rbol de anlisis sintctico, esto quiere decir que la
gramtica es no ambigua.

Podemos seguir ampliado la gramtica, ahora le incluimos la multiplicacin y la


divisin y mantenemos la no ambigedad.

P + T|P T|T
107

108

T
K

T*K| T/k |K
dig| (P)

Para evaluar la cadena 5+7*2 se tiene la siguiente representacin

P+T

P+T*K

T+K*dig

K+dig*dig

dig+dig*dig

Para evaluar la cadena 5*8/2 se tiene la siguiente representacin

K*T

K*T/K

K*K/K

dig*dig/dig

Es importante aclarar que en la gramtica anterior se valida el orden de prioridad


de las operaciones aritmticas.

108

Вам также может понравиться