47
1 Linguagens Livres de Contexto

1 Linguagens Livres de Contexto. 2 Linguagens Regulares

Embed Size (px)

Citation preview

Page 1: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

1

Linguagens Livres de Contexto

Page 2: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

2

Linguagens Regulares

}{ nnba }{ Rww

Page 3: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

3

Linguagens Regulares

}{ nnba }{ Rww

Linguagens Livres de Contexto

Page 4: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

4

Linguagens Livres de Contexto

Autômatosde Pilha

GramáticasLivres de Contexto

pilha

autômato

Page 5: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

5

Gramáticas Livres de Contexto

Page 6: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

6

Exemplo Uma gramática livre de contexto :

SaSbS

aabbaaSbbaSbS

G

Uma derivação:

Page 7: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

7

SaSbS

aaabbbaaaSbbbaaSbbaSbS

G

Outra derivação:

Uma gramática livre de contexto :

Page 8: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

8

SaSbS

)(GL

(((( ))))

}0:{ nba nn

Page 9: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

9

SbSbSaSaS

abbaabSbaaSaS

Uma gramática livre de contexto :G

Uma derivação:

Exemplo

Page 10: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

10

SbSbSaSaS

abaabaabaSabaabSbaaSaS

Outra derivação:

Uma gramática livre de contexto :G

Page 11: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

11

SbSbSaSaS

)(GL }*},{:{ bawwwR

Page 12: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

12

SSSSaSbS

ababSaSbSSSS

Uma derivação:

Exemplo

Uma gramática livre de contexto :G

Page 13: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

13

SSSSaSbS

abababaSbabSaSbSSSS

Uma derivação:

Uma gramática livre de contexto :G

Page 14: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

14

SSSSaSbS

() ((( ))) (( ))

)(GL

Page 15: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

15

Definição: Gramática Livre de Contexto

Gramática

Produções da forma:xA

xé um string de variáveis e terminais

Variáveis Símbolosterminais

Variávelinicial

Page 16: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

16

Uma linguagem é livre de contexto

se existe uma gramática livre de contexto

tal que

L

G

)(GLL

Definição: Linguagem Livre de Contexto

Page 17: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

17

Ordem de Derivação ABS .1

AaaAA

.3

.2

B

BbB.5.4

aabaaBbaaBaaABABS54321

derivação mais à esquerda :

aabaaAbAbABbABS32541

derivação mais à direita:

Page 18: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

18

|ABbBbAaABS

derivação mais à esquerda:

abbbbabbbbBabbBbbBabAbBabBbBaABS

derivação mais à direita:

abbbbabbBbbabAbabBbaAaABS

Page 19: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

19

Árvores de Derivação

Page 20: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

20

ABS

ABS |aaAA |BbB

S

BA

Page 21: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

21

ABS |aaAA |BbB

aaABABS

a a A

S

BA

Page 22: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

22

ABS |aaAA |BbB

aaABbaaABABS S

BA

a a A B b

Page 23: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

23

ABS |aaAA |BbB

aaBbaaABbaaABABS S

BA

a a A B b

Page 24: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

24

ABS |aaAA |BbB

aabaaBbaaABbaaABABS S

BA

a a A B b

Árvore de derivação

Page 25: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

25

aabaaBbaaABbaaABABS

resultado

aabbaa

S

BA

a a A B b

ABS |aaAA |BbB

Árvore de derivação

Page 26: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

26

Partial Derivation Trees

S

BA

Árvore de derivação parcial

ABS |aaAA |BbB

Page 27: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

27

aaABABS

S

BA

a a A

Árvore de derivação parcial

Page 28: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

28

aaABABS

S

BA

a a A

formasentencial

resultaaaAB

Árvore de derivação parcial

Page 29: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

29

aabaaBbaaBaaABABS

aabaaAbAbABbABS S

BA

a a A B b

Mesma árvore de derivação

À vezes, a ordem de derivação não importaMais à esquerda:

Mais à direita:

Page 30: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

30

Ambiguidade

Page 31: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

31

aEEEEEE |)(|| aaa

E

EE

EE

a

a a

aaaEaaEEaEaEEE*

derivação mais à esquerda

Page 32: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

32

aEEEEEE |)(|| aaa

E

EE

a a

EE a

aaaEaaEEaEEEEEE

derivação mais à esquerda

Page 33: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

33

aEEEEEE |)(|| aaa

E

EE

a a

EE a

E

EE

EE

a

a a

Duas árvores de derivação

Page 34: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

34

A gramática aEEEEEE |)(|| é ambígua:

E

EE

a a

EE a

E

EE

EE

a

a a

string tem duas árvores de derivação

Page 35: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

35

Definição:Uma gramática livre de contexto

é ambígua

se algum string

tem duas ou mais árvores de derivação

G

)(GLw

Page 36: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

36

Em outras palavras:

Uma gramática livre de contexto

é ambígua

se algum string

tem duas ou mais derivações mais à esquerda (ou mais à direita)

G

)(GLw

Page 37: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

37

Porque ambiguidade importa?

E

EE

a a

EE a

E

EE

EE

a

a a

aaa

tome 2a

Page 38: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

38

E

EE

EE

E

EE

EE

222

2

2 2 2 2

2

Page 39: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

39

E

EE

EE

E

EE

EE

6222

2

2 2 2 2

2

8222

4

2 2

2

6

2 2

24

8

Page 40: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

40

E

EE

EE

6222

2

2 2

4

2 2

2

6

Resultado correto:

Page 41: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

41

• Gostaríamos de remover ambiguidade

• Ambiguidade é ruim para linguagens de

programação

Page 42: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

42

Corrigindo a gramática ambígua:aEEEEEE |)(||

Nova gramática não ambígua:

aFEFFTFTT

TETEE

)(

Page 43: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

43

aFEFFTFTT

TETEE

)(

aaaFaaFFaFTaTaTFTTTEE

E

E T

T F

F

a

T

F

a

a

aaa

Page 44: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

44

E

E T

T F

F

a

T

F

a

a

aaa

Única árvore de derivação

Page 45: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

45

A gramática :

aFEFFTFTT

TETEE

)(

não é ambígua:Todo string temuma única árvore de derivação

G

)(GLw

Page 46: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

46

Ambiguidade Inerente

Algumas linguagens livres de contextopossuem apenas gramáticas ambíguas

Exemplo: }{}{ mmnmnn cbacbaL

21 | SSS

||11

aAbAAcSS

||22

bBcBBaSS

Page 47: 1 Linguagens Livres de Contexto. 2 Linguagens Regulares

47

O string nnn cba

possui duas árvores de derivação

S

1S

S

2S

1S c 2Sa