13 Derivación de gramáticas y ambigüedad - … · *Incluir la redacción de cada ejercicio...
-
Upload
nguyenmien -
Category
Documents
-
view
229 -
download
0
Transcript of 13 Derivación de gramáticas y ambigüedad - … · *Incluir la redacción de cada ejercicio...
Clase 13: Derivación de gramáticas y ambigüedad
Solicitado: Ejercicios 11: Derivaciones de gramáticas y ambigüedad
1M. en C. Edgardo Adrián Franco Martínez
http://computacion.cs.cinvestav.mx/~efranco@efranco_escom
Contenido• Derivación
• Ejemplo 01
• Ejemplo 02
• Derivaciones
• Árboles de derivación• Ejemplo 03
• Ejemplo 04
• Ambigüedad en gramáticas
• Problemas de la ambigüedad
• Eliminar la ambigüedad en gramáticas
• Ejercicios 11: Derivaciones de gramáticas y ambigüedad
Compiladores (Lenguajes y gramáticas - Edgardo A. Franco)
2
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
βα G⇒ 3
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez• Definición: Decimos que la cadena w1 deriva en un
paso a la cadena w2 (w1 ⇒G w2) si y solo si existencadenas x, y ∈ V * tales que w1 = xuy y w2 = xvy yademás existe una regla u → v en P.• Se acostumbra omitir el subíndice que indica la gramática
G.
• Definición: una cadena w ∈ V * es derivable a partirde la gramática G si y solo si existe una secuencia dederivación iniciando en el símbolo inicial yterminando en la cadena w: S = w1 ⇒ w2 ⇒ w3 ⇒
… ⇒ wn = w.
• Escribimos si α deriva a β en 0 o más pasos.
Derivación
4
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Definición: el lenguaje generado por una gramáticaG, L(G), es igual al conjunto de las palabras en VTderivables a partir de G.
• Una gramática describe las reglas sintácticas dellenguaje. Si una palabra no sigue las reglas, entoncesno pertenecen al lenguaje generado por la gramática.
G = (VN,VT, S, P)VN= {S, A, B}VT = {a, b}
P: S → AAA → AAA | bA | Ab | a |BB → ABAA | b
5
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Demostrar la pertenencia de la palabra “aabba” alL(G).
G = (VN,VT, S, P)VN= {S, A,B}VT = {a, b}
P: S → AAA → AAA | bA | Ab | a |BB → ABAA | b
Tabla de derivaciones
Cadena Producción Derivación
S S → AA AA
AA A → AAA AAAA
AAAA A → a aAAA
aAAA A → a aaAA
aaAA A →bA aabAA
aabAA A →B aabBA
aabBA B →b aabbA
aabbA A → a aabba
Ejemplo 01
Ejemplo 02• G = (VN,VT, S, P)
• VN= {S, A}
• VT = {a, b}
• P: S → AA A → AAA | bA | Ab | a
• Derivar la palabra ababaa.
6
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
⇒ AAAA ⇒ Aa ⇒ aA
⇒ aAAA ⇒ AAAa ⇒ aAAA
⇒ abAAA ⇒ AAbAa ⇒ aAAa
⇒ abaAA ⇒ AAbaa ⇒ abAAa
⇒ ababAA ⇒ AbAbaa ⇒ abAbAa
⇒ ababaA ⇒ Ababaa ⇒ ababAa
⇒ ababaa ⇒ ababaa ⇒ ababaa
S ⇒ AA S ⇒ AA S ⇒ AA
7
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
En esta gramática existe más de una derivación de la palabraababaa.
Derivaciones de ababaa
Derivaciones• Derivación por la izquierda: las reglas de reemplazo
son aplicadas a la primera variable de izquierda aderecha.
• Derivación por la derecha: las reglas de reemplazoson aplicadas a la última variable de derecha aizquierda.
8
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
9
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Árboles de derivación• Son una forma de representar las derivaciones, siendo
utilizados, por ejemplo, en la construcción de compiladorespara representar el análisis sintáctico de los programasfuente y sirviendo de base para la generación de código.
• Sólo se pueden definir árboles de derivación para
gramáticas de tipo 1 o mas restrictivas (tipos 2 y 3).
10
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Un árbol de derivación permite mostrar gráficamente cómose puede derivar cualquier cadena de un lenguaje a partir delsímbolo inicial de una gramática que genera ese lenguaje.
• Un árbol es un conjunto de puntos, llamados nodos, unidospor líneas, llamadas arcos. Un arco conecta dos nodosdistintos. Para ser un árbol un conjunto de nodos y arcosdebe satisfacer ciertas propiedades:
• El nodo raíz está rotulado con el símbolo inicial de lagramática.
• Cada hoja corresponde a un símbolo terminal.
• Cada nodo interior corresponde a un símbolo no terminal.
11
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
wS G* ⇒
12
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Para una derivación su árbol de derivación
se construye de la siguiente manera:
• Inicializar el árbol con la raíz S.
• Si A → x1x2...xn (con xi ∈ V) es la regla de derivaciónaplicada a la cadena uAv, entonces añadir x1, x2, ..., xn comolos hijos de A en el árbol.
• Si A → λ es la regla de derivación aplicada a la cadena uAv,entonces añadir λ como hijo único de A en el árbol.
• Al árbol de derivación también se le llama árbol de
análisis o árbol de análisis gramatical o árbol de
análisis sintáctico.
Compiladores (Lenguajes y gramáticas II - Edgardo A. Franco)
13
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• El orden de las hojas también sigue el procesoiterativo de construcción del árbol:
• Inicialmente sólo hay la hoja S y el orden es obvio.
• Al utilizar la regla A → x1x2...xn, cada xi se convierte en hojay en el orden de las hojas A se reemplaza por x1, x2, ...,xn.
• Al utilizar la regla A → λ, simplemente se reemplaza A porλ.
• La cadena de caracteres terminales que se obtieneal recorrer las hojas en orden se llama el producto
del árbol.
P:
E→DbCC→baDC→bD →aD→CaD
E
D b C
bC a D
ab
G=(VT,VN,E,P)
VT={a,b,c}VN={E,C,D}
14
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Ejemplo 03
Ejemplo 04
• P.g. Sea la gramática G dada por:S → AB A → aA|aB → bB|b
• La cadena aabbb tienen la siguiente derivación:
S => AB => AbB => AbbB => Abbb => aAbbb => aabbb
15
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Compiladores (Lenguajes y gramáticas II - Edgardo A. Franco)16
La cadena aabbb tienen la siguiente derivación:
S => AB => AbB => AbbB => Abbb => aAbbb => aabbb
16
S
A B
b B
b B
b
a A
a16
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Ambigüedad en gramáticas
• Considérese la gramáNca: S → SbS | ScS | a
1. S => SbS => SbScS => SbSca => Sbaca => abaca
2. S => ScS => SbScS => abScS => abacS => abaca
S
S S
ca
a
b
S S
a
Derivación 1
S
S S
b a
a
c
S S
a
Derivación 2Para una misma cadena, se obtuvieron árboles de derivación distintos
17
Teo
ría
co
mp
uta
cio
na
l
Cla
se 1
3:
De
riva
ció
n d
e g
ram
áti
cas
y a
mb
igü
ed
ad
Pro
f. E
dga
rdo
Ad
riá
n F
ran
co M
art
íne
z
18
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Una gramática es ambigua cuando para unadeterminada cadena, se produce más de un árbol
de derivación.
• Una gramática es ambigua si existe unacadena w ∈∈∈∈ L(G) que tiene más de unaderivación por la izquierda o más de unaderivación por la derecha o si tiene dos omás árboles de derivación.
• En caso de que toda cadena w ∈∈∈∈ L(G) tenga unúnico árbol de derivación, la gramática es noambigua.
19
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
S
a S
a
S
S a
a
• P.g: la gramática S → aS | Sa | a es ambigua porque aa tiene dos derivaciones por la izquierda
S ⇒ aS ⇒ aa S ⇒ Sa ⇒ aa
• Esta gramática genera el lenguaje a+ que también es el lenguaje generado por la gramática no ambigua S → aS | a.
S
a S
a
S
S a
a
20
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
S
a S
a
Problemas de la ambigüedad• En la gramática para expresiones aritméticas sobre id y num:
• E → E + E
• E → E ∗ E
• E → id
• E → num
• E → -E
• E → (E)
• Es ambigua porque la cadena id + num ∗∗∗∗ id tiene dos árboles de derivación:
• Árbol izquierdo representa (id + num) ∗ id
• Árbol de la derecha representa id + (num ∗ id).
E
E E∗
id + num id
E
E E+
num * idid
21
La ambigüedad puede producir seriosproblemas en lenguajes cuyosignificado depende, en parte, de suestructura, como es el caso de loslenguajes naturales y los deprogramación.
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Eliminar la ambigüedad en gramáticas • Eliminar la ambigüedad en una gramática
requiere de un proceso de análisis propio decada gramática que verifique que para ningunapalabra que esta genera se puedan generar másde un árbol de derivación.
• En algunos casos, la ambigüedad de unagramática se puede eliminar utilizando nuevasvariables que eliminen los árboles de derivaciónno deseados.
• También existen los lenguajes inherentementeambiguos para los que no existe una gramáticano ambigua equivalente.
22
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• En el ejemplo de los operadores aritméticos,además de la variable E, que representaexpresiones, también se utilizan las variablesF para factores y T para términos y se tienenlas siguientes reglas:
• E → E + T E → T
• T → T * F T → F
• F → (E) T → -F
• F → id F → num
23
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
1. Dadas las siguientes gramáticas, de la tabla dederivaciones para comprobar la pertenecía de lascadenas dadas.
• .24
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Ejercicios 11 “Derivación de gramáticas y ambigüedad”
1.-
G = (VN,VT, exp, P)VN= {exp, opsuma, term, factor,numero}VT = {+, -,*,(,),0,1,2,3,4,5,6,7,8,9}
P:
exp → exp opsuma term |termopsuma → + | -term → term opmul factor | factoropmult → *factor → (exp) | numeronumero →0|1|2|3|4|5|6|7|8|9
a) 3+4*5-6b) 3*(4-5+6)c) 3-(4+5*6)
2.-
G = (VN,VT, S, P)VN= {S, A, B, C}VT = {a, b}
P:
S → BAaA → bBC | aB → bB | b | λC → aB | aa
a) bbbaab) baac) aa
25
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
2. Dadas las siguientes gramáticas, tipo 3 encuentre la expresiónregular que reconocen
3. Dadas las gramáticas siguientes dibuje los árboles de derivaciónpara las cadenas dadas
• .
1.-a*S → aSS → λ
2.-a*b*S → aS | bA | λA → bA | b | λ
3.-a+b+S → ABA → aA | aB → bB | b
1.-
sentencia → sent-if | otro | λsen-if → if ( exp ) sentencia parte-elseparte-else → else sentencia | λexp → 0 | 1
a) if(0) if(1) otro else else otro b) if(1) otro else if(0) otro else otroc) if(0) otro
2.-
A → (A) A | λ | exp
a) ( ( exp) ( (exp ) (exp ) ) )b) ( exp ) ( exp )c) ( exp ) exp
4. Demostrar que las siguientes gramáticas son ambiguas:
*Se entregarán antes del día Domingo 20 de Octubre de 2013
(23:59:59 hora limite)
*Incluir la redacción de cada ejercicio
*Portada y encabezados de pagina 26
Teo
ría
com
pu
taci
on
alC
lase
13
: D
eriv
ació
n d
e gr
amát
icas
y a
mb
igü
edad
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez1.-a*
S → S + SS → S * SS → ( S )S → 0 SS → 1 SS → 0S → 1
3.-a*b*S → A C | B DA → a A b | a bB → a B | aC → c C | cD → b D c | b c
2.-a+b+sentencia → if ( exp ) sentencia | sent-igualadasent-igualada → if ( exp ) sent-igualada else sentencia | otroexp → 0 | 1