2. 2
Copyright c 2005 Carlos A. P. Campani.
´
E garantida a permiss˜o para copiar, distribuir e/ou
a
modificar este documento sob os termos da Licen¸a de
c
Documenta¸ao Livre GNU (GNU Free Documentation
c˜
License), Vers˜o 1.2 ou qualquer vers˜o posterior
a a
publicada pela Free Software Foundation; sem Se¸oes
c˜
Invariantes, Textos de Capa Frontal, e sem Textos de
Quarta Capa. Uma c´pia da licen¸a ´ inclu´ na se¸ao
o c e ıda c˜
intitulada “GNU Free Documentation License”.
veja: http://www.ic.unicamp.br/~norton/fdl.html.
3. 3
Objetivos
• Formalizar o conceito de linguagem;
• Apresentar uma classifica¸ao de linguagens baseada
c˜
nesta formaliza¸ao;
c˜
• Fornecer ferramentas para implementar compiladores;
• Relacionar a hierarquia de linguagens com o conceito
de computabilidade.
4. 4
S´ mula da Disciplina
u
1. Introdu¸ao ` Teoria de Linguagens Formais;
c˜ a
• Alfabetos, Senten¸as e Linguagens;
c
• Gram´ticas e Reconhecedores;
a
• Tipos de Gram´ticas/Linguagens (Hierarquia de
a
Chomsky);
5. 5
2. Gram´ticas Regulares e Autˆmatos Finitos;
a o
• Defini¸ao de Gram´tica Regular (GR);
c˜ a
• Defini¸ao de Autˆmato Finito;
c˜ o
• Autˆmato Finito N˜o-Determin´
o a ıstico;
• Rela¸ao entre Autˆmato Finito e GR;
c˜ o
• Minimiza¸ao de Autˆmato Finito;
c˜ o
• Express˜es Regulares;
o
• Bombeamento para Linguagens Regulares;
• M´quinas de Moore e Mealy;
a
6. 6
3. Gram´ticas Livres de Contexto e Autˆmatos de
a o
Pilha;
• Defini¸ao de GLC;
c˜
´
• Arvores de Deriva¸ao e Ambig¨idade;
c˜ u
• Transforma¸oes em GLC: Elimina¸˜o de S´
c˜ ca ımbolos
In´teis; Transforma¸ao em uma GLC ε-Livre;
u c˜
Remo¸ao de Produ¸oes Simples; Fatora¸˜o;
c˜ c˜ ca
Elimina¸ao de Recurs˜o ` Esquerda;
c˜ a a
• Formas Canˆnicas: Forma Normal de Chomsky;
o
Forma Normal de Greibach;
• Autˆmatos de Pilha (PDA);
o
• Rela¸ao entre PDA e GLC;
c˜
7. 7
4. Reconhecedor – Algoritmo CYK;
5. Linguagens Tipo 0 e M´quinas de Turing;
a
6. Linguagens Sens´
ıveis ao Contexto e Autˆmatos de
o
Fita Limitada;
7. Hierarquia de Chomsky (revisitada).
8. 8
Bibliografia
• Introduction to Automata Theory, Languages, and
Computation, Hopcroft e Ullman;
• Linguagens Formais e Autˆmatos, Paulo Blauth
o
Menezes.
10. 1 ¸˜
INTRODUCAO 10
1 Introdu¸˜o
ca
• Uma linguagem ´ um meio de comunica¸˜o utilizado
e ca
por elementos de uma determinada comunidade.
Formada por:
– Conjunto de palavras;
– Conjunto de regras gramaticais;
• Uma linguagem ´ formal quando pode ser
e
representada atrav´s de um sistema com sustenta¸˜o
e ca
matem´tica. Formada por:
a
– Sintaxe (estrutura) – foco da nossa disciplina;
– Semˆntica (significado) – n˜o interessa para n´s.
a a o
11. 1 ¸˜
INTRODUCAO 11
• Alfabeto (ou vocabul´rio) ´ um conjunto finito de
a e
s´
ımbolos. Ex: d´ıgitos, letras, etc.
{a, b, c, . . . , z}
{0, 1}
• Senten¸a (ou palavra, ou string) sobre um alfabeto ´
c e
qualquer seq¨ˆncia finita de s´
ue ımbolos do alfabeto.
Ex: Seja o alfabeto V = {0, 1}, s˜o senten¸as v´lidas
a c a
001, 1010, etc.
• O tamanho (ou comprimento) de uma senten¸a ´c e
dado pelo n´mero de s´
u ımbolos que a comp˜e. Ex:
o
V = {a, b, c}, senten¸a w = ab, tamanho |w| = 2;
c
12. 1 ¸˜
INTRODUCAO 12
• A senten¸a que n˜o cont´m s´
c a e ımbolos (tamanho zero)
´ chamada de senten¸a vazia, sendo denotada por ε
e c
(|ε| = 0);
• Seja V um alfabeto. Representamos por:
– V ∗ – conjunto de todas as senten¸as compostas de
c
s´
ımbolos de V incluindo a senten¸a vazia;
c
– V + = V ∗ − {ε};
Exemplo: V = {0, 1},
V ∗ = {ε, 0, 1, 00, 01, 10, 11, 000, 001, 010, . . .},
V + = {0, 1, 00, 01, 10, 11, 000, 001, 010, . . .}.
13. 1 ¸˜
INTRODUCAO 13
Linguagem ´ qualquer conjunto de senten¸as sobre um
e c
alfabeto.
ou
Uma linguagem L sobre um alfabeto V ´ tal que L ⊆ V ∗ .
e
14. 1 ¸˜
INTRODUCAO 14
• Tipos de linguagens: finitas, vazias e infinitas;
• Representa¸ao:
c˜
– Listando as palavras (s´ finita);
o
– Descri¸ao alg´brica. Ex: {an bn cn |n ≥ 1}.
c˜ e
Nota¸ao:
c˜
n vezes
aaa · · · a = an ;
– Definindo um algoritmo que determina (sim ou
n˜o) se uma senten¸a pertence a uma linguagem
a c
(Reconhecimento). Ex: autˆmato finito;
o
– Definindo um mecanismo que gera todas as
senten¸as da linguagem em alguma ordem
c
(Gera¸˜o). Ex: gram´tica.
ca a
15. 1 ¸˜
INTRODUCAO 15
• Uma gram´tica serve para definir qual o subconjunto
a
de senten¸as que faz parte de uma determinada
c
linguagem. Ela ´ um dispositivo formal para
e
especificar uma linguagem potencialmente infinita de
uma forma finita;
16. 1 ¸˜
INTRODUCAO 16
• Nota¸˜o Formal de Gram´tica
ca a
Uma gram´tica G ´ definida por uma qu´drupla
a e a
G = (N, T, P, S)
onde:
N conjunto finito de n˜o-terminais;
a
T conjunto finito de terminais;
P conjunto finito de regras de produ¸ao;
c˜
S s´
ımbolo inicial da gram´tica.
a
Observa¸oes: N T = ∅, V = N
c˜ T, S ∈ N,
P = {α → β|α ∈ V + ∧ β ∈ V ∗ }.
17. 1 ¸˜
INTRODUCAO 17
Exemplo: gera n´meros inteiros
u
G = (N, T, P, I)
N = {I, D}
T = {0, 1, 2, . . . , 9}
P = {I → D, I → DI, D → 0, D → 1, . . . , D → 9}
ou
P : I → D|DI, D → 0|1|2| · · · |9
Exerc´ıcio: Reescrever tentando evitar n´meros tipo
u
0015.
18. 1 ¸˜
INTRODUCAO 18
• Conven¸oes:
c˜
S´
ımbolos n˜o-terminais N = {A, B, C, . . . T };
a
S´
ımbolos terminais T = {a, b, c, . . . t};
S´
ımbolo terminal ou n˜o-terminal
a
N T = {U, V, . . . Z};
Seq¨ˆncias de terminais T ∗ = {u, v, . . . z};
ue
Seq¨ˆncias de n˜o-terminais e terminais
ue a
(N T )∗ = {α, β, γ, . . .}.
19. 1 ¸˜
INTRODUCAO 19
• Deriva¸˜o (⇒) ´ uma opera¸ao de substitui¸ao
ca e c˜ c˜
efetuada de acordo com as regras de produ¸˜o da
ca
gram´tica.
a
Formalmente: γαδ ⇒ γβδ se α → β ∈ P e γ, δ ∈ V ∗ .
Exemplo: G = ({S, A, B}, {0, 1}, {S → AB, A →
0|AB, B → 1|1B}, S), e
S ⇒ AB ⇒ ABB ⇒ 0BB ⇒ 01B ⇒ 011B .
20. 1 ¸˜
INTRODUCAO 20
• Uma seq¨ˆncia de deriva¸oes com zero ou mais
ue c˜
passos (⇒∗ ):
Formalmente: α1 ⇒∗ αm se
α1 ⇒ α2 , α2 ⇒ α3 , . . . , αm−1 ⇒ αm ,
α1 , α2 , . . . , αm ∈ V ∗ .
• Garantindo pelo menos uma substitui¸ao (⇒+ ):
c˜
Formalmente: α1 ⇒+ αm se α1 ⇒ α2 , α2 ⇒∗ αm ,
α1 , α2 , . . . , αm ∈ V ∗ .
21. 1 ¸˜
INTRODUCAO 21
• Uma senten¸a de uma linguagem ´ uma seq¨ˆncia
c e ue
formada por terminais, obtida a partir do s´
ımbolo
inicial da gram´tica desta linguagem, atrav´s de
a e
deriva¸oes sucessivas.
c˜
Formalmente: S ⇒+ u.
• Uma forma sentencial ´ uma seq¨ˆncia qualquer,
e ue
composta de terminais e n˜o-terminais, obtida a
a
partir do s´
ımbolo inicial da gram´tica atrav´s de
a e
deriva¸oes sucessivas.
c˜
Formalmente: S ⇒∗ α.
22. 1 ¸˜
INTRODUCAO 22
• A linguagem gerada por uma gram´tica
a
G = (N, T, P, S) ´ o conjunto de todas as senten¸as
e c
da linguagem obtidas da gram´tica por deriva¸oes
a c˜
sucessivas.
Formalmente: L(G) = {w|w ∈ T ∗ ∧ S ⇒∗ w}.
23. 1 ¸˜
INTRODUCAO 23
Ex: G = ({S}, {0, 1}, P, S) com
P = {S → 0S1, S → 01}. Assim,
S ⇒ 0S1 ⇒ 00S11 ⇒ 03 S13 ⇒ · · · que ´ igual a 0n 1n
e
para n ≥ 1. Logo, L(G) = {0n 1n |n ≥ 1}.
Nota¸˜o:
ca
n vezes
aaa · · · a = an .
24. 1 ¸˜
INTRODUCAO 24
Exerc´
ıcio: Seja a seguinte gram´tica:
a
G = ({S, A, B}, {0, 1}, P, S)
P = {S → ASBB|BSAA|0, A → 01|01A, B → 10|10B}
Obtenha as deriva¸oes para as seguintes senten¸as:
c˜ c
1. 0101010;
2. 101000101010101.
25. 1 ¸˜
INTRODUCAO 25
• Tipos de Gram´ticas – segundo a hierarquia de
a
Chomsky existem quatro tipos:
Tipo 0 ou Irrestritas P = {α → β|α ∈ V + , β ∈ V ∗ };
Tipo 1 ou Sens´ ıvel ao Contexto Se α → β ∈ P
ent˜o |α| ≤ |β|.
a
Outra forma:
P = {α1 Aα2 → α1 βα2 |α1 , α2 ∈ V ∗ , β ∈ V + , A ∈ N };
Tipo 2 ou Livre de Contexto
P = {α → β|α ∈ N ∧ β = ε};
Tipo 3 ou Regular A → aB ou A → a, ou seja,
P = {A → aX|A ∈ N, a ∈ T, X ∈ N ∪ {ε}}.
26. 1 ¸˜
INTRODUCAO 26
• Gram´ticas lineares:
a
Gram´tica linear ` direita Se todas as produ¸oes
a a c˜
s˜o da forma A → wB ou A → w, com w ∈ T ∗ ;
a
Gram´tica linear ` esquerda Se todas as
a a
produ¸oes s˜o da forma A → Bw ou A → w;
c˜ a
Gram´tica linear unit´ria ` direita linear `
a a a a
direita com |w| ≤ 1;
Gram´tica linear unit´ria ` esquerda linear `
a a a a
esquerda com |w| ≤ 1.
• Teorema: As quatro defini¸oes de gram´ticas lineares
c˜ a
s˜o equivalentes.
a
27. 1 ¸˜
INTRODUCAO 27
• Defini¸˜o alternativa de gram´tica regular:
ca a
Uma gram´tica regular ´ qualquer gram´tica linear.
a e a
28. 1 ¸˜
INTRODUCAO 28
Regulares
Livres de Contexto
´
Sensiveis ao Contexto
Tipo 0
Tipo 3 ⊂ Tipo 2 ⊂ Tipo 1 ⊂ Tipo 0 ⊂ T ∗
29. 1 ¸˜
INTRODUCAO 29
• Ex:
G = ({S, A, B}, {a, b}, P, S)
P = {S → aB|bA, A → a|aS|bAA, B → b|bS|aBB}
1. Tipo da gram´tica?
a
2. L(G)?
30. 1 ¸˜
INTRODUCAO 30
• Respostas:
1. Livre de contexto;
2. L(G) ´ o conjunto de todas as palavras em T ∗ que
e
tem o mesmo n´mero de a’s e b’s.
u
31. 1 ¸˜
INTRODUCAO 31
• Linguagens classificadas segundo as gram´ticas em:
a
1. Recursivamente enumer´veis ou RE
a
(gram´tica Tipo 0) – conjuntos recursivamente
a
enumer´veis est˜o relacionado com a m´quina de
a a a
Turing, fun¸˜es parciais recursivas e
co
computabilidade;
2. Linguagem sens´ ao contexto ou LSC
ıvel
(gram´tica Tipo 1);
a
3. Linguagem livre de contexto ou LLC
(gram´tica Tipo 2);
a
4. Linguagem Regular ou LR
(gram´tica Tipo 3).
a
32. 1 ¸˜
INTRODUCAO 32
• Vamos extender as defini¸oes das gram´ticas Tipo 1
c˜ a
e 2 para permitir produ¸˜es do tipo S → ε. Isto s´ ´
co oe
poss´ se S n˜o aparece em lado direito de
ıvel a
nenhuma produ¸˜o. Assim, S → ε somente ser´
ca a
utilizada para originar a senten¸a vazia;
c
L(G ) = L(G) {ε}
• Para introduzir S → ε em gram´tica que viola a
a
condi¸˜o anterior, devemos transforma-la em uma
ca
equivalente que obede¸a a restri¸ao;
c c˜
• Gram´ticas equivalentes s˜o aquelas que geram a
a a
mesma linguagem;
33. 1 ¸˜
INTRODUCAO 33
• Para transformar incluiremos um novo s´ ımbolo
n˜o-terminal (S ) que passar´ a ser o novo s´
a a ımbolo
inicial. Em seguida, incluiremos em P todas as
regras que tenham o s´ ımbolo S no lado esquerdo,
substituindo este por S , e incluindo ainda uma regra
S → ε;
Ex1: G = ({S, A}, {a}, P, S) com
P = {S → aA, A → a|aA}. Obtemos
G = ({S, A}, {a}, P , S) com
P = {S → aA|ε, A → a|aA};
34. 1 ¸˜
INTRODUCAO 34
Ex2: G = ({S, A}, {a}, P, S) com
P = {S → aA, A → a|aS}. Obtemos
G = ({S , S, A}, {a}, P , S ) com
P = {S → aA|ε, S → aA, A → a|aS};
35. 1 ¸˜
INTRODUCAO 35
Exerc´
ıcios:
1. Construa uma gram´tica G tal que:
a
(a) L(G) = {an bm |n ≥ 0 ∧ m ≥ 1};
(b) L(G) = {ai bj ci |i ≥ 0 ∧ j ≥ 1}.
2. Construa uma gram´tica regular G tal que:
a
L(G) = {w|w ∈ {0, 1}+ e n˜o tem 1 s consecutivos}
a
3. Construa uma gram´tica livre de contexto G tal que:
a
L(G) = {w|w ∈
{0, 1, 2}+ e todos os zeros sejam consecutivos}
36. 1 ¸˜
INTRODUCAO 36
4. Seja G definida por:
S → aS|bB, B → cB|cC, C → cS|c
Pede-se:
(a) determine L(G);
(b) construa G tal que L(G ) = L(G) {ε};
(c) verifique se as senten¸as abaixo pertencem a L(G):
c
• abccc;
• bccabcc;
• abccbbc.
37. 1 ¸˜
INTRODUCAO 37
5. Construa uma GLC G tal que L(G) seja o conjunto
de express˜es aritm´ticas v´lidas. Os terminais s˜o
o e a a
identificadores (id), parˆnteses (“(” e “)”), e os
e
operadores +, ∗, e − un´rio.
a
38. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 38
2 Gram´ticas Regulares e
a
Autˆmato Finito
o
• O autˆmato finito (AF) ´ uma m´quina abstrata que
o e a
reconhece linguagens regulares;
• Modelo matem´tico com entradas e sa´
a ıdas. Se ´
e
fornecido ao AF uma seq¨ˆncia de s´
ue ımbolos como
entrada, ele responder´ se esta seq¨ˆncia pertence `
a ue a
linguagem ou n˜o;
a
• O AF pode assumir um n´mero finito de estados;
u
• Um estado resume os estados anteriores pelos quais
passou e os s´
ımbolos que j´ foram lidos na entrada.
a
39. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 39
• Defini¸˜o formal de autˆmato finito
ca o
Um autˆmato finito M sobre um alfabeto Σ ´ um
o e
sistema (K, Σ, δ, q0 , F ) onde:
K – conjunto finito, n˜o vazio, de estados;
a
Σ – alfabeto finito de entrada;
δ – fun¸ao de transi¸ao de estados,
c˜ c˜
δ :K ×Σ {ε} → K ;
q0 ∈ K estado inicial;
F ⊂ K conjunto de estados finais.
40. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 40
Fita de entrada
0 1 0 0 1 0 1
Cabeçote
Controle
Finito
δ(q, a) = p para q, p ∈ K e a ∈ Σ, significando que
estando no estado q e lendo o s´ımbolo a na fita de
entrada podemos mudar para o estado p avan¸ando o
c
cabe¸ote uma posi¸ao.
c c˜
41. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 41
• Diagrama de Transi¸˜o
ca
– Outra maneira de representar um autˆmato finito;
o
– Grafo direcionado e rotulado;
– Os v´rtices representam os estados, desenhados
e
como c´
ırculos;
– As arestas representam as transi¸oes entre dois
c˜
estados, sendo o r´tulo o s´
o ımbolo reconhecido na
entrada;
– O estado inicial ´ marcado com uma seta;
e
– Os estados finais s˜o indicados por c´
a ırculos
duplos.
42. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 42
Ex:
a
a b
q0
@ABC
GFED q1
/ GFED
@ABC q2
/ G?=
@ABC
89:;
FED
M = ({q0 , q1 , q2 }, {a, b}, δ, q0 , {q2 }), e δ(q0 , a) = q1 ,
δ(q1 , a) = q1 , δ(q1 , b) = q2 . Logo, T (M ) = {an b|n ≥ 1}.
43. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 43
• Tabela de Transi¸ao de Estados
c˜
– Uma terceira forma de representar um AF;
– Tabela indicando na vertical os estados, e na
horizontal os s´
ımbolos do alfabeto. No
cruzamento est˜o as transi¸oes poss´
a c˜ ıveis;
– O estado inicial ´ indicado por uma seta, e os
e
estados finais por asteriscos.
44. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 44
Ex1:
δ a b
→ q0 q1 -
q1 q1 q2
*q2 - -
Exerc´
ıcio:
1. Descreva formalmente o AF;
2. Desenhe o diagrama de transi¸˜o equivalente.
ca
45. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 45
Ex2: AF que reconhece senten¸as em {0, 1}∗ as quais n˜o
c a
cont´m dois ou mais 1’s consecutivos.
e
0
1
+ GFED
q0
/ GFED k
@ABC
?=
89:; q1
@ABC
?=
89:;
0
M = (K, Σ, δ, q0 , F ), K = {q0 , q1 }, Σ = {0, 1},
F = {q0 , q1 }, com δ(q0 , 0) = q0 , δ(q0 , 1) = q1 , δ(q1 , 0) = q0 .
Exerc´
ıcio: Apresente a tabela de transi¸ao.
c˜
47. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 47
Ex3: Identificadores de linguagens de programa¸˜o
ca
S → L|LR, R → L|D|LR|DR, L → a|b|c · · · |z, D →
0|1|2| · · · |9
a|b|···|z|0|1|···|9
a|b|···|z
q0
GFED
@ABC q1
/ G?=
@ABC
89:;
FED
Exerc´
ıcios:
1. Inteiros com ou sem sinal;
2. Reais (uma casa ap´s a v´
o ırgula) com sinal opcional.
48. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 48
a ca ınio K × Σ∗ :
• Extens˜o da fun¸˜o δ para o dom´
ˆ
1. δ(q, ε) = q;
ˆ ˆ
2. δ(q, ua) = δ(δ(q, u), a) para u ∈ Σ∗ e a ∈ Σ;
ˆ
• δ(q, u) = p significa que M , iniciando no estado q e
tendo a seq¨ˆncia u na fita de entrada, entrar´ no
ue a
estado p, ap´s o cabe¸ote mover-se para a direita |u|
o c
c´lulas;
e
c e ˆ
• Uma senten¸a u ´ aceita por M se δ(q0 , u) = p para
algum p ∈ F , ou seja:
ˆ
T (M ) = {u|δ(q0 , u) = p ∧ p ∈ F };
• Qualquer conjunto de senten¸as aceito por um AF ´
c e
dito ser regular (linguagem regular ).
52. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 52
T (M ) = {w|w ∈
{0, 1}∗ e w cont´m um n´mero par de 0 s e 1 s}.
e u
53. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 53
• Autˆmato Finito N˜o-Determin´
o a ıstico (AFND)
Um autˆmato finito n˜o-determin´stico ´ um sistema
o a ı e
(K, Σ, δ, q0 , F ) onde:
K conjunto finito, n˜o vazio, de estados;
a
Σ alfabeto de entrada;
δ : K × Σ → Partes(K) fun¸ao de transi¸ao (n˜o
c˜ c˜ a
determin´
ıstico);
q0 ∈ K estado inicial;
F ⊂ K conjunto de estados finais.
54. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 54
• Diferen¸a entre AF e o AFND: δ(q, a) ´ um conjunto
c e
de estados (possivelmente vazio) ao inv´s de um
e
unico estado;
´
• Assim, δ(q, a) = {p1 , p2 , . . . , pk } significa que M
estando no estado q e tendo a na posi¸˜o do cabe¸ote
ca c
na fita de entrada, move uma c´lula para a direita e
e
escolhe qualquer estado entre p1 , p2 , . . . , pk como
pr´ximo estado.
o
55. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 55
ınio K × Σ∗ :
• Extendendo δ para o dom´
ˆ
1. δ(q, ε) = {q};
ˆ
2. δ(q, ua) = ˆ δ(p, a) para todo u ∈ Σ∗ e
p∈δ(q,u)
a ∈ Σ;
• Uma senten¸a u ´ aceita por M se existe um estado
c e
ˆ
p ∈ F e p ∈ δ(q0 , u);
ˆ
• T (M ) = {u|p ∈ δ(q0 , u) ∧ p ∈ F }.
56. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 56
Ex: AFND que aceita o conjunto de todas as senten¸as
c
bin´rias que cont´m dois 0’s ou 1’s consecutivos.
a e
0|1
0
q
GFED
@ABC
3
q4
/ G?=
@ABC
89:;
FED
0|1 0 }}
}}
}
}}}}
q0 e
/ GFED
@ABC
ee
ee 0|1
ee
1 ee
1
q1
GFED
@ABC q2
/ G?=
@ABC
89:;
FED
58. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 58
• Teorema: Se L ´ um conjunto aceito por um AFND,
e
ent˜o existe um autˆmato finito determin´
a o ıstico
(AFD) que aceita L.
(Ou seja, o n˜o determinismo n˜o acrescenta nada –
a a
a n˜o ser praticidade – ao AF).
a
59. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 59
• Seja M = (K, Σ, δ, q0 , F ) um AFND que aceita L.
Definimos o AFD M = (K , Σ, δ , q0 , F ) tal que:
– Os estados de M s˜o constituidos por todos os
a
subconjuntos do conjunto de estados de M :
K = Partes(K) e K = 2K ;
– Nota¸ao: estados de M s˜o [q1 q2 q3 · · · qi ], onde
c˜ a
q1 , q2 , q3 , . . . , qi ∈ K;
– Ex: Se K = {q0 , q1 } ent˜o K = {∅, [q0 ], [q1 ], [q0 q1 ]};
a
– F ´ o conjunto de todos os estados de K contendo
e
um estado de F ;
– q0 = [q0 ];
60. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 60
– Definimos δ ([q1 q2 q3 · · · qi ], a) = [p1 p2 p3 · · · pj ] se e
somente se δ({q1 , q2 , . . . , qi }, a) = {p1 , p2 , . . . , pj } =
δ(q1 , a) ∪ δ(q2 , a) ∪ · · · ∪ δ(qi , a).
61. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 61
• Prova: T (M ) = T (M ). Por indu¸˜o sobre o
ca
tamanho da palavra de entrada w. Devemos mostrar
ˆ
que δ ([q0 ], w) = [p1 · · · pi ] se e somente se
ˆ
δ(q0 , w) = {p1 , . . . , pi }.
a ˆ
1. Base: |w| = 0, w = ε. Ent˜o, δ ([q0 ], ε) = [q0 ] se e
ˆ
somente se δ(q0 , ε) = {q0 }, que ´ verdadeiro por
e
defini¸ao;
c˜
2. Hip´tese: |w| = n, n ≥ 1.
o
ˆ
Supor δ ([q0 ], w) = [p1 · · · pi ] se e somente se
ˆ
δ(q0 , w) = {p1 , . . . , pi };
62. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 62
3. Passo: |wa| = n + 1, n ≥ 1:
ˆ
δ ([q0 ], wa) = [q1 · · · qj ]
se e somente se
ˆ
δ(q0 , wa) = {q1 , . . . , qj }
que equivale a dizer que
ˆ
δ ([p1 · · · pi ], a) = [q1 · · · qj ]
se e somente se
ˆ
δ({p1 , . . . , pi }, a) = {q1 , . . . , qj }
que ´ verdade por defini¸ao.
e c˜
67. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 67
• Rela¸˜o entre AF e GR
ca
• Teorema: Se G = (N, T, P, S) ´ uma GR (Tipo 3)
e
ent˜o existe um AF M = (K, T, δ, S, F ) tal que
a
T (M ) = L(G).
• Seja M um AFND:
– os estados de M s˜o as vari´veis de G, mais um
a a
estado adicional A, A ∈ N . Assim, K = N ∪ {A};
– estado inicial de M ´ S;
e
– se P tem produ¸ao S → ε ent˜o F = {S, A}, caso
c˜ a
contr´rio F = {A};
a
68. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 68
– transi¸oes de M :
c˜
1. δ(B, a) = A para cada B → a ∈ P ;
2. δ(B, a) = C para cada B → aC ∈ P ;
3. δ(A, a) = ∅ para todo a ∈ T .
• Provar que T (M ) = L(G).
69. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 69
Exemplo: G = ({S, B}, {0, 1}, P, S), e
P : S → 0B, B → 0B|1S|0
Construir um AF que aceite L(G):
M = ({S, B, A}, {0, 1}, δ, S, {A})
δ(S, 0) = {B} ⇐ S → 0B
δ(S, 1) = ∅
δ(B, 0) = {B, A} ⇐ B → 0B|0
δ(B, 1) = {S} ⇐ B → 1S
71. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 71
Eliminando os estados inacess´
ıveis:
K = {[S], [B], [AB]}
F = {[AB]}
72. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 72
• Teorema: Se M = (K, T, δ, q0 , F ) ´ um AF ent˜o
e a
existe uma gram´tica do Tipo 3, G = (N, T, P, S), tal
a
que L(G) = T (M ).
• Para obter G:
– N = K;
– S = q0 ;
– Produ¸oes:
c˜
1. B → aC para toda a transi¸˜o δ(B, a) = C;
ca
2. B → a para toda a transi¸˜o δ(B, a) = C,
ca
quando C ∈ F ;
– Se ε ∈ T (M ) ent˜o L(G) = T (M );
a
73. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 73
– Se q0 ∈ F ent˜o ε ∈ T (M ), e L(G) = T (M ) − {ε}.
a
Neste caso, construir uma L(G ) = L(G) ∪ {ε};
• Provar L(G) = T (M ).
74. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 74
Exemplo: Contruir G = (K , {0, 1}, P , [S]),
K = {[S], [B], [AB]}, a partir de M do exemplo
anterior:
[S] → 0[B] δ ([S], 0) = [B]
[B] → 0[AB] δ ([B], 0) = [AB]
[B] → 0 [AB] ∈ F
[AB] → 0[AB] δ ([AB], 0) = [AB]
[AB] → 0 [AB] ∈ F
[B] → 1[S] δ ([B], 1) = [S]
[AB] → 1[S] δ ([AB], 1) = [S]
75. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 75
• Minimiza¸˜o de AF.
ca
Um AF M ´ m´nimo se:
e ı
1. n˜o possui estados inacess´
a ıveis;
2. n˜o possui estados mortos;
a
3. n˜o possui estados equivalentes.
a
76. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 76
• Constru¸˜o do AF m´
ca ınimo:
1. retirar de K os estados inacess´veis, ou seja, todo
ı
estado q ∈ K para o qual n˜o exista senten¸a w tal
a c
ˆ
que δ(q0 , w) = q;
2. retirar de K os estados mortos, ou seja, todo estado
que n˜o sendo estado final e que n˜o conduz a
a a
nenhum estado final durante o reconhecimento;
3. construir todas as poss´
ıveis classes de equivalˆncia
e
de estados;
77. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 77
4. construir M = (K , Σ, δ , q0 , F ) conforme segue:
– K ´ o conjunto das classes de equivalˆncia
e e
obtidas;
– q0 ´ a classe de equivalˆncia que cont´m q0 ;
e e e
– F ´ o conjunto de todas as classes de
e
equivalˆncia que cont´m pelo menos um estado
e e
de F ;
– δ ´ o conjunto de transi¸oes tais que
e c˜
δ ([p], a) = [q] para toda a transi¸˜o δ(p1 , a) = q1 ,
ca
onde p1 ∈ [p] e q1 ∈ [q].
78. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 78
• Constru¸˜o das Classes de Equivalˆncia:
ca e
Um conjunto de estados q1 , q2 , . . . , qj est´ em uma
a
mesma classe de equivalˆncia se todas as transi¸˜es
e co
poss´
ıveis a partir de cada estado conduz o autˆmato o
aos estados qi , qi+1 , . . . , qn , estando estes ultimos
´
todos em uma mesma classe de equivalˆncia. e
79. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 79
• Algoritmo:
1. Criar um estado ∅ para representar as transi¸oes
c˜
indefinidas;
2. Dividir K em duas classes de equivalˆncia iniciais,
e
uma contendo os estados finais e a outra todos os
demais estados de K;
3. Dividir sucessivamente as classes obtidas, at´ que
e
nenhuma nova classe possa ser obtida.
83. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 83
4. autˆmato sem classes de equivalˆncia:
o e
δ a b
∗[0] [0] [0]
→ [1] [3] [2]
[2] [2] [2]
[3] [2] [0]
84. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 84
5. AF m´
ınimo:
δ a b
∗[0] [0] [0]
→ [1] [3] -
[3] - [0]
85. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 85
Exerc´
ıcios:
1. Minimize o seguinte AF:
a
+ GFED
q0
GFED k
@ABC q1
@ABC
a
b b
q2 e
GFED
@ABC
?=
89:; q3
GFED
@ABC
?=
89:;
e
e }
}
eea}
b }
a }e b
}}}} eee
~
q4
2 GFED
@ABC
?=
89:; q5
/ GFED
@ABC
b
a
86. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 86
2. Minimize o seguinte AF:
q0
GFED
@ABC
a
q1 e
GFED
@ABC
} ee
b }}} eea
}} ee
} ee
}}
~ b
b
2
q2 f
GFED o
@ABC q
GFED
@ABC
?=
89:;
3 l
a
b
a }}
}}
}
}}
a
}}
q4
GFED
@ABC
?=
89:;
87. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 87
• Express˜es Regulares – s˜o esquemas para
o a
representar linguagens regulares;
• Sintaxe:
1. Todos os s´
ımbolos do alfabeto s˜o ER;
a
2. Se R1 e R2 s˜o ER, ent˜o (R1 |R2 ) ´ uma ER
a a e
(uni˜o);
a
3. Se R1 e R2 s˜o ER, ent˜o (R1 R2 ) ´ uma ER
a a e
(concatena¸ao);
c˜
4. Se R1 ´ ER, ent˜o (R1 )∗ ´ uma ER (repeti¸ao).
e a e c˜
+
Observa¸oes: R1 = R1 (R1 )∗ e R1 = R1 |ε.
c˜ ?
89. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 89
• Bombeamento para Linguagens Regulares (Pumping
Lemma) – serve para provar que uma dada
linguagem ´ regular;
e
• Para provar que sim: AF, GR, ER;
• Para provar que n˜o: bombeamento;
a
• Prova por redu¸˜o ao absurdo;
ca
• Seja M = (K, Σ, δ, q0 , F ) e K = n;
• Considere uma entrada w tal que |w| ≥ n;
90. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 90
• Assim, o caminho no diagrama de transi¸oes deve
c˜
passar por um conjunto de estados Q ⊂ K mais de
uma vez (la¸o);
c
q0 HIJK
Q qi
GFED /o /o /o / ONML /o /o /o / GFED
@ABC @ABC
?=
89:;
91. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 91
• Lema: Seja L uma linguagem regular. Ent˜o, existe
a
uma constante n tal que se z ´ uma palavra de L, e
e
|z| ≥ n, nos podemos dizer que z = uvw de tal forma
que |uv| ≤ n, |v| ≥ 1 e, para todo i ≥ 0, uv i w est´
a
em L.
92. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 92
• Aplica¸˜o do bombeamento (aplicado como um
ca
“jogo” contra um “advers´rio”):
a
1. Selecione uma linguagem L que desejamos provar
que n˜o ´ regular;
a e
2. O “advers´rio” escolhe um n, a constante do Lema.
a
Uma vez escolhido o n ele n˜o pode muda-lo;
a
3. Selecione uma string z ∈ L. Sua escolha depende
do n escolhido no passo anterior;
4. O “advers´rio” quebra z nas partes u,v, e w, tal
a
que |uv| ≤ n e |v| ≥ 1;
5. Vocˆ encontra a contradi¸ao mostrando que para
e c˜
qualquer u, v, e w escolhido pelo “advers´rio”,
a
existe um i para o qual uv i w n˜o est´ em L.
a a
93. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 93
n2
• Ex: L = {a |n ≥ 1} n˜o ´ regular.
a e
2
Solu¸˜o: Suponha z = an , z ∈ L e L ´ regular. Seja
ca e
z = uvw, onde 1 ≤ |v| ≤ n e uv i w ∈ L para todo i.
Em particular, seja i = 2. Ent˜o,
a
n2 |uv 2 w| ≤ n2 + n, j´ que |uv 2 w| = |uvw| + |v|,
a
|uvw| = n2 . Logo, n2 |uv 2 w| ≤ n2 + n (n + 1)2 .
Ou seja, o tamanho de uv 2 w fica entre n2 e (n + 1)2 e
n˜o pode ser um quadrado perfeito. Assim, uv 2 w ∈ L
a
e L n˜o ´ regular.
a e
94. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 94
• Exerc´
ıcio: Prove por bombeamento que
L = {an bn |n ≥ 0} n˜o ´ regular.
a e
95. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 95
Solu¸˜o: Suponha z = an bn , z ∈ L e L ´ regular.
ca e
Escolho uv = an , w = bn . Observe que uv i w ∈ L para
i 1, j´ que, neste caso, teriamos am bn para m n.
a
Logo, por redu¸˜o ao absurdo, L n˜o ´ regular.
ca a e
96. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 96
• AF com Sa´ (Moore e Mealy) – n˜o se restringe a
ıda a
aceita/rejeita, produz uma string de sa´
ıda;
• M´quina de Mealy – sa´ associada `s transi¸˜es;
a ıda a co
M = (K, Σ, δ, q0 , F, ∆)
Onde:
K conjunto finito de estados;
Σ alfabeto finito de entrada;
δ : K × Σ → K × ∆∗ fun¸ao de transi¸ao;
c˜ c˜
q0 ∈ K estado inicial;
F ⊂ K conjunto de estados finais;
∆ alfabeto finito de sa´
ıda;
97. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 97
• δ(q, a) = (p, w), com p, q ∈ K, a ∈ Σ, e w ∈ ∆∗ ,
significa que o AF, estando no estado q e tendo a na
fita de entrada, muda para o estado p e escreve a
string w na fita de sa´ıda.
98. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 98
Exemplo: Seja Σ = {x} e ∆ = {a, b}. M ´ uma
e
m´quina de Mealy que reconhece uma palavra
a
w,|w| ≥ 1, tal que w = x+ e produz uma seq¨ˆncia
ue
v = (ab)+ , em que |v| = 2|w|.
Solu¸˜o:
ca
q0
@ABC
GFED q1
/ G?=
@ABC
89:;
FED
l
(x,ab)
(x,ab)
Observa¸ao: arestas s˜o rotuladas com um par (x, y),
c˜ a
onde x ´ o s´
e ımbolo lido e y ´ a string produzida na
e
sa´
ıda.
99. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 99
• M´quina de Moore – sa´ associada aos estados;
a ıda
M = (K, Σ, δ, q0 , F, ∆, δS )
Onde:
K conjunto finito de estados;
Σ alfabeto finito de entrada;
δ : K × Σ → K fun¸ao de transi¸ao;
c˜ c˜
q0 ∈ K estado inicial;
F ⊂ K conjunto de estados finais;
∆ alfabeto finito de sa´
ıda;
δS : K → ∆∗ fun¸ao (total) de sa´
c˜ ıda;
100. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 100
Exemplo: o mesmo anterior
(xxx · · · x ⇒ ababab · · · ab).
Solu¸˜o:
ca
x
@ABC
GFED
q0 ,a / GFED
@ABC
?=
89:;
q1 ,b / ONML
HIJK
@ABC
GFED
q2 ,ab
x x
Observa¸ao: os v´rtices s˜o rotulados com um par
c˜ e a
(x, y), onde x ´ o nome do estado e y ´ a sa´
e e ıda
produzida pelo estado.
101. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 101
• Equivalˆncia das M´quinas de Moore e Mealy
e a
– Excetuando-se a string vazia, os dois modelos de
m´quina s˜o equivalentes;
a a
– A m´quina de Moore sempre gera pelo menos a
a
palavra associada ao estado inicial, n˜o podendo
a
assim gerar a senten¸a vazia;
c
– Prova de equivalˆncia por simula¸ao m´tua (exceto
e c˜ u
a senten¸a vazia);
c
102. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 102
– Teorema: A m´quina de Mealy simula a m´quina
a a
de Moore.
Prova: Suponha MO = (K, Σ, δMO , q0 , F, ∆, δS ) uma
m´quina de Moore. Seja:
a
ME = (K ∪ {qe }, Σ, δME , qe , F, ∆)
uma m´quina de Mealy, onde δME ´ definido como
a e
segue:
1. δME (qe , a) = (δMO (q0 , a), δS (q0 )δS (δMO (q0 , a)));
2. δME (q, a) = (δMO (q, a), δS (δMO (q, a))).
103. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 103
a1
ONML
HIJK
q0 ,u0 / ONML
HIJK
q1 ,u1
V
a0
qe e
GFED
@ABC
ee
ee(a1 ,u0 u1 )
(a0 ,u0 u0 ) ee
ee
q0
GFED
@ABC q1
/ GFED
@ABC
T (a1 ,u1 )
(a0 ,u0 )
104. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 104
– Observe que o estado qe introduzido ´ referenciado
e
apenas na primeira transi¸ao executada. Seu
c˜
objetivo ´ garantir a gera¸ao da sa´ referente ao
e c˜ ıda
estado inicial q0 de MO;
– Provar por indu¸ao.
c˜
105. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 105
– Teorema: A m´quina de Moore simula a m´quina
a a
de Mealy;
106. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 106
Exerc´
ıcios:
1. Construa um AF M que aceite:
(a) todas as senten¸as em {0, 1}+ que apresentem
c
cada “1” seguido imediatamente de dois zeros;
(b) todas as senten¸as em {a, b}∗ de modo que todo
c
“a” apare¸a entre dois “b”;
c
(c) todas as senten¸as de {a, b}+ de modo que o
c
ultimo s´
´ ımbolo seja “b” e o n´mero de s´
u ımbolos
“a” seja par.
2. Construa a gram´tica regular equivalente a cada um
a
dos autˆmatos do exerc´ anterior.
o ıcio
107. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 107
3. Defina a express˜o regular que representa valores
a
“redondos” em reais (Ex: R$1,00 ou R$200,00 ou
R$1.000.000,00 ou R$3.000,00).
108. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 108
4. Seja a seguinte gram´tica regular:
a
S → 0S|1S|0A|0C|1B
A → 0A|0
B → 1B|1
C → 0A|0
Pede-se:
(a) o AFND M tal que T (M ) = L(G);
(b) o AFD M tal que T (M ) = T (M );
(c) M tal que T (M ) = T (M ) e M seja m´
ınimo.
109. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 109
5. Seja G definida por:
S → aB|aD
B → bB|bC
C → cC|cD
D → d
E → aB|a
Pede-se:
(a) o AF M tal que T (M ) = L(G);
(b) Determine T (M );
(c) Minimize M .
110. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 110
6. Seja T (M ) = {abn cm d|0 ≤ n ≤ 2 ∧ m ≥ 1}. Pede-se:
(a) construa M ;
(b) construa G tal que L(G) = T (M ).
7. Construa o AF e a gram´tica regular equivalentes a
a
cada uma das ER a seguir:
(a) a(b|ca)d∗ (a|b)+ ;
(b) (a(b|ca)∗ (b|c)a∗ )+ .
111. 2 ´ ˆ
GRAMATICAS REGULARES E AUTOMATO FINITO 111
8. Projete uma m´quina de Moore que recebendo um
a
valor em reais (ex: R$10.000,00) converta para
d´lares (suponha rela¸ao 1-1 entre dolar e real – logo,
o c˜
US$10,000.00).
9. O mesmo que o exerc´ anterior, usando m´quina
ıcio a
de Mealy.
112. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 112
3 Gram´tica Livre de Contexto e
a
Autˆmato de Pilha
o
• As GLC tem grande importˆncia pois atrav´s delas
a e
podemos definir a maioria das estruturas de
linguagens de programa¸ao;
c˜
• As linguagens livres de contexto representam um
conjunto mais amplo de linguagens que o das
linguagens regulares;
• O autˆmato de pilha (PDA) ´ um autˆmato mais
o e o
“poderoso” que o AF;
• AF PDA (PDA simula AF e AF n˜o simula PDA);
a
113. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 113
• Exten¸˜o da defini¸˜o de GLC para permitir
ca ca
produ¸˜es na forma A → ε (chamadas ε-produ¸˜es);
co co
• Nova defini¸˜o: P = {A → β|A ∈ N ∧ β ∈ (N ∪ T )∗ };
ca
• Uma GLC ´ ε-livre quando n˜o possui ε-produ¸oes
e a c˜
ou quando possui apenas S → ε, onde S ´ o s´
e ımbolo
inicial da gram´tica, e S n˜o aparece do lado direito
a a
de nenhuma regra de produ¸ao;
c˜
114. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 114
´
• Arvores de Deriva¸˜o para GLC’s – s˜o
ca a
representa¸oes gr´ficas para as deriva¸oes da GLC
c˜ a c˜
(formam uma estrutura hier´rquica);
a
115. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 115
• Seja G = (N, T, P, S) uma GLC. Uma ´rvore ´ uma
a e
a
´rvore de deriva¸˜o para G se:
ca
1. todo nodo tem um r´tulo que ´ um s´
o e ımbolo de V ;
2. o r´tulo da raiz ´ S;
o e
3. se um nodo A tem um ou mais descendentes, ent˜o
a
A ´ um elemento de N ;
e
4. se A1 , A2 , . . . , An s˜o descendentes diretos de A, da
a
esquerda para a direita, ent˜o a
A → A1 A2 · · · An ∈ P ;
5. se D ´ a unica sub-´rvore da raiz e tem r´tulo ε,
e ´ a o
ent˜o S → ε ∈ P .
a
116. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 116
• Exemplo: G = ({S, A}, {a, b}, P, S),
P = {S → a|aAS, A → SbA|SS|ba}. Deriva¸˜o:
ca
S ⇒ aAS ⇒ aSbAS ⇒ aabAS ⇒ aabbaS ⇒ aabbaa.
´
Arvore de deriva¸˜o:
ca
Sd
d dd
dd
d
a Ac Sb
cc b bb
cc bb
cc bb
S b Ab a
bb
bb
bb
b
a b a
117. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 117
• Profundidade da ´rvore de deriva¸˜o ´ o
a ca e
comprimento do maior caminho entre a raiz e um
nodo terminal. No exemplo anterior ´ 3;
e
• Limite de uma ´rvore de deriva¸˜o ´ a seq¨ˆncia
a ca e ue
formada pela concatena¸˜o, da esquerda para a
ca
direita, das folhas da ´rvore de deriva¸˜o;
a ca
118. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 118
• Deriva¸ao mais ` esquerda e mais ` direita – a ´rvore
c˜ a a a
de deriva¸˜o ignora varia¸oes na ordem em que os
ca c˜
s´
ımbolos s˜o substituidos na deriva¸˜o. Assim,
a ca
G = ({E}, {+, ∗, (, ), −, id}, P, E)
P = {E → E + E|E ∗ E|(E)| − E|id}
tomando a senten¸a −(id + id) podemos deriva-la das
c
duas seguintes formas:
1. E ⇒ −E ⇒ −(E) ⇒ −(E + E) ⇒ −(id + E) ⇒
−(id + id);
2. E ⇒ −E ⇒ −(E) ⇒ −(E + E) ⇒ −(E + id) ⇒
−(id + id);
119. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 119
Ambas correspondem a mesma ´rvore de deriva¸˜o:
a ca
Ed
~ dd
~~~ dd
~~ dd
~
− Ec
cc
cc
cc
c
( Ec )
cc
cc
cc
c
E + E
id id
120. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 120
• Deriva¸ao mais ` esquerda: s´
c˜ a ımbolo substituido ´
e
sempre o n˜o-terminal mais ` esquerda na forma
a a
sentencial;
• Deriva¸ao mais ` direita: s´
c˜ a ımbolo substituido ´
e
sempre o n˜o-terminal mais ` direita na forma
a a
sentencial;
• Nas duas deriva¸oes mostradas a pouco, a primeira ´
c˜ e
mais ` esquerda e a segunda mais ` direita;
a a
121. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 121
• Exemplo: id + id ∗ id
Deriva¸ao mais ` esquerda: E ⇒ E + E ⇒ id + E ⇒
c˜ a
id + E ∗ E ⇒ id + id ∗ E ⇒ id + id ∗ id
Deriva¸ao mais ` direita: E ⇒ E + E ⇒
c˜ a
E + E ∗ E ⇒ E + E ∗ id ⇒ E + id ∗ id ⇒ id + id ∗ id
Observa¸ao: se w ∈ L(G) e G ´ uma GLC, ent˜o w
c˜ e a
tem pelo menos uma ´rvore de deriva¸ao e,
a c˜
correspondendo a esta ´rvore existe uma s´ deriva¸˜o
a o ca
mais ` esquerda e uma s´ deriva¸ao mais ` direita.
a o c˜ a
122. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 122
• Uma GLC ´ amb´gua se para a mesma senten¸a
e ı c
existe mais de uma ´rvore de deriva¸˜o;
a ca
Exemplo: id + id ∗ id
Ea E
Ñ aa Ñ aaa
ÑÑ aa ÑÑ
Ñ aa
ÑÑ aa ÑÑ aa
ÑÑ Ñ
E + Ea Ea ∗ E
Ñ aa Ñ aa
ÑÑ aa ÑÑ aa
ÑÑ aa ÑÑ aa
ÑÑ ÑÑ
id E ∗ E E + E id
id id id id
123. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 123
• Uma linguagem inerentemente amb´gua ´ aquele em
ı e
que todas as GLC que a geram s˜o amb´
a ıguas.
Exemplo: L = {an bn cm dm |n ≥ 1 ∧ m ≥
1} {an bm cm dn |n ≥ 1 ∧ m ≥ 1}
124. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 124
Representada pela seguinte gram´tica:
a
G = ({S, X, Y, Z, W }, {a, b, c, d}, P, S)
S → XY |Z
X → ab|aXb
Y → cd|cXd
Z → aW d|aZd
W → bc|bW c
125. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 125
Exemplo de deriva¸ao: abcd
c˜
SV S
Ö VV
ÖÖÖ VV
ÖÖ VV
Ö
X YU ZV
ÖÖ UU ÖÖ VV
ÖÖ UU ÖÖ VV
UU VV
ÖÖÖ ÖÖÖ
a b c d a WV d
ÖÖ VV
Ö VV
ÖÖ VV
ÖÖ
b c
126. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 126
• Transforma¸oes de GLC – tem o objetivo de
c˜
simplifica¸˜o e prepara¸˜o para aplica¸˜es
ca ca co
posteriores. Observa¸˜o: a gram´tica transformada
ca a
deve ser equivalente ` original.
a
127. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 127
• Elimina¸˜o de s´
ca ımbolos in´teis
u
Um s´ımbolo ´ in´til se ele n˜o aparece na deriva¸ao
e u a c˜
de nenhuma senten¸a.
c
est´ril n˜o gera nenhuma seq¨ˆncia de terminais
e a ue
pertencente a uma senten¸a;
c
inalcan¸´vel n˜o aparece em nenhuma forma
ca a
sentencial da gram´tica.
a
128. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 128
• Determina¸˜o do conjunto de s´
ca ımbolos f´rteis:
e
1. Construir o conjunto N0 = ∅ e fazer i = 1;
2. Repetir
(a) Ni = {A|A → α ∈ P ∧ α ∈ (Ni−1 ∪ T )∗ };
(b) i = i + 1;
at´ que Ni = Ni−1 ;
e
3. Ni ´ o conjunto de s´
e ımbolos f´rteis.
e
• Observa¸ao: se o s´
c˜ ımbolo inicial n˜o fizer parte dos
a
s´
ımbolos f´rteis, ent˜o a linguagem gerada pela
e a
gram´tica ´ vazia.
a e
129. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 129
• Exemplo: G = ({S, A, B, C, D}, {a, b, c, d}, P, S),
P = {S → aA, A → a|bB, B → b|dD, C → cC|c, D →
dD}. Solu¸˜o:
ca
1. N0 = ∅;
2. N1 = {A, B, C};
3. N2 = {S, A, B, C};
4. N3 = {S, A, B, C} = N2 .
Conjunto dos s´
ımbolos f´rteis: {S, A, B, C}.
e
Gram´tica simplificada:
a
G = ({S, A, B, C}, {a, b, c}, P , S),
P = {S → aA, A → a|bB, B → b, C → cC|c}.
130. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 130
• Determina¸˜o do conjunto de s´
ca ımbolos alcan¸aveis:
c´
1. Construir o conjunto V0 = {S} (S=s´
ımbolo inicial)
e fazer i = 1;
2. Repetir
(a) Vi = {X|∃A → αXβ ∈ P ∧ A ∈ Vi−1 ∧ α, β ∈
(N ∪ T )∗ ∧ X ∈ V } Vi−1 ;
(b) i = i + 1;
at´ que Vi = Vi−1 ;
e
3. Vi ´ o conjunto de s´
e ımbolos alcan¸´veis.
ca
131. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 131
• Exemplo: G do exemplo anterior.
G = ({S, A, B, C}, {a, b, c}, P , S),
P = {S → aA, A → a|bB, B → b, C → cC|c}.
Solu¸˜o:
ca
1. V0 = {S};
2. V1 = {a, A} V0 = {S, a, A};
3. V2 = {a, b, B} V1 = {S, a, A, b, B};
4. V3 = {b} V2 = {S, a, A, b, B} = V2 .
Conjunto de s´
ımbolos alcan¸aveis: {S, A, B, a, b}.
c´
Gram´tica simplificada:
a
G = ({S, A, B}, {a, b}, P , S),
P = {S → aA, A → a|bB, B → b}.
132. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 132
• Transforma¸ao de GLC qualquer em GLC ε-livre:
c˜
1. Reunir em um conjunto os n˜o-terminais que
a
derivam direta ou indiretamente a senten¸a vazia:
c
Ne = {A|A ∈ N ∧ A ⇒+ ε};
2. Construir o conjunto de regras P como segue:
(a) incluir em P todas as regras de P , com excess˜o a
daquelas da forma A → ε;
(b) para cada ocorrˆncia de um s´
e ımbolo Ne do lado
direito de alguma regra de P , incluir em P mais
uma regra, substituindo este s´ ımbolo por ε. Isto
´, para cada regra de P tipo A → αBβ, B ∈ Ne
e
e α, β ∈ V ∗ , incluir em P a regra A → αβ;
133. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 133
3. Se S ∈ Ne , adicionar a P as regras S → S e
S → ε, incluindo este novo n˜o-terminal S em
a
N = N ∪ {S }. Caso contr´rio, trocar os nomes de
a
S por S e de N por N ;
4. A nova gram´tica ser´ definida por:
a a
G = (N , T, P , S ).
134. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 134
• Exemplos:
1. P : S → aB, B → bB|ε. Solu¸˜o: Ne = {B} e
ca
P : S → aB|a, B → bB|b;
2. P : S → bDCe, D → dD|ε, C → cC|ε. Solu¸ao:
c˜
Ne = {D, C} e
P : S → bDCe|bCe|bDe|be, D → dD|d, C → cC|c;
3. P : S → aS|ε. Solu¸˜o: Ne = {S} e
ca
P : S → S|ε, S → aS|a.
135. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 135
• Remo¸˜o de Produ¸˜es Simples – produ¸˜es simples
ca co co
s˜o produ¸˜es na forma A → B, onde A, B ∈ N :
a co
1. Transformar a GLC em GLC ε-livre, se necess´rio;
a
2. Para todo n˜o-terminal de N , construir um
a
conjunto com os n˜o-terminais que ele pode derivar
a
em zero ou mais passos. Isto ´, ∀A ∈ N , construir
e
NA = {B|A ⇒∗ B};
3. Se B → α ∈ P e n˜o ´ produ¸˜o simples, adicione a
a e ca
P as produ¸oes A → α para todo A tal que
c˜
B ∈ NA ;
4. a GLC equivalente sem produ¸oes simples ´
c˜ e
G = (N, T, P , S).
136. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 136
• Exemplos:
1. P : S → bS|A, A → aA|a. Solu¸˜o: NS = {S, A},
ca
NA = {A}, e P : S → bS|aA|a, A → aA|a;
2. P : S → aSb|A, A → aA|B, B → bBc|bc. Solu¸˜o:
ca
NS = {S, A, B}, NA = {A, B}, NB = {B}, e
P : S → aSb|aA|bBc|bc, A → aA|bBc|bc,
B → bBc|bc.
137. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 137
• Fatora¸ao de GLC
c˜
Uma GLC est´ fatorada se ela ´ determin´
a e ıstica, isto
´, n˜o possui produ¸˜es cujo lado direito inicie com o
e a co
mesmo conjunto de s´ımbolos ou com s´ ımbolos que
gerem seq¨ˆncias que iniciem com o mesmo conjunto
ue
de s´
ımbolos. Por exemplo, uma gram´tica fatorada
a
n˜o poderia apresentar as seguintes regras:
a
A → aB|aC ,
pois ambas inicial com o terminal a.
Outro exemplo de gram´tica n˜o-fatorada ´:
a a e
S → A|B A → ac B → ab .
138. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 138
• Para fatorar:
1. as produ¸˜es que apresentam n˜o-determinismo
co a
direto, da forma A → αβ|αγ ser˜o substituidas por
a
A → αA
A → β|γ
sendo A um novo n˜o-terminal;
a
2. o n˜o-determinismo indireto ´ retirado fazendo, nas
a e
regras de produ¸ao, as deriva¸˜es necess´rias para
c˜ co a
torna-lo um n˜o-determinismo direto, resolvido com
a
o passo anterior.
139. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 139
Exemplos:
1. P : S → aA|aB, A → aA|a, B → b. Solu¸ao:
c˜
P : S → aS , S → A|B, A → aA , A → A|ε, B → b;
2. P : S → Ab|ab|baA, A → aab|b. Solu¸ao:
c˜
(n˜o-determinismo indireto)
a
P : S → aabb|bb|ab|baA, A → aab|b e
P : S → aS |bS , S → abb|b, S → b|aA, A → aab|b.
140. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 140
• Fatora¸ao ´ importante pois na implementa¸˜o de
c˜ e ca
um compilador, o mesmo deve seguir uma gram´tica
a
que n˜o apresente n˜o-determinismo pois, caso
a a
contr´rio, no processo de reconhecimento haveria
a
“retornos” (backtracking) que acabam reduzindo a
eficiˆncia do algoritmo de reconhecimento.
e
141. 3 ´ ˆ
GRAMATICA LIVRE DE CONTEXTO E AUTOMATO DE PILHA 141
• Teorema: Toda LLC sem ε pode ser definida por
uma gram´tica que n˜o cont´m s´
a a e ımbolos in´teis,
u
ε-produ¸˜es, nem produ¸˜es simples.
co co
• Prova: Conseq¨ˆncia dos algoritmos apresentados.
ue