Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.
Transcript of Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S Sa S aS 2.
Lemas (Sudkamp)
•
1
Eliminação da Recursão sobre S (exemplo)
S → SaS → 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
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
Determinar o conjunto de variáveis anuláveis
•
5
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
Eliminação Regras – ε (exemplo 1)
S → ACAA → aAa|B|CB → bB|bC → cC|ε
7
Eliminação Regras – ε (exemplo 1)
S → ACAA → aAa|B|CB → bB|bC → cC|ε
Variáveis Anuláveis: NULL={C...
8
Eliminação Regras – ε (exemplo 1)
S → ACAA → aAa|B|CB → bB|bC → cC|ε
Variáveis Anuláveis: NULL={C, A...
9
Eliminação Regras – ε (exemplo 1)
S → ACAA → aAa|B|CB → bB|bC → cC|ε
Variáveis Anuláveis: NULL={C, A, S}.
10
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
Eliminação Regras – ε (exemplo 1)
S → ACA|CA|AA|AC|A|C|ε A → aAa|B|C|aa|εB → bB|bC → cC|ε|c
12
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
Eliminação Regras – ε (exemplo 1)
S → ACA|CA|AA|AC|A|C|ε A → aAa|B|C|aaB → bB|bC → cC|c
Resultado
14
Eliminação Regras – ε (exemplo 2)
S → ABCA → aA|εB → bB|εC → cC|ε
15
Eliminação Regras – ε (exemplo 2)
S → ABCA → aA|εB → bB|εC → cC|ε
Variáveis Anuláveis: NULL={A,B,C,S}.
16
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
Eliminação Regras – ε (exemplo 2)
S → ABC|BC|AC|AB|A|B|C|εA → aA|ε|aB → bB|ε|bC → cC|ε|c
18
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
Eliminação Regras – ε (exemplo 2)
S → ABC|BC|AC|AB|A|B|C|εA → aA|aB → bB|bC → cC|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 → aA|a|BB → bB|b|c
CHAIN(A) = {A,B}CHAIN(B) = {B}
23
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
Eliminação de Regras em cadeia (exemplo 1)
A → aA|a|bB|b|cB → bB|b|c
Resultado
25
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}
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}
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
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 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
Eliminação de Símbolos Inúteis (exemplo)
S → aA|Bb|CXY →DeA →DBB →DDD →dX →CDC →cX
31
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
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
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
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
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
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
Eliminação de Símbolos Inúteis (exemplo)
S → aA|BbY →DeA →DBB →DDD →d
Remover produções não alcançáveis.
38
Eliminação de Símbolos Inúteis (exemplo)
S → aA|BbA →DBB →DDD →d
Resultado
39
Formas Normais
Forma de ChomskyA → εA → aA → BC
Forma de GreibachA → εA → aA → aBCDF...
40
Forma de Chomsky (exemplo)
A → bDcF
41
Forma de Chomsky (exemplo)
A → B’DC’FB’ → bC’ → c
Criar variáveis para os terminais
42
Forma de Chomsky (exemplo)
A → B’T1
B’ → bC’ → cT1 →DC’F
Transformar em dicotomias...
43
Forma de Chomsky (exemplo)
A → B’T1
B’ → bC’ → cT1 →DT2
T2 →C’F
Resultado
44
Remoção da recursão a esquerda Direta
A → Aa|b
A → bZ|bZ → aZ|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 |AcccZ → Aaaa |Abbb |AcccZ → AaaaZ|AbbbZ|AcccZA → xxx |yyy |zzz A → xxxZ|yyyZ|zzzZ
47
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
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
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
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
Remoção da recursão a esquerda indireta (exemplo)
A → a|BbB →bb|CxC →x|Aaa|aaa|Bbaa
Usar lema 413
52
Remoção da recursão a esquerda indireta (exemplo)
A → a|BbB →bb|CxC →x|Aaa|aaa|Bbaa
53
Remoção da recursão a esquerda indireta (exemplo)
A → a|BbB →bb|CxC →x|Aaa|aaa|Bbaa|bbbaa|Cxbaa
54
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
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
Remoção da recursão a esquerda indireta (exemplo)
A → a|BbB →bb|CxC →x|aaa|bbbaa|xZ|aaaZ|bbbaaZZ →xbaa|xbaaZ
Resultado
57