Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

57
Lemas (Sudkamp) 1

Transcript of Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Page 1: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Lemas (Sudkamp)

1

Page 2: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação da Recursão sobre S (exemplo)

S → SaS → aS

2

Page 3: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação da Recursão sobre S (exemplo)

S’ → SS → SaS → aS

Acrescenta-se uma nova produção.Agora S’ é o símbolo inicial.

3

Page 4: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação Regras – ε

1. Determinar o conjunto de variáveis anuláveis.

2. Adição de regras em que ocorrências de variáveis são omitidas.

3. Deleção das regras- ε.

A → εB → AC → AB

(A, B e C são anuláveis)

4

Page 5: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Determinar o conjunto de variáveis anuláveis

5

Page 6: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação Regras – ε

• Para cada regra A → ww= w1A1w2A2... wrAxwr+1

Se A1...AX forem anuláveis (todas as possibilidades) acrescentar a regra:

A → w1w2... wrwr+1

• Remover todas regras – ε menos S → ε

6

Page 7: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação Regras – ε (exemplo 1)

S → ACAA → aAa|B|CB → bB|bC → cC|ε

7

Page 8: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação Regras – ε (exemplo 1)

S → ACAA → aAa|B|CB → bB|bC → cC|ε

Variáveis Anuláveis: NULL={C...

8

Page 9: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação Regras – ε (exemplo 1)

S → ACAA → aAa|B|CB → bB|bC → cC|ε

Variáveis Anuláveis: NULL={C, A...

9

Page 10: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação Regras – ε (exemplo 1)

S → ACAA → aAa|B|CB → bB|bC → cC|ε

Variáveis Anuláveis: NULL={C, A, S}.

10

Page 11: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação Regras – ε (exemplo 1)

S → ACA|ACA|ACA|ACA|ACA|ACA|ACAε A → aAa|B|C|aAa|CεB → bB|bC → cC|ε|cC

Adição de regras em que a ocorrência de variáveis anuláveis são reduzidas...

11

Page 12: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação Regras – ε (exemplo 1)

S → ACA|CA|AA|AC|A|C|ε A → aAa|B|C|aa|εB → bB|bC → cC|ε|c

12

Page 13: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação Regras – ε (exemplo 1)

S → ACA|CA|AA|AC|A|C|ε A → aAa|B|C|aa|εB → bB|bC → cC|ε|c

Deleção das regras ε, menos S → ε

13

Page 14: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação Regras – ε (exemplo 1)

S → ACA|CA|AA|AC|A|C|ε A → aAa|B|C|aaB → bB|bC → cC|c

Resultado

14

Page 15: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação Regras – ε (exemplo 2)

S → ABCA → aA|εB → bB|εC → cC|ε

15

Page 16: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação Regras – ε (exemplo 2)

S → ABCA → aA|εB → bB|εC → cC|ε

Variáveis Anuláveis: NULL={A,B,C,S}.

16

Page 17: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação Regras – ε (exemplo 2)

S → ABC|ABC|ABC|ABC|ABC|ABC|ABC|ABCεA → aA|ε|aAB → bB|ε|bBC → cC|ε|cC

Adição de regras em que a ocorrência de variáveis anuláveis são reduzidas

17

Page 18: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação Regras – ε (exemplo 2)

S → ABC|BC|AC|AB|A|B|C|εA → aA|ε|aB → bB|ε|bC → cC|ε|c

18

Page 19: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação Regras – ε (exemplo 2)

S → ABC|BC|AC|AB|A|B|C|εA → aA|ε|aB → bB|ε|bC → cC|ε|c

Deleção das regras ε, menos S → ε

19

Page 20: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação Regras – ε (exemplo 2)

S → ABC|BC|AC|AB|A|B|C|εA → aA|aB → bB|bC → cC|c

Resultado

20

Page 21: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Regra Unitária

A → B (renomear uma variável)

– Adicionar A → w para cada B → w– Remover A → B

21

Page 22: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Regra Unitária em Cadeia

22

Page 23: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação de Regras em cadeia (exemplo 1)

A → aA|a|BB → bB|b|c

CHAIN(A) = {A,B}CHAIN(B) = {B}

23

Page 24: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação de Regras em cadeia (exemplo 1)

A → aA|a|B|bB|b|cB → bB|b|c

Adiciona A → w para cada regra B → wRemover A → B

24

Page 25: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação de Regras em cadeia (exemplo 1)

A → aA|a|bB|b|cB → bB|b|c

Resultado

25

Page 26: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação de Regras em cadeia (exemplo 2)

26

S → ACA|CA|AA|AC|A|C|εA → aAa|B|C|aaB → bB|bC → cC|c

CHAIN(C)={C} CHAIN(B)={B}CHAIN(A)={A,B,C} CHAIN(S)={S,A,B,C}

Page 27: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação de Regras em cadeia (exemplo 2)

27

S → ACA|CA|AA|AC|A|C|ε|aAa|aa|bB|b|cC|cA → aAa|B|C|aa|bB|b|cC|cB → bB|bC → cC|c

CHAIN(C)={C} CHAIN(B)={B}CHAIN(A)={A,B,C} CHAIN(S)={S,A,B,C}

Page 28: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação de Regras em cadeia (exemplo 2)

28

S → ACA|CA|AA|AC|ε|aAa|aa|bB|b|cC|cA → aAa|aa|bB|b|cC|cB → bB|bC → cC|c

Resultado

Page 29: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Remoção de Símbolos Inúteis

• Um símbolo é útil se produz uma sentença (só terminal) e pode ser gerado a partir da variável inicial.

• Variáveis que geram terminais:1. A com regra A → w onde w só tem terminais.2. A com regra A → w onde w só tem terminais e/ou

geradores de sentenças

• Remover as produções com variáveis que não geram sentenças.

29

Page 30: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Remoção de Símbolos Inúteis

• Variáveis alcançáveis a partir de S1. S é alcançável.2. A, tal que tenha regra C → uAv e C é alcançável.

• Remover todas as produções com símbolos não alcançáveis.

30

Page 31: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação de Símbolos Inúteis (exemplo)

S → aA|Bb|CXY →DeA →DBB →DDD →dX →CDC →cX

31

Page 32: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação de Símbolos Inúteis (exemplo)

S → aA|Bb|CXY →DeA →DBB →DDD →dX →CDC →cX

Variáveis geradoras de Sentenças: D,...

32

Page 33: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação de Símbolos Inúteis (exemplo)

S → aA|Bb|CXY →DeA →DBB →DDD →dX →CDC →cX

Variáveis geradoras de Sentenças: D, Y, B...

33

Page 34: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação de Símbolos Inúteis (exemplo)

S → aA|Bb|CXY →DeA →DBB →DDD →dX →CDC →cX

Variáveis geradoras de Sentenças: D, Y, B, A e S.

34

Page 35: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação de Símbolos Inúteis (exemplo)

S → aA|Bb|CXY →DeA →DBB →DDD →dX →CDC →cX

Remover produções com variáveis que não geram terminais.

35

Page 36: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação de Símbolos Inúteis (exemplo)

S → aA|BbY →DeA →DBB →DDD →d

Alcançáveis a partir de S:S, A, B...

36

Page 37: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação de Símbolos Inúteis (exemplo)

S → aA|BbY →DeA →DBB →DDD →d

Alcançáveis a partir de S:S, A, B e D.

37

Page 38: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação de Símbolos Inúteis (exemplo)

S → aA|BbY →DeA →DBB →DDD →d

Remover produções não alcançáveis.

38

Page 39: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Eliminação de Símbolos Inúteis (exemplo)

S → aA|BbA →DBB →DDD →d

Resultado

39

Page 40: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Formas Normais

Forma de ChomskyA → εA → aA → BC

Forma de GreibachA → εA → aA → aBCDF...

40

Page 41: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Forma de Chomsky (exemplo)

A → bDcF

41

Page 42: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Forma de Chomsky (exemplo)

A → B’DC’FB’ → bC’ → c

Criar variáveis para os terminais

42

Page 43: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Forma de Chomsky (exemplo)

A → B’T1

B’ → bC’ → cT1 →DC’F

Transformar em dicotomias...

43

Page 44: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Forma de Chomsky (exemplo)

A → B’T1

B’ → bC’ → cT1 →DT2

T2 →C’F

Resultado

44

Page 45: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Remoção da recursão a esquerda Direta

A → Aa|b

A → bZ|bZ → aZ|a

45

Page 46: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Remoção da recursão a esquerda Direta (exemplo)

A → Aaaa |Abbb |Accc

A → xxx |yyy |zzz

46

Page 47: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Remoção da recursão a esquerda Direta (exemplo)

A → Aaaa |Abbb |AcccZ → Aaaa |Abbb |AcccZ → AaaaZ|AbbbZ|AcccZA → xxx |yyy |zzz A → xxxZ|yyyZ|zzzZ

47

Page 48: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Remoção da recursão a esquerda Direta (exemplo)

Z → aaa | bbb | cccZ → aaaZ| bbbZ|cccZA → xxx |yyy |zzz A → xxxZ|yyyZ|zzzZ

Resultado

48

Page 49: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Remoção da recursão a esquerda Direta (exemplo)

(antes)A → Aaaa |Abbb |Accc |xxx |yyy |zzz

(depois)Z → aaa|bbb|ccc|aaaZ|bbbZ|cccZA → xxx|yyy|zzz|xxxZ|yyyZ|zzzZ

49

Page 50: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Remoção da recursão a esquerda indireta (exemplo)

A → a|BbB →bb|CxC →x|Aaa

Atribui-se números as variáveis:#A=1 #B=2 #C=3 (ordem alfabética)

50

Page 51: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Remoção da recursão a esquerda indireta (exemplo)

A → a|BbB →bb|CxC →x|Aaa

Identificar produções V2 →V1 onde #V2 >= #V1

51

Page 52: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Remoção da recursão a esquerda indireta (exemplo)

A → a|BbB →bb|CxC →x|Aaa|aaa|Bbaa

Usar lema 413

52

Page 53: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Remoção da recursão a esquerda indireta (exemplo)

A → a|BbB →bb|CxC →x|Aaa|aaa|Bbaa

53

Page 54: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Remoção da recursão a esquerda indireta (exemplo)

A → a|BbB →bb|CxC →x|Aaa|aaa|Bbaa|bbbaa|Cxbaa

54

Page 55: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Remoção da recursão a esquerda indireta (exemplo)

A → a|BbB →bb|CxC →x|Aaa|aaa|Bbaa|bbbaa|Cxbaa

Recursão a esquerda direta

55

Page 56: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Remoção da recursão a esquerda indireta (exemplo)

A → a|BbB →bb|CxC →x|Aaa|aaa|Bbaa|bbbaa|Cxbaa|xZ|aaaZ |bbbaaZZ →xbaa|xbaaZ

56

Page 57: Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.

Remoção da recursão a esquerda indireta (exemplo)

A → a|BbB →bb|CxC →x|aaa|bbbaa|xZ|aaaZ|bbbaaZZ →xbaa|xbaaZ

Resultado

57