Академический Документы
Профессиональный Документы
Культура Документы
CAPITULO IV
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
contexto, se
D.K. Rodrigo. Teora de la Computacin: Lenguajes, Autmatas y Gramticas. Colombia: Unilibros, 2004.
pp. 81.
2
IBIB, 81
93
94
TIPOS DE GRAMTICAS
es una GCSP.
94
95
es una GLCP.
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
tambin variables
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 |
NT.NT | T.T
96
97
Ejemplo 4.12.
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
aSb
a aSb b
aa aSb bb
97
98
aaa ab bbb
aSb|
4.2.7.1.
Derivacin
Izquierda
Derivacin
Derecha
98
99
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
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.
0C|1B
0C| 1A|
1B|0C|
0C
4.2.7.2.
102
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
Caso1
P
P+P
P+P+P
Caso2
P
P+P
P+P+P
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.
103
104
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
Caso2
P
P+P
P+P+P
104
105
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
P
T
P + T|P T|T
(P) |dig
PT
TT
(P) dig
106
107
(P+T) dig
(P+dig) dig
(T+dig) dig
(dig+dig) dig
P+T
T + (P)
dig + (Pdig)
dig + (Tdig)
dig + (digdig)
(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.
P + T|P T|T
107
108
T
K
T*K| T/k |K
dig| (P)
P+T
P+T*K
T+K*dig
K+dig*dig
dig+dig*dig
K*T
K*T/K
K*K/K
dig*dig/dig
108