Lemas Sudkamp 1 Eliminao da Recurso sobre S
Lemas (Sudkamp) • 1
Eliminação da Recursão sobre S (exemplo) S → Sa S → a. S 2
Eliminação da Recursão sobre S (exemplo) S’ → S S → Sa S → a. S Acrescenta-se uma nova produção. Agora S’ é o símbolo inicial. 3
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→A C → AB (A, B e C são anuláveis) 4
Determinar o conjunto de variáveis anuláveis • 5
Eliminação Regras – ε • Para cada regra A → w w= w 1 A 1 w 2 A 2. . . wr. Axwr+1 Se A 1. . . AX forem anuláveis (todas as possibilidades) acrescentar a regra: A → w 1 w 2. . . wrwr+1 • Remover todas regras – ε menos S → ε 6
Eliminação Regras – ε (exemplo 1) S → ACA A → a. Aa|B|C B → b. B|b C → c. C|ε 7
Eliminação Regras – ε (exemplo 1) S → ACA A → a. Aa|B|C B → b. B|b C → c. C|ε Variáveis Anuláveis: NULL={C. . . 8
Eliminação Regras – ε (exemplo 1) S → ACA A → a. Aa|B|C B → b. B|b C → c. C|ε Variáveis Anuláveis: NULL={C, A. . . 9
Eliminação Regras – ε (exemplo 1) S → ACA A → a. Aa|B|C B → b. B|b C → c. C|ε Variáveis Anuláveis: NULL={C, A, S}. 10
Eliminação Regras – ε (exemplo 1) S → ACA|ACA|ACA| AC ACA|ACAε ACA A → a. Aa|B|C|a. Aa|Cε B → b. B|b C → c. C|ε|c. C Adição de regras em que a ocorrência de variáveis anuláveis são reduzidas. . . 11
Eliminação Regras – ε (exemplo 1) S → ACA|CA|AA|AC|A|C|ε A → a. Aa|B|C|aa|ε B → b. B|b C → c. C|ε|c 12
Eliminação Regras – ε (exemplo 1) S → ACA|CA|AA|AC|A|C|ε A → a. Aa|B|C|aa|ε B → b. B|b C → c. C|ε|c Deleção das regras ε, menos S → ε 13
Eliminação Regras – ε (exemplo 1) S → ACA|CA|AA|AC|A|C|ε A → a. Aa|B|C|aa B → b. B|b C → c. C|c Resultado 14
Eliminação Regras – ε (exemplo 2) S → ABC A → a. A|ε B → b. B|ε C → c. C|ε 15
Eliminação Regras – ε (exemplo 2) S → ABC A → a. A|ε B → b. B|ε C → c. C|ε Variáveis Anuláveis: NULL={A, B, C, S}. 16
Eliminação Regras – ε (exemplo 2) S → ABC|ABC|ABC| BC ABC| AB ABCε ABC A → a. A|ε|a. A B → b. B|ε|b. B C → c. C|ε|c. C Adição de regras em que a ocorrência de variáveis anuláveis são reduzidas 17
Eliminação Regras – ε (exemplo 2) S → ABC|BC|AC|AB|A|B|C|ε A → a. A|ε|a B → b. B|ε|b C → c. C|ε|c 18
Eliminação Regras – ε (exemplo 2) S → ABC|BC|AC|AB|A|B|C|ε A → a. A|ε|a B → b. B|ε|b C → c. C|ε|c Deleção das regras ε, menos S → ε 19
Eliminação Regras – ε (exemplo 2) S → ABC|BC|AC|AB|A|B|C|ε A → a. A|a B → b. B|b C → c. C|c Resultado 20
Regra Unitária A → B (renomear uma variável) – Adicionar A → w para cada B → w – Remover A → B 21
Regra Unitária em Cadeia • 22
Eliminação de Regras em cadeia (exemplo 1) A → a. A|a|B B → b. B|b|c CHAIN(A) = {A, B} CHAIN(B) = {B} 23
Eliminação de Regras em cadeia (exemplo 1) A → a. A|a|B|b. B|b|c |B B → b. B|b|c Adiciona A → w para cada regra B → w Remover A → B 24
Eliminação de Regras em cadeia (exemplo 1) A → a. A|a|b. B|b|c B → b. B|b|c Resultado 25
Eliminação de Regras em cadeia (exemplo 2) S → ACA|CA|AA|AC|A|C|ε A → a. Aa|B|C|aa B → b. B|b C → c. C|c CHAIN(C)={C} CHAIN(A)={A, B, C} CHAIN(B)={B} CHAIN(S)={S, A, B, C} 26
Eliminação de Regras em cadeia (exemplo 2) S → ACA|CA|AA|AC|A|C|ε|a. Aa|aa|b. B|b|c. C|c |A|C A → a. Aa|B|C|aa|b. B|b|c. C|c |B|C B → b. B|b C → c. C|c CHAIN(C)={C} CHAIN(A)={A, B, C} CHAIN(B)={B} CHAIN(S)={S, A, B, C} 27
Eliminação de Regras em cadeia (exemplo 2) S → ACA|CA|AA|AC|ε|a. Aa|aa|b. B|b|c. C|c A → a. Aa|aa|b. B|b|c. C|c B → b. B|b C → c. C|c Resultado 28
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
Remoção de Símbolos Inúteis • Variáveis alcançáveis a partir de S 1. S é alcançável. 2. A, tal que tenha regra C → u. Av e C é alcançável. • Remover todas as produções com símbolos não alcançáveis. 30
Eliminação de Símbolos Inúteis (exemplo) S → a. A|Bb|CX Y →De A →DB B →DD D →d X →CD C →c. X 31
Eliminação de Símbolos Inúteis (exemplo) S → a. A|Bb|CX Y →De A →DB B →DD D →d X →CD C →c. X Variáveis geradoras de Sentenças: D, . . . 32
Eliminação de Símbolos Inúteis (exemplo) S → a. A|Bb|CX Y →De A →DB B →DD D →d X →CD C →c. X Variáveis geradoras de Sentenças: D, Y, B. . . 33
Eliminação de Símbolos Inúteis (exemplo) S → a. A|Bb|CX Y →De A →DB B →DD D →d X →CD C →c. X Variáveis geradoras de Sentenças: D, Y, B, A e S. 34
Eliminação de Símbolos Inúteis (exemplo) S → a. A|Bb|CX Y →De A →DB B →DD D →d X →CD C →c. X Remover produções com variáveis que não geram terminais. 35
Eliminação de Símbolos Inúteis (exemplo) S → a. A|Bb Y →De A →DB B →DD D →d Alcançáveis a partir de S: S, A, B. . . 36
Eliminação de Símbolos Inúteis (exemplo) S → a. A|Bb Y →De A →DB B →DD D →d Alcançáveis a partir de S: S, A, B e D. 37
Eliminação de Símbolos Inúteis (exemplo) S → a. A|Bb Y →De A →DB B →DD D →d Remover produções não alcançáveis. 38
Eliminação de Símbolos Inúteis (exemplo) S → a. A|Bb A →DB B →DD D →d Resultado 39
Formas Normais Forma de Chomsky A→ε A→a A → BC Forma de Greibach A→ε A→a A → a. BCDF. . . 40
Forma de Chomsky (exemplo) A → b. Dc. F 41
Forma de Chomsky (exemplo) A → B’DC’F B’ → b C’ → c Criar variáveis para os terminais 42
Forma de Chomsky (exemplo) A → B’T 1 B’ → b C’ → c T 1 →DC’F Transformar em dicotomias. . . 43
Forma de Chomsky (exemplo) A → B’T 1 B’ → b C’ → c T 1 →DT 2 →C’F Resultado 44
Remoção da recursão a esquerda Direta A → Aa|b A → b. Z|b Z → a. Z|a 45
Remoção da recursão a esquerda Direta (exemplo) A → Aaaa |Abbb |Accc A → xxx |yyy |zzz 46
Remoção da recursão a esquerda Direta (exemplo) A → Aaaa |Abbb |Accc Z → Aaaa |Abbb |Accc A Z → Aaaa. Z|Abbb. Z|Accc. Z A → xxx |yyy |zzz A → xxx. Z|yyy. Z|zzz. Z 47
Remoção da recursão a esquerda Direta (exemplo) Z → aaa | bbb | ccc Z → aaa. Z| bbb. Z|ccc. Z A → xxx |yyy |zzz A → xxx. Z|yyy. Z|zzz. Z Resultado 48
Remoção da recursão a esquerda Direta (exemplo) (antes) A → Aaaa |Abbb |Accc |xxx |yyy |zzz (depois) Z → aaa|bbb|ccc|aaa. Z|bbb. Z|ccc. Z A → xxx|yyy|zzz|xxx. Z|yyy. Z|zzz. Z 49
Remoção da recursão a esquerda indireta (exemplo) A → a|Bb B →bb|Cx C →x|Aaa Atribui-se números as variáveis: #A=1 #B=2 #C=3 (ordem alfabética) 50
Remoção da recursão a esquerda indireta (exemplo) A → a|Bb B →bb|Cx C →x|Aaa Identificar produções V 2 →V 1 onde #V 2 >= #V 1 51
Remoção da recursão a esquerda indireta (exemplo) A → a|Bb B →bb|Cx C →x|Aaa|aaa|Bbaa |Aaa Usar lema 413 52
Remoção da recursão a esquerda indireta (exemplo) A → a|Bb B →bb|Cx C →x|Aaa|aaa|Bbaa |Aaa 53
Remoção da recursão a esquerda indireta (exemplo) A → a|Bb B →bb|Cx C →x|Aaa|aaa |Bbaa|bbbaa|Cxbaa |Aaa Bbaa 54
Remoção da recursão a esquerda indireta (exemplo) A → a|Bb B →bb|Cx C →x|Aaa|aaa |Bbaa|bbbaa|Cxbaa |Aaa |Bbaa Recursão a esquerda direta 55
Remoção da recursão a esquerda indireta (exemplo) A → a|Bb B →bb|Cx C →x|Aaa|aaa |Bbaa|bbbaa |Cxbaa|x. Z|aaa. Z |Aaa |Bbaa |Cxbaa |bbbaa. Z Z →xbaa|xbaa. Z 56
Remoção da recursão a esquerda indireta (exemplo) A → a|Bb B →bb|Cx C →x|aaa|bbbaa|x. Z|aaa. Z|bbbaa. Z Z →xbaa|xbaa. Z Resultado 57
- Slides: 57