1 Linguagens Livres de Contexto. 2 Linguagens Regulares

Preview:

Citation preview

1

Linguagens Livres de Contexto

2

Linguagens Regulares

}{ nnba }{ Rww

3

Linguagens Regulares

}{ nnba }{ Rww

Linguagens Livres de Contexto

4

Linguagens Livres de Contexto

Autômatosde Pilha

GramáticasLivres de Contexto

pilha

autômato

5

Gramáticas Livres de Contexto

6

Exemplo Uma gramática livre de contexto :

SaSbS

aabbaaSbbaSbS

G

Uma derivação:

7

SaSbS

aaabbbaaaSbbbaaSbbaSbS

G

Outra derivação:

Uma gramática livre de contexto :

8

SaSbS

)(GL

(((( ))))

}0:{ nba nn

9

SbSbSaSaS

abbaabSbaaSaS

Uma gramática livre de contexto :G

Uma derivação:

Exemplo

10

SbSbSaSaS

abaabaabaSabaabSbaaSaS

Outra derivação:

Uma gramática livre de contexto :G

11

SbSbSaSaS

)(GL }*},{:{ bawwwR

12

SSSSaSbS

ababSaSbSSSS

Uma derivação:

Exemplo

Uma gramática livre de contexto :G

13

SSSSaSbS

abababaSbabSaSbSSSS

Uma derivação:

Uma gramática livre de contexto :G

14

SSSSaSbS

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

)(GL

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

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

17

Ordem de Derivação ABS .1

AaaAA

.3

.2

B

BbB.5.4

aabaaBbaaBaaABABS54321

derivação mais à esquerda :

aabaaAbAbABbABS32541

derivação mais à direita:

18

|ABbBbAaABS

derivação mais à esquerda:

abbbbabbbbBabbBbbBabAbBabBbBaABS

derivação mais à direita:

abbbbabbBbbabAbabBbaAaABS

19

Árvores de Derivação

20

ABS

ABS |aaAA |BbB

S

BA

21

ABS |aaAA |BbB

aaABABS

a a A

S

BA

22

ABS |aaAA |BbB

aaABbaaABABS S

BA

a a A B b

23

ABS |aaAA |BbB

aaBbaaABbaaABABS S

BA

a a A B b

24

ABS |aaAA |BbB

aabaaBbaaABbaaABABS S

BA

a a A B b

Árvore de derivação

25

aabaaBbaaABbaaABABS

resultado

aabbaa

S

BA

a a A B b

ABS |aaAA |BbB

Árvore de derivação

26

Partial Derivation Trees

S

BA

Árvore de derivação parcial

ABS |aaAA |BbB

27

aaABABS

S

BA

a a A

Árvore de derivação parcial

28

aaABABS

S

BA

a a A

formasentencial

resultaaaAB

Árvore de derivação parcial

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:

30

Ambiguidade

31

aEEEEEE |)(|| aaa

E

EE

EE

a

a a

aaaEaaEEaEaEEE*

derivação mais à esquerda

32

aEEEEEE |)(|| aaa

E

EE

a a

EE a

aaaEaaEEaEEEEEE

derivação mais à esquerda

33

aEEEEEE |)(|| aaa

E

EE

a a

EE a

E

EE

EE

a

a a

Duas árvores de derivação

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

35

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

é ambígua

se algum string

tem duas ou mais árvores de derivação

G

)(GLw

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

37

Porque ambiguidade importa?

E

EE

a a

EE a

E

EE

EE

a

a a

aaa

tome 2a

38

E

EE

EE

E

EE

EE

222

2

2 2 2 2

2

39

E

EE

EE

E

EE

EE

6222

2

2 2 2 2

2

8222

4

2 2

2

6

2 2

24

8

40

E

EE

EE

6222

2

2 2

4

2 2

2

6

Resultado correto:

41

• Gostaríamos de remover ambiguidade

• Ambiguidade é ruim para linguagens de

programação

42

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

Nova gramática não ambígua:

aFEFFTFTT

TETEE

)(

43

aFEFFTFTT

TETEE

)(

aaaFaaFFaFTaTaTFTTTEE

E

E T

T F

F

a

T

F

a

a

aaa

44

E

E T

T F

F

a

T

F

a

a

aaa

Única árvore de derivação

45

A gramática :

aFEFFTFTT

TETEE

)(

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

G

)(GLw

46

Ambiguidade Inerente

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

Exemplo: }{}{ mmnmnn cbacbaL

21 | SSS

||11

aAbAAcSS

||22

bBcBBaSS

47

O string nnn cba

possui duas árvores de derivação

S

1S

S

2S

1S c 2Sa

Recommended