Está en la página 1de 44

Departamento de Tecnologas de la Informacin

Tema 3: Fundamentos de la
Teora de Gramticas
Formales

Ciencias de la Computacin e Inteligencia Artificial


Tema 3: Fundamentos de la
ndice
Teora de Gramticas Formales

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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la
ndice
Teora de Gramticas Formales

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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.1 Concepto bsico de
Teora de Gramticas Formales 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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.1 Concepto bsico de
Teora de Gramticas Formales 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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.1 Concepto bsico de
Teora de Gramticas Formales 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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.1 Concepto bsico de
Teora de Gramticas Formales 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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.1 Concepto bsico de
Teora de Gramticas Formales 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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.1 Concepto bsico de
Teora de Gramticas Formales 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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.1 Concepto bsico de
Teora de Gramticas Formales 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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la
ndice
Teora de Gramticas Formales

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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.2 Concepto de gramtica
Teora de Gramticas Formales formal

Definiciones
Produccin o regla (x::=y):
es un par ordenado (x, y) con x, y *, 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 *)
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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.2 Concepto de gramtica
Teora de Gramticas Formales 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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.2 Concepto de gramtica
Teora de Gramticas Formales formal

Definiciones

Se denomina gramtica formal a la cudrupla


G = (T,N, S, P)
T, alfabeto de smbolos terminales
N, alfabeto de smbolos no terminales
S N, es el axioma o smbolo inicial
P es un conjunto finito de reglas de produccin de la forma u ::=
v, donde u + y v *.

Se verifica adems que:


T N =
el alfabeto es = T N

14
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.2 Concepto de gramtica
Teora de Gramticas Formales formal

Forma normal de Backus

Ejemplo : consideremos la gramtica


T = {0, 1, 2}
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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.2 Concepto de gramtica
Teora de Gramticas Formales formal

Formas sentenciales y sentencias

Sea G = (T,N, S, P). Una palabra x * 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 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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.2 Concepto de gramtica
Teora de Gramticas Formales formal

Lenguaje asociado a una gramtica

Sea una gramtica G = (T,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 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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la
ndice
Teora de Gramticas Formales

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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.3. Tipos de Gramticas.
Teora de Gramticas Formales 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 G2 G1 G0

19
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.3. Tipos de Gramticas.
Teora de Gramticas Formales Jerarqua de Chomsky

1. Gramticas tipo 0
Las reglas de produccin tienen la forma
u ::= v
donde u +, v *, u = xAy con x *, y *, A 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 *, siendo A un smbolo no terminal.

20
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.3. Tipos de Gramticas.
Teora de Gramticas Formales 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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.3. Tipos de Gramticas.
Teora de Gramticas Formales 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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.3. Tipos de Gramticas.
Teora de Gramticas Formales 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
{anbn|n=1,2,..}

23
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.3. Tipos de Gramticas.
Teora de Gramticas Formales Jerarqua de Chomsky

2. Gramticas tipo 1
Las reglas de produccin de esta gramtica tienen la forma

xAy ::= xvy


donde x, y *, v + 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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.3. Tipos de Gramticas.
Teora de Gramticas Formales 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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.3. Tipos de Gramticas.
Teora de Gramticas Formales Jerarqua de Chomsky

3. Gramticas tipo 2

Las reglas de estas gramticas se ajustan al siguiente esquema:

A ::= v
donde v *, y A 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 +, y A 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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.3. Tipos de Gramticas.
Teora de Gramticas Formales 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 {anbn | n=1, 2, ...}

Un mismo lenguaje puede generarse por muchas gramticas diferentes. Sin


embargo, una gramtica determinada describe siempre un lenguaje nico.

27
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.3. Tipos de Gramticas.
Teora de Gramticas Formales 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 T, A, V 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 T, A, V N, y S es el axioma de la gramtica.
Los lenguajes representados por este tipo de gramticas se denominan lenguajes
regulares.

28
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la 3.3. Tipos de Gramticas.
Teora de Gramticas Formales 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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la
ndice
Teora de Gramticas Formales

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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la
3.4 rboles de derivacin
Teora de Gramticas Formales

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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la
3.4 rboles de derivacin
Teora de Gramticas Formales
N
Ejemplo : sea la gramtica
G = ({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0},{N,C}, N,
N C
{N ::= C | NC, C ::=0|1|2|3|4|5|6|7|8|9})
Consideraremos la derivacin : N C

N NC NCC CCC 2CC 23C 234 C


El rbol de derivacin correspondiente es:
2 3 4
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.

32
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la
3.4 rboles de derivacin
Teora de Gramticas Formales

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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la
ndice
Teora de Gramticas Formales

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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la
3.5 Ambigedad
Teora de Gramticas Formales

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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la
3.5 Ambigedad
Teora de Gramticas Formales

rboles de derivacin para la sentencia i+i*i.

E E

E E E E

E E E E

i + i * i i + i * i

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.

36
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la
3.5 Ambigedad
Teora de Gramticas Formales

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 T

T T F

F F

i + i * i

37
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la
ndice
Teora de Gramticas Formales

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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la
3.6 Recursividad
Teora de Gramticas Formales

Una gramtica G se llama recursiva en A, A 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.

39
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la
3.6 Recursividad
Teora de Gramticas Formales

Eliminacin de la recursividad por la izquierda en producciones de un


mismo smbolo no terminal:

A N
Si P1= (A::=A1| A2|<.| An|1| 2|<|m) donde i no comienza por A
entonces //crear un smbolo nuevo A
N= N {A};
P=(P-P1) {A::= 1A| 2A|<|mA ; A::= 1A| 2A|<|nA|}
fsi
f

40
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la
3.6 Recursividad
Teora de Gramticas Formales

Eliminacin de la recursividad por la izquierda en ms de un paso

1. Disponer los N en algn orden A1, A2,<An


2. Para i:=1 hasta n
Para j:=1 hasta n
Si i j entonces
reemplazar cada produccin Ai::= Aj por:
Ai::= 1 | 2 |<<. k
donde Aj::= 1 | 2 |<<. k son todas las reglas de Aj
fsi
Eliminar la recursividad por la izquierda de las Ai
fpara
fpara

41
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la
3.6 Recursividad
Teora de Gramticas Formales

G =({i,+,*,(,)},{E,T},E, P={E ::=T+E | T*E | i ; T::=E|(E)})


1. A1=E; A2=T
2. Bucles:
i=1 (A1=E); j=1 (A1=E). Se reemplazaran E::=E. No hay.
i=1 (A1=E); j=2 (A2=T). Se reemplazan E::=T. 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 (A2=T); j=1 (A1=E). Se reemplazan T::=E. 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 (A2=T); j=2 (A2=T). Se reemplazaran T::=T. No hay
El conjunto final de producciones es P

42
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la
ndice
Teora de Gramticas Formales

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
Teora de Autmatas y Lenguajes Formales
Tema 3: Fundamentos de la
3.7 Factorizacin a izquierdas
Teora de Gramticas Formales

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 N
Si A::=1| 2 | <..|n
entonces //crear un smbolo nuevo A y cambiar las producciones por:
N= N {A};
A::= A
A::= 1| 2|<|n
fsi
f

Ejemplo: {E ::=E+E | E*E | i }. Se crea E y quedara:


E ::= EE | i
E::= +E| *E

44
Teora de Autmatas y Lenguajes Formales