13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de...

26
Clase 13: Derivación de gramáticas y ambigüedad Solicitado: Ejercicios 11: Derivaciones de gramáticas y ambigüedad 1 M. en C. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco @efranco_escom [email protected]

Transcript of 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de...

Page 1: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

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

[email protected]

Page 2: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

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

Page 3: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

βα 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

Page 4: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definició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

Page 5: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

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

Page 6: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

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

Page 7: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

⇒ 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

Page 8: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

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

Page 9: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

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

Page 10: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

Á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

Page 11: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

• 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

Page 12: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

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.

Page 13: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

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.

Page 14: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

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

Page 15: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

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

Page 16: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

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

Page 17: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

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

Page 18: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

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.

Page 19: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definició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

Page 20: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

• 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

Page 21: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

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

Page 22: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

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

Page 23: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

• 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

Page 24: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

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

Page 25: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

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

Page 26: 13 Derivación de gramáticas y ambigüedad€¦ · Teoría computacional Clase 13: Derivación de gramáticas y ambigüedad Prof. Edgardo Adrián Franco Martínez • Definición:

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