Sei sulla pagina 1di 44

Departamento de Tecnologas de la Informacin

Ciencias de la Computacin e Inteligencia Artificial


Tema 3: Fundamentos de la
Teora de Gramticas
Formales
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
ndice
3.1. Concepto bsico de Gramtica. Ejemplos
3.2. Concepto de gramtica formal
3.3. Tipos de Gramticas. Jerarqua de Chomsky
3.4. rboles de derivacin
3.5. Ambigedad
3.6. Recursividad
3.7. Factorizacin a izquierdas
2
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
ndice
3.1. Concepto bsico de Gramtica. Ejemplos
3.2. Concepto de gramtica formal
3.3. Tipos de Gramticas. Jerarqua de Chomsky
3.4. rboles de derivacin
3.5. Ambigedad
3.6. Recursividad
3.7. Factorizacin a izquierdas
3
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.1 Concepto bsico de
Gramtica. Ejemplos
Una gramtica define la estructura de las frases y
de las palabras de un lenguaje.
Las gramticas son un mtodo para la generacin
de palabras de un lenguaje a partir de un alfabeto.
para generar estas palabras se utilizan las derivaciones.
se denominan formales porque se centran en los estudios
de los lenguajes formales que son aquellos que estn
definidos a partir de reglas preestablecidas. Para los
lenguajes naturales existen otro tipo de gramticas.
4
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.1 Concepto bsico de
Gramtica. Ejemplos
La gramtica de la lengua castellana se expresa mediante reglas sencillas que
definen las partes de la oracin, y que permiten comprobar fcilmente si una
frase determinada es o no correcta. Analizar la frase La nia peda comida a
Mara en el parque.
<oracin> ::= <sujeto><predicado>
<sujeto> ::= <frase_nominal>
<frase_nominal> ::= <grupo_nominal>
<frase_nominal> ::= <grupo_nominal><calificativos>
<grupo_nominal> ::= <nombre>
<grupo_nominal> ::= <artculo><nombre>
<calificativo> ::= <conjuncin><oracin>
<calificativo> ::= <adjetivo>
<predicado> ::= <verbo><complementos>
<complementos> ::= <directo><indirecto><circunstancial>
<complementos> ::= <directo>< circunstancial>
<complementos> ::= <indirecto><circunstancial>
<complementos> ::= <circunstancial>
<circunstancial> ::=
<circunstancial> ::= <circunstancial><circunstancial>
<directo> ::= <frase_nominal>
<indirecto> ::= a<frase_nominal>
<circunstancial> ::= <preposicin><frase_nominal>
5
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.1 Concepto bsico de
Gramtica. Ejemplos
Obsrvese la existencia de recursividad en las reglas de produccin. Algunas
la introducen directamente, como en el caso <circunstancial> ::=
<circunstancial><circunstancial>, mientras que en otras de forma indirecta
(<oracin> <sujeto> <frase_nominal> <calificativo> <oracin>).
Para completar las reglas sintcticas anteriores se necesita informacin
morfolgica sobre las palabras. Esta informacin tambin puede escribirse en
forma de reglas de produccin:
<nombre> ::= nia
<nombre> ::= Mara
<nombre> ::= comida
<nombre> ::= parque
<artculo> ::= la
<verbo> ::= peda
<preposicin> ::= en
6
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.1 Concepto bsico de
Gramtica. Ejemplos
Teniendo en cuenta todas estas reglas, y aplicando el concepto de
derivacin, se puede obtener la frase considerada partiendo de una
palabra de una sola letra <oracin>:
<oracin>
<sujeto><predicado>
<frase_nominal><predicado>
<grupo_nominal><predicado>
<artculo><nombre><predicado>
la <nombre><predicado>
la nia <predicado>
la nia <verbo><complementos>
la nia peda<complementos>
la nia peda <directo><indirecto><circunstancial>
la nia peda comida <indirecto><circunstancial>
7
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.1 Concepto bsico de
Gramtica. Ejemplos
la nia peda comida a <frase_nominal><circunstancial>
la nia peda comida a <grupo_nominal><circunstancial>
la nia peda comida a <nombre><circusntancial>
la nia peda comida a Mara <circunstancial>
la nia peda comida a Mara <preposicin><frase_nominal>
la nia peda comida a Mara en <frase_nominal>
la nia peda comida a Mara en <grupo_nominal>
la nia peda comida a Mara en <articulo><nombre>
la nia peda comida a Mara en el <nombre>
la nia peda comida a Mara en el parque
Por tanto, al haber una derivacin que produce dicha frase
partiendo de <oracin>, se sigue que se trata de una frase correcta
que pertenece al lenguaje representado por la gramtica.
8
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.1 Concepto bsico de
Gramtica. Ejemplos
Ejemplo: consideremos la instruccin de cualquier lenguaje x = y+2*z
con:
conjunto de producciones :
<instruccin> ::= <asignacin>
<asignacin> ::= <identificador>=<expresin>
<expresin> ::= <sumando>
<expresin> ::= <sumando>+<expresin>
<sumando> ::= <factor>
<sumando> ::= <factor> * <sumando>
<factor> ::= <identificador>
<factor> ::= <nmero>
Reglas morfolgicas :
<identificador> ::= x
<identificador> ::= y
<identificador> ::= z
<nmero> ::= 2
9
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.1 Concepto bsico de
Gramtica. Ejemplos
Obtenemos la expresin x = y+2*z a partir de <instruccin> as:
<instruccin>
<asignacin>
<identificador> = <expresin>
x = <expresin>
x = <sumando> + <expresin>
x = <factor> + <expresin>
x = <identificador> + <expresin>
x = y+ <expresin>
x = y+ <sumando>
x = y+ <factor> * <sumando>
x = y+ <nmero> * <sumando>
x = y+2* <sumando>
x = y+2* <factor>
x = y+2* <identificador>
x = y+2*z
10
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
ndice
3.1. Concepto bsico de Gramtica. Ejemplos
3.2. Concepto de gramtica formal
3.3. Tipos de Gramticas. Jerarqua de Chomsky
3.4. rboles de derivacin
3.5. Ambigedad
3.6. Recursividad
3.7. Factorizacin a izquierdas
11
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.2 Concepto de gramtica
formal
Definiciones
Produccin o regla (x::=y):
es un par ordenado (x, y) con x, y e E
*
, es decir, si se encuentra x como parte
de cualquier palabra v se puede sustituir x por y en v, lo que permite
transformar palabras en otras
Derivacin directa v w:
aplicacin de una produccin (x ::= y) a una palabra v para convertirla en
otra w donde v=zxu y w=zyu (v, w, z, u e E
*
)
Se cumple que para cada produccin x::=y existe una derivacin directa (haciendo
z=u=): x y
Derivacin v * w:
aplicacin de una secuencia de producciones a una palabra.
Longitud de la derivacin:
nmero de derivaciones que hay que aplicar para obtener la palabra.
12
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.2 Concepto de gramtica
formal
Definiciones
Derivacin ms a la izquierda:
Se utiliza en cada derivacin directa la produccin aplicada a los smbolos
ms a la izquierda de la palabra.
Derivacin ms a la derecha:
Se utiliza en cada derivacin directa la produccin aplicada a los smbolos
ms a la derecha de la palabra.
13
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.2 Concepto de gramtica
formal
Definiciones
Se denomina gramtica formal a la cudrupla
G = (E
T
,E
N
, S, P)
E
T
, alfabeto de smbolos terminales
E
N
, alfabeto de smbolos no terminales
S e E
N
, es el axioma o smbolo inicial
P es un conjunto finito de reglas de produccin de la forma u ::=
v, donde u e E
+
y v e E
*
.
Se verifica adems que:
E
T
E
N
= |
el alfabeto es E = E
T
E
N
14
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.2 Concepto de gramtica
formal
Forma normal de Backus
Ejemplo : consideremos la gramtica
E
T
= {0, 1, 2}
E
N
= {N, C}
S = N
P = { N::=NC, N::=C, C::=0, C::=1, C::=2}
Es posible establecer una notacin simplificada para las reglas de
produccin. Si existen dos reglas de la forma
u::=v
u::=w
se pueden representar de la forma:
u::=v | w
Esta forma de representar las reglas de produccin recibe el nombre de
forma normal de Backus (o BNF)
15
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.2 Concepto de gramtica
formal
Formas sentenciales y sentencias
Sea G = (E
T
,E
N
, S, P). Una palabra x e E* se denomina forma
sentencial de G si se verifica que
S * x
Considerando la gramtica anterior, las siguientes son
formas sentenciales : NCC, NC2, 120
S = N NC NCC
S = N NC NCC NC2
S = N NC NCC CCC 1CC 12C 120
Si una forma sentencial x cumple que x e E
T
* se dice que x es
una sentencia o instruccin de G. Es decir, las sentencias
estarn compuestas nicamente por smbolos terminales.
En el ejemplo anterior es sentencia: 120
16
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.2 Concepto de gramtica
formal
Lenguaje asociado a una gramtica
Sea una gramtica G = (E
T
,E
N
, S, P). Se llama lenguaje
asociado a la G, o lenguaje generado por G, o lenguaje
descrito por G, al conjunto :
L(G) = { x / S * x and x e E
T
* }
Conjunto de todas las sentencias de la gramtica
Ya que la teora de gramticas formales (Chomsky), junto con
la notacin BNF, proporciona una forma de describir
lenguajes, esta simbologa se considera como un
metalenguaje (lenguaje para describir lenguajes).
17
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
ndice
3.1. Concepto bsico de Gramtica. Ejemplos
3.2. Concepto de gramtica formal
3.3. Tipos de Gramticas. Jerarqua de Chomsky
3.4. rboles de derivacin
3.5. Ambigedad
3.6. Recursividad
3.7. Factorizacin a izquierdas
18
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.3. Tipos de Gramticas.
Jerarqua de Chomsky
Chomsky clasific las gramticas en cuatro grandes grupos : G0, G1,
G2 y G3. Cada uno de estos grupos incluye las gramticas del
siguiente, de acuerdo con el siguiente esquema:
G3 c G2 c G1 c G0
19
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.3. Tipos de Gramticas.
Jerarqua de Chomsky
1. Gramticas tipo 0
Las reglas de produccin tienen la forma
u ::= v
donde u e E
+
, v e E*, u = xAy con x e E*, y e E*, A e E
N
sin otra restriccin
En las reglas de produccin:
La parte izquierda no puede ser la palabra vaca.
En la parte izquierda (u) ha de aparecer algn smbolo no terminal.
Los lenguajes representados por estas gramticas reciben el nombre de
lenguajes sin restricciones. Puede demostrarse que todo lenguaje
representado por este tipo de gramticas pueden ser descritos tambin por
un grupo de gramticas un poco ms restringido (llamado de gramticas de
estructura de frases), cuyas producciones tienen la forma xAy ::= xvy, donde
x, y, v e E*, siendo A un smbolo no terminal.
20
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.3. Tipos de Gramticas.
Jerarqua de Chomsky
Ya que v puede ser la palabra vaca, se sigue que en estas reglas podemos
encontrar situaciones en que la parte derecha sea ms corta que la izquierda.
Las reglas en que ocurre esto se denominan compresoras. Una gramtica que
contenga al menos una regla compresora se denomina gramtica
compresora.
En las gramticas compresoras, las derivaciones pueden ser decrecientes, ya
que la longitud de las palabras puede disminuir en cada uno de los pasos de
derivacin.
Ejemplo: sea G = ({a, b}, {A, B, C}, A, P), donde P:
A ::= aABC | abC
CB ::= BC
bB ::= bb
bC ::= b
21
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.3. Tipos de Gramticas.
Jerarqua de Chomsky
Esta gramtica es de tipo 0, no es de estructura de frases por la regla
CB ::= BC
Formas de considerarla:
Considerando x = , A = C, y = B. Estara formada la parte izquierda
de la produccin, pero la derecha ser vB y sea cual sea v, no podr
ser BC
Considerando x = C, A = B, y = . As tendramos formada la parte
izquierda de la regla, pero en la derecha tendramos Cv, y sea v lo
que sea no podremos obtener CB.
Ya no es posible hacer ninguna otra descomposicin, por lo que esta
regla no pertenece al esquema de reglas visto para las gramticas de
estructura de frases.
Para la produccin : A ::= aABC:
A = A, x= , y =. Si hacemos v = aABC, la regla se ajusta al formato
considerado.
22
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.3. Tipos de Gramticas.
Jerarqua de Chomsky
Sin embargo la regla CB ::= BC puede descomponerse en las cuatro reglas
siguientes, que permiten obtener las mismas derivaciones con ms pasos,
pero ajustndose a las condiciones exigidas para que la gramtica sea de
estructura de frases.
CB ::= XB
XB ::= XY
XY ::= BY
BY ::= BC
La gramtica resultante, tendr 3 reglas de produccin ms y dos smbolos
adicionales (X, Y) en el alfabeto de smbolos no terminales.
Veamos la derivacin de la sentencia aaabbb, mediante la gramtica original :
A a(A)BC aa(A)BCBC aaab(CB)CBC aaa(bB)CCBC aaab(bC)CBC
aaab(bC)BC aaab(bB)C aaabb(bC) aaabbb
Se observa tambin que la gramtica es compresora, debido a la presencia de
la regla bC ::= b.
Puede comprobarse que el lenguaje generado por esta gramtica es
{a
n
b
n
|n=1,2,..}
23
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.3. Tipos de Gramticas.
Jerarqua de Chomsky
2. Gramticas tipo 1
Las reglas de produccin de esta gramtica tienen la forma
xAy ::= xvy
donde x, y e E*, v e E
+
y A ha de ser un smbolo no terminal.
(A puede transformarse en v slo si aparece en el contexto definido por x e y)
Ya que v no puede ser la palabra vaca, se deduce de aqu que este tipo de gramticas no
pueden tener reglas compresoras. Se admite una excepcin en la regla S ::= (siendo S el
axioma de la gramtica). Como consecuencia se tiene que la palabra vaca pertenece al
lenguaje generado por la gramtica slo si contiene esta regla.
Los lenguajes generados por este tipo de gram{ticas se denominan dependientes del
contexto.
24
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.3. Tipos de Gramticas.
Jerarqua de Chomsky
2. Gramticas tipo 1
Evidentemente todas las gramticas de tipo 1 son tambin de tipo 0, y as,
todos los lenguajes dependientes de contexto sern tambin lenguajes sin
restricciones.
Ejemplo : G = ({S, B, C}, {a, b, b}, S,P), donde P es:
S ::= aSBc | aBC
bB ::= bb
bC ::= bc
CB ::= BC
cC ::= cc
aB ::= ab
25
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.3. Tipos de Gramticas.
Jerarqua de Chomsky
3. Gramticas tipo 2
Las reglas de estas gramticas se ajustan al siguiente esquema:
A ::= v
donde v e E*, y A e E
N
En concreto v puede ser .
Para toda gramtica de tipo 2 existe una gramtica equivalente desprovista de reglas de
la forma A ::= , que generar el mismo lenguaje que la de partida, excepto la palabra
vaca. Si se le aade a la segunda gramtica la regla S ::= , las gramticas generarn el
mismo lenguaje.
Por lo tanto, se pueden definir las gramticas de tipo 2 de una forma ms restringida, en
el que las reglas de produccin tendrn la siguiente forma
A ::= v donde v e E
+
, y A e E
N
. Adems podrn contener regla
S ::=
Los lenguajes generados por este tipo de gramticas se denominan independientes de
contexto, ya que la conversin de A en v puede realizarse independientemente del
contexto en que aparezca A.
26
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.3. Tipos de Gramticas.
Jerarqua de Chomsky
3. Gramticas tipo 2
La mayor parte de los lenguajes de programacin de ordenadores pueden
describirse mediante gramticas de este tipo.
Ejemplo : sea la gramtica G = ({a, b}, {S}, S, { S ::= aSb | ab}).
Es una gramtica de tipo 2. La derivacin de la palabra aaabbb ser:
S aSb aaSbb aaabbb
Puede verse que el lenguaje definido por esta gramtica es {a
n
b
n
| n=1, 2, ...}
Un mismo lenguaje puede generarse por muchas gramticas diferentes. Sin
embargo, una gramtica determinada describe siempre un lenguaje nico.
27
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.3. Tipos de Gramticas.
Jerarqua de Chomsky
4. Gramticas tipo 3
Estas gramticas se clasifican en los dos grupos siguientes:
Gramticas lineales por la izquierda, cuyas reglas de produccin pueden tener una de
las formas siguientes:
A ::= a
A ::= Va
S ::=
donde a e E
T
, A, V e E
N
, y S es el axioma de la gramtica.
Gramticas lineales por la derecha, cuyas reglas de produccin tendrn la forma:
A ::= a
A ::= aV
S ::=
donde a e E
T
, A, V e E
N
, y S es el axioma de la gramtica.
Los lenguajes representados por este tipo de gramticas se denominan lenguajes
regulares.
28
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.3. Tipos de Gramticas.
Jerarqua de Chomsky
4. Gramticas tipo 3
G1 = ({ 0, 1}, {A, B}, A, { A ::= B1 | 1, B ::= A0})
Gramtica lineal por la izquierda que describe el lenguaje:
L1 = { 1, 101, 10101, ... } = {1(01)
n
| n = 0, 1, 2, ...}
G2 = ({ 0, 1}, {A, B}, A, { A ::= 1B | 1, B ::= 0A})
Gramtica lineal derecha que genera el mismo lenguaje que la gramtica
anterior.
29
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
ndice
3.1. Concepto bsico de Gramtica. Ejemplos
3.2. Concepto de gramtica formal
3.3. Tipos de Gramticas. Jerarqua de Chomsky
3.4. rboles de derivacin
3.5. Ambigedad
3.6. Recursividad
3.7. Factorizacin a izquierdas
30
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.4 rboles de derivacin
A toda derivacin de una gramtica de tipo 1, 2 3 le corresponde un rbol de
derivacin. Este rbol se construye as :
La raz del rbol corresponde al axioma de la gramtica
Una derivacin directa se representa por un conjunto de ramas que salen de un
nodo determinado. Al aplicar una regla, uno de los smbolos de la parte izquierda
de la produccin queda sustituido por la palabra de la parte derecha. Por cada uno
de los smbolos de x se dibuja una rama, que parte del nodo correspondiente al
smbolo sustituido.
En cada rama, el nodo de partida se denomina padre. El final se denomina hijo del
primero. Dos nodos hijos del mismo padre se denominan hermanos. Un nodo es
ascendiente de otro si es su padre o ascendiente de su padre. Un nodo es
descendiente de otro si es su hijo o es descendiente de su hijo.
A lo largo del proceso de construccin del rbol, los nodos finales de cada paso, ledos
de izquierda a derecha, forman la forma sentencial obtenida por la derivacin
representada por el rbol.
Ser rama terminal aquella dirigida hacia un smbolo terminal. Este nodo se llama hoja.
El conjunto de hojas, ledo de izquierda a derecha, forma la sentencia generada por la
derivacin.
31
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.4 rboles de derivacin
32
Ejemplo : sea la gramtica
G = ({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0},{N,C}, N,
{N ::= C | NC, C ::=0|1|2|3|4|5|6|7|8|9})
Consideraremos la derivacin :
N NC NCC CCC 2CC 23C 234
El rbol de derivacin correspondiente es:
C
4
N
N
2
C
3
N
C
Subrbol
Dado un rbol correspondiente a una derivacin, se denomina subrbol al rbol cuya
raz es un nodo cualquiera y cuyos nodos son los descendientes de ste.
Teorema : Los nodos terminales de un subrbol, ledos de izquierda a derecha, forman una
frase respecto de la raz del subrbol.
Demostracin :
Sea U la raz del subrbol, y sea u la palabra formada por los nodos terminales del subrbol. As, se
verifica que U +u
Sea x la palabra formada, leyendo de izquierda a derecha, los nodos terminales del rbol situados a la
izquierda de los del subrbol. Sea y la palabra formada, leyendo de izquierda a derecha, los nodos
terminales situados a la derecha de los del subrbol. De esta forma se verifica que xuy es la sentencia
definida por el rbol completo.
Como S *xUy y adems U +u, se sigue que u es una frase respecto de U y de la forma sentencial
xuy.
Si todos los nodos terminales del subrbol son hijos de la raz, entonces u es una frase
simple.
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.4 rboles de derivacin
Proceso inverso
Para cada derivacin existe un nico rbol de derivacin. Sin
embargo, de una misma sentencia pueden obtenerse, a veces,
varias derivaciones diferentes.
Por ejemplo, el mismo rbol anterior puede aplicarse a las
siguientes derivaciones :
N NC NCC CCC 2CC 23C 234
N NC NCC CCC C3C 23C 234
N NC NCC CCC 2CC 2C4 234
33
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
ndice
3.1. Concepto bsico de Gramtica. Ejemplos
3.2. Concepto de gramtica formal
3.3. Tipos de Gramticas. Jerarqua de Chomsky
3.4. rboles de derivacin
3.5. Ambigedad
3.6. Recursividad
3.7. Factorizacin a izquierdas
34
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.5 Ambigedad
Se dice que una sentencia es ambigua cuando para una misma
sentencia podemos tener varios rboles de derivacin diferentes.
(Como se vio en el ejemplo anterior, una misma sentencia puede obtenerse como
resultado de varias derivaciones diferentes, pero a las que les corresponde un nico
rbol de derivacin.)
Se dice que una gramtica es ambigua si tiene al menos una
sentencia ambigua.
Se dice que un lenguaje es ambiguo si existe una gramtica ambigua
que lo genera.
Ejemplo :
G = ({i, +, *, (, )}, {E}, E, E ::= E + E | E * E | ( E ) | i })
Consideremos la sentencia i+i*i. Para esta sentencia podemos tener los siguientes
rboles de derivacin :
35
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.5 Ambigedad
36
rboles de derivacin para la sentencia i+i*i.
E
E
i +
E
E
*
E
i i
E
i
*
E
E
i +
E
i
E
Esto no quiere decir que el lenguaje sea ambiguo, ya que se puede encontrar
una gramtica equivalente a la anterior, sin ser ambigua.
Pero hay lenguajes para los cuales es imposible encontrar gramticas no
ambiguas. Estos lenguajes se denominan inherentemente ambiguos.
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.5 Ambigedad
37
Ejemplo: gramtica equivalente a la anterior sin ser ambigua:
G = ({i, +, *, (, )}, {E, T, F}, E,
E ::= T | E + E, T ::= F | T * F, F ::= ( E ) | i })
Existe un slo rbol de derivacin para la sentencia i+i*i
E
E
i +
T
T
*
F
i i
T
F F
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
ndice
3.1. Concepto bsico de Gramtica. Ejemplos
3.2. Concepto de gramtica formal
3.3. Tipos de Gramticas. Jerarqua de Chomsky
3.4. rboles de derivacin
3.5. Ambigedad
3.6. Recursividad
3.7. Factorizacin a izquierdas
38
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.6 Recursividad
39
Una gramtica G se llama recursiva en A, A e E
N
, si
A + xAy
Si x es la palabra vaca, se dice que la gramtica es recursiva a izquierdas
A + Ay
Si y es la palabra vaca, se dice que la gramtica es recursiva a derechas
A + xA
Se dice que una produccin es recursiva si
A::= xAy
La produccin es recursiva a izquierdas si x =.
A::= Ay
Ser recursiva a derechas si y =.
A::= xA
Si un lenguaje es infinito, la gramtica que lo representa ha de ser
recursiva.
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.6 Recursividad
40
Eliminacin de la recursividad por la izquierda en producciones de un
mismo smbolo no terminal:
A e E
N
Si P1= (A::=Ao
1
| Ao
2
|<.| Ao
n
||
1
| |
2
|<||
m
) donde |
i
no comienza por A
entonces //crear un smbolo nuevo A
E
N=
E
N
{A};
P=(P-P1) {A::= |
1
A| |
2
A|<||
m
A ; A::= o
1
A| o
2
A|<|o
n
A|}
fsi
f
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.6 Recursividad
41
Eliminacin de la recursividad por la izquierda en ms de un paso
1. Disponer los E
N
en algn orden A
1
, A
2
,<A
n
2. Para i:=1 hasta n
Para j:=1 hasta n
Si i = j entonces
reemplazar cada produccin A
i
::= A
j
por:
A
i
::=
1
|
2
|<<.
k

donde A
j
::=
1
|
2
|<<.
k
son todas las reglas de A
j
fsi
Eliminar la recursividad por la izquierda de las A
i
fpara
fpara
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.6 Recursividad
42
G =({i,+,*,(,)},{E,T},E, P={E ::=T+E | T*E | i ; T::=E|(E)})
1. A
1
=E; A
2
=T
2. Bucles:
i=1 (A
1
=E); j=1 (A
1
=E). Se reemplazaran E::=Eo. No hay.
i=1 (A
1
=E); j=2 (A
2
=T). Se reemplazan E::=To. El nuevo P es
E ::=E+E | E*E |(E)+E | (E)*E | i
T::= E | (E)
Se elimina la recursin en E quedando P:
E ::= (E)+EE | (E)*EE | i E
E ::= +EE | *EE |
T::= E | (E)
i=2 (A
2
=T); j=1 (A
1
=E). Se reemplazan T::=Eo. El nuevo P es
E ::= (E)+EE | (E)*EE | i E
E ::= +EE | *EE |
T::= (E)+EE | (E)*EE | i E | (E)
Se eliminara la recursin en T si la hubiera.
i=2 (A
2
=T); j=2 (A
2
=T). Se reemplazaran T::=To. No hay
El conjunto final de producciones es P
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
ndice
3.1. Concepto bsico de Gramtica. Ejemplos
3.2. Concepto de gramtica formal
3.3. Tipos de Gramticas. Jerarqua de Chomsky
3.4. rboles de derivacin
3.5. Ambigedad
3.6. Recursividad
3.7. Factorizacin a izquierdas
43
Tema 3: Fundamentos de la
Teora de Gramticas Formales
Teora de Autmatas y Lenguajes Formales
3.7 Factorizacin a izquierdas
44
Se puede factorizar a izquierdas cuando en una gramtica aparecen producciones
de un mismo smbolo no terminal en cuya parte derecha, la primera parte es
comn.
Algoritmo de factorizacin a izquierdas:
A e E
N
Si A::=|o
1
| |o
2
| <..||o
n
entonces //crear un smbolo nuevo A y cambiar las producciones por:
E
N=
E
N
{A};
A::= |A
A::= o
1
| o
2
|<|o
n
fsi
f
Ejemplo: {E ::=E+E | E*E | i }. Se crea E y quedara:
E ::= EE | i
E::= +E| *E

Potrebbero piacerti anche