Sunteți pe pagina 1din 16

Alfabeto, Palavra

Linguagens Formais
e Autómatos alfabeto – conjunto finito de sı́mbolos (Σ, T )
(elementos a, b, c, d, e)

Exemplos:

• {a, b, c, . . . , x, y, z}

• {0, 1, . . . , 9, +, −, ÷, ×, (, )}

• {InsereCartão, 0, 1, . . . , 9, Confirmar,
Vasco Pedro Corrigir, Anular, . . . }

palavra sobre o alfabeto Σ – sequência finita


Departamento de Informática de sı́mbolos de Σ (p, q, u, v, w, x, y, z)
Universidade de Évora
2008/2009 λ – palavra vazia (também ǫ e ε)

Vasco Pedro, LFA, UE, 2008/2009 1

Linguagem Operações sobre Palavras

|w| – comprimento da palavra w

Σ∗ – conjunto de todas as palavras sobre Σ a concatenação de duas palavras u, v ∈ Σ∗,


Definição recursiva: escrita u.v ou uv, é uma operação binária em
Σ∗ definida como:
(base) λ ∈ Σ∗
1. se |v| = 0, então v = λ e u.v = u
(passo recursivo) se w ∈ Σ∗ e a ∈ Σ, então 2. se |v| = n > 0, então v = wa, para alguma
wa ∈ Σ∗ palavra w com |w| = n − 1 e algum a ∈ Σ,
e u.v = (u.w)a
(fecho) w ∈ Σ∗ somente se pode ser ge-
rada por um número finito de aplica-
ções do passo recursivo a partir de λ a inversão de u ∈ Σ∗, escrita uR ou u−1, é
uma operação unária em Σ∗ definida como:

1. se |u| = 0, então u = λ e uR = λ
linguagem sobre o alfabeto Σ – conjunto de 2. se |u| = n > 0, então u = wa, para al-
palavras sobre Σ (L ⊆ Σ∗) guma palavra w com |w| = n − 1 e algum
a ∈ Σ, e uR = a.wR

Vasco Pedro, LFA, UE, 2008/2009 2 Vasco Pedro, LFA, UE, 2008/2009 3
Subpalavra Caracterização Finita de
Linguagens
u é subpalavra de v se existem x, y t.q.

v = xuy

• definição recursiva

Prefixo • através de operações sobre conjuntos

– concatenação de linguagens
• se x = λ então u é prefixo de v se X e Y forem linguagens

XY = X · Y = {xy | x ∈ X e y ∈ Y }

– exemplo
Sufixo
{1, 2, 3} · {1, 00, λ} =
{ 11, 21, 31,
• se y = λ então u é sufixo de v 100, 200, 300,
1, 2, 3 }

(u, v, x, y ∈ Σ∗)
Vasco Pedro, LFA, UE, 2008/2009 4 Vasco Pedro, LFA, UE, 2008/2009 5

Estrela de Kleene Conjuntos Regulares

• seja X um conjunto • os conjuntos regulares sobre o alfabeto


Σ são definidos como
X∗ = Xn X+ = Xn
[ [

n≥0 n>0 ∅, {λ} e {a}, para todo a ∈ Σ, são


(base)

conjuntos regulares sobre Σ


em alternativa, X + = XX ∗
sejam X e Y conjuntos re-
(passo recursivo)

gulares sobre Σ; os conjuntos


• também conhecido como operador de fe- X ∪Y
cho ou de iteração XY
X∗
são conjuntos regulares sobre Σ
• exemplo
(fecho) X é um conjunto regular sobre Σ
– linguagem dos números naturais sem
somente se puder ser construı́do atra-
zeros à esquerda
vés de um número finito de aplicações
do passo recursivo a partir dos elemen-
{0} ∪ {1, 2, . . . , 9}{0, 1, . . . , 9}∗
tos base

Vasco Pedro, LFA, UE, 2008/2009 6 Vasco Pedro, LFA, UE, 2008/2009 7
Expressões Regulares (1) Expressões Regulares (2)

Linguagem Representada
• as expressões regulares sobre o alfabeto
Σ são definidas como
L(∅) = ∅
(base) ∅, λ e a, para todo a ∈ Σ, são ex-
pressões regulares sobre Σ L(λ) = {λ}

sejam u e v expressões re-


(passo recursivo)

gulares sobre Σ; as expressões L(a) = {a} (a ∈ Σ)


(u ∪ v)
(uv) L(u ∪ v) = L(u) ∪ L(v)
(u∗)
são expressões regulares sobre Σ
L(uv) = L(u)L(v)
(fecho) u é uma expressão regular sobre Σ
somente se puder ser construı́da atra-
L(u∗) = L(u)∗
vés de um número finito de aplicações
do passo recursivo a partir dos elemen-
tos base • duas expressões regulares são equivalen-
tes se representam a mesma linguagem

Vasco Pedro, LFA, UE, 2008/2009 8 Vasco Pedro, LFA, UE, 2008/2009 9

Expressões Regulares (3) Autómatos Finitos


Propriedades Deterministas

∅u = u∅ = ∅ λu = uλ = u Um autómato finito determinista (AFD)


é um tuplo M = (Q, Σ, δ, q0, F ) onde
∅∗ = λ λ∗ = λ

u∪v =v∪u u∪∅=u • Q é um conjunto finito de estados;

u∪u=u u∗ = (u∗)∗
• Σ é um conjunto finito de sı́mbolos (al-
u(v ∪ w) = uv ∪ uw u∗ = λ ∪ uu∗ fabeto);

(u ∪ v)w = uw ∪ vw
• δ é a função de transição, uma função
(uv)∗u = u(vu)∗ total de Q × Σ em Q;
(u ∪ v)∗ = (u∗ ∪ v)∗
• q0 ∈ Q é o estado inicial do autómato; e
= u∗(u ∪ v)∗ = (u ∪ vu∗)∗

= (u∗v ∗)∗
• F ⊆ Q é o conjunto dos estados de
= (u∗v)∗u∗ = u∗(vu∗)∗ aceitação.

Vasco Pedro, LFA, UE, 2008/2009 10 Vasco Pedro, LFA, UE, 2008/2009 11
Configuração e Linguagem Reconhecida
Computação Seja M = (Q, Σ, δ, q0, F ) um AFD.

A função de transição estendida δ̂ : Q ×


Seja M = (Q, Σ, δ, q0, F ) um AFD.
Σ∗ → Q de um AFD é definida por

A configuração de um AF é um par [q, w] ∈ δ̂(q, λ) = q


Q × Σ∗, onde q é o estado corrente do au- δ̂(q, a) = δ(q, a)
tómato e w é a parte da palavra ainda por δ̂(q, wa) = δ(δ̂(q, w), a)
processar.
Uma palavra w é aceite pelo AFD sse

A computação de um AFD M para a pa- δ̂(q0, w) ∈ F


lavra w = a1a2 . . . an ∈ Σ∗ é a sequência de
configurações
A linguagem reconhecida (ou aceite) por
[s0, a1a2 . . . an] ⊢M [s1, a2 . . . an] ⊢M · · · ⊢M [sn, λ] M é o conjunto das palavras aceites por M
com L(M ) = {w | δ̂(q0, w) ∈ F }
s0 = q0 e si = δ(si−1, ai),
para i > 0. Dois autómatos finitos são equivalentes se
reconhecem a mesma linguagem.
Vasco Pedro, LFA, UE, 2008/2009 12 Vasco Pedro, LFA, UE, 2008/2009 13

Autómatos Finitos Não Autómatos Finitos Não


Deterministas (1) Deterministas (2)
Um autómato finito não determinista é
um tuplo M = (Q, Σ, δ, q0, F ) onde

Seja M = (Q, Σ, δ, q0, F ) um autómato finito


• Q é um conjunto finito de estados; não determinista.

• Σ é um conjunto finito de sı́mbolos (al- Uma palavra w é aceite por M se existe


fabeto); uma computação que termina num estado de
aceitação depois de terem sido processados
• δ é a função de transição, uma função todos os seus sı́mbolos
total de Q × Σ em P(Q);
[q0, w] ⊢∗M [qi, λ], onde qi ∈ F

• q0 ∈ Q é o estado inicial do autómato; e


A linguagem reconhecida por M é o con-
junto das palavras aceites por M
• F ⊆ Q é o conjunto dos estados de (
existe uma computação
)
aceitação. L(M ) = w

∗ [q , λ] em que q ∈ F
[q0, w] ⊢
M i i

Qualquer autómato finito determinista é um


autómato finito não determinista.
Vasco Pedro, LFA, UE, 2008/2009 14 Vasco Pedro, LFA, UE, 2008/2009 15
Autómatos Finitos Não Eliminação do Não
Deterministas com Determinismo
Transições λ O λ-fecho de um estado qi é o conjunto de
Um autómato finito não determinista com todos os estados alcançáveis através de zero
transições λ (AFND) é um tuplo M = (Q, ou mais transições λ a partir de qi
Σ, δ, q0, F ) onde

• qi ∈ λ-fecho(qi)
• Q é um conjunto finito de estados;
• se qj ∈ λ-fecho(qi) e qk ∈ δ(qj , λ), então
• Σ é um conjunto finito de sı́mbolos (al- qk ∈ λ-fecho(qi)
fabeto);
• mais nenhum estado está em λ-fecho(qi)

• δ é a função de transição, uma função


de Q × (Σ ∪ {λ}) em P(Q); A função de transição de entrada t de um
AFND M é uma função de Q × Σ em P(Q)
definida por
• q0 ∈ Q é o estado inicial do autómato; e
[
t(qi, a) = λ-fecho(δ(qj , a))
• F ⊆ Q é o conjunto dos estados de qj ∈λ-fecho(qi)
aceitação.

Vasco Pedro, LFA, UE, 2008/2009 16 Vasco Pedro, LFA, UE, 2008/2009 17

Minimização de Cálculo dos Estados


Autómatos Finitos Equivalentes
Deterministas Seja M = (Q, Σ, δ, q0, F ) um AFD.

1. Seja P = {Q \ F, F } uma partição de Q.

2. Enquanto existirem
Seja M = (Q, Σ, δ, q0, F ) um autómato finito
determinista. Dois estados qi e qj são equi- p, p′ ∈ P a∈Σ qi , qj ∈ p
valentes se
tais que δ(qi, a) ∈ p′ e δ(qj , a) ∈
6 p′, fazer

δ̂(qi, u) ∈ F ≡ δ̂(qj , u) ∈ F P ← P \ {p} ∪ {q ∈ p | δ(q, a) ∈ p′}


6 p′}
∪ {q ∈ p | δ(q, a) ∈
para qualquer u ∈ Σ∗.
Este algoritmo calcula a partição P de Q tal
que, para quaisquer estados qi e qj
Dois estados equivalentes dizem-se indistin-
guı́veis. • se qi e qj pertencem ao mesmo subcon-
junto, qi e qj são equivalentes;

• se qi e qj pertencem a subconjuntos dis-


tintos, qi e qj não são equivalentes.

Vasco Pedro, LFA, UE, 2008/2009 18 Vasco Pedro, LFA, UE, 2008/2009 19
Construção do AFD Composição de
Mı́nimo Autómatos
1. Calcular os estados equivalentes; seja P a Seja M = (Q, Σ, δ, q0, F ) um AFND. Existe
partição determinada. um AFND

2. Para todos os p ∈ P e todos os a ∈ Σ, M ′ = (Q ∪ {q0′ , qf }, Σ, δ ′, q0′ , {qf })


seja q um estado em p e seja p′ o elemento equivalente a M em que
de P a que δ(q, a) pertence; então
• não há transições para o estado q0′
δ ′(p, a) = p′.
• o único estado de aceitação é qf

3. O AFD mı́nimo (ou reduzido) equiva- • não há transições a partir do estado qf
lente a M é
A função de transição de M ′ é obtida acres-
M ′ = (P, Σ, δ ′, q0′ , F ′) centando a δ
onde
• (q0′ , λ, {q0} )
• q0′ é o elemento de P que contém q0; • uma transição λ de cada q ∈ F para qf

• F ′ = {p ∈ P | p ⊆ F }. NB: {q0′ , qf } ∩ Q = ∅, q0′ =


6 qf

Vasco Pedro, LFA, UE, 2008/2009 20 Vasco Pedro, LFA, UE, 2008/2009 21

Composições Pumping Lemma


Sejam Mv e Mw dois autómatos finitos nas
condições do acetato anterior
Mv = (Qv , Σ, δv , q0v , {qfv })
Mw = (Qw , Σ, δw , q0w , {qfw })
Teorema (Pumping Lemma para lingua-
Definem-se os autómatos finitos seguintes gens regulares) Seja L uma linguagem re-
gular e seja k o número de estados de um
M. = (Qv ∪ Qw , Σ, δ., q0v , {qfw }) AFD que a reconhece. Então qualquer pala-
n o vra p de L, tal que |p| ≥ k, pode ser escrita
com δ. = δv ∪ δw ∪ (qfv , λ, {q0w })
como
M∪ = (Qv ∪ Qw ∪ {q0, qf }, Σ, δ∪, q0, {qf })
uvw, com |uv| ≤ k e |v| > 0
com δ∪ = δnv ∪ δw ∪
e
(q0, λ, {q0v , q0w ),
uv iw ∈ L, para todo o i ≥ 0.
o
(qfv , λ, {qf }), (qfw , λ, {qf })

M∗ = (Qv ∪ {q0, qf }, Σ, δ∗, q0, {qf })


n
com δ∗ = δv ∪ (q0, λ, {q0v , qf }),
o
(qfv , λ, {q0v , qf })

NB: {q0, qf } ∩ (Qv ∪ Qw ) = ∅, q0 6= qf


Vasco Pedro, LFA, UE, 2008/2009 21-1 Vasco Pedro, LFA, UE, 2008/2009 22
Exemplo de Aplicação do Gramáticas (1)
Pumping Lemma Para 1. hfrasei → hsujeitoi hfrase-verbali
2. hfrasei → hsujeitoi hverboi hcompl-directoi
Linguagens Regulares 3. hsujeitoi → hsubst-próprioi
4. → hartigoi hsubst-comumi
5. hsubst-próprioi → John
6. → Jill
L = {anbn | n ≥ 0} 7. hsubst-comumi → car
8. → hamburger
Se L for uma linguagem regular, existe um 9. hartigoi → a
AFD que a reconhece. 10. → the
11. hfrase-verbali → hverboi hadvérbioi
Sejam k o número de estados desse autómato 12. → hverboi
e p = ak bk . Qualquer decomposição de p nas 13. hverboi → drives
condições do Pumping Lemma será da forma 14. → eats
u v w 15. hadvérbioi → slowly
aj al ak−j−l bk 16. → frequently
com j + l ≤ k e l > 0.
sı́mbolos terminais: John, Jill, hamburger,
Como car, a, the, drives, eats, slowly, frequently

uv 0w = aj (al )0ak−j−l bk = ak−l bk ∈


6 L
sı́mbolos não terminais: hfrasei, hsujeitoi,
porque l > 0 e k − l 6= k, L não é uma lingua- hfrase-verbali, hverboi, . . .
gem regular.
Vasco Pedro, LFA, UE, 2008/2009 22-1 Vasco Pedro, LFA, UE, 2008/2009 23

Gramáticas (2) Gramáticas Independentes do


1. hfrasei → hsujeitoi hfrase-verbali Contexto
2. → hsujeitoi hverboi hcompl-directoi
3. hsujeitoi → hsubst-próprioi
4. → hartigoi hsubst-comumi Uma gramática independente do contex-
5. hsubst-próprioi → John to (GIC) é um tuplo G = (V, Σ, P, S) onde
6. → Jill
7. hsubst-comumi → car
8. → hamburger • V é o conjunto finito dos sı́mbolos não
9. hartigoi → a terminais (A, B, C, . . .);
10. → the
11. hfrase-verbali → hverboi hadvérbioi
12. → hverboi • Σ é o conjunto finito dos sı́mbolos ter-
13. hverboi → drives minais (alfabeto);
14. → eats
15. hadvérbioi → slowly
16. → frequently • P ⊆ V × (V ∪ Σ)∗ é um conjunto finito de
17. hadjectivosi → hadjectivoi hadjectivosi produções; e
18. → λ
19. hadjectivoi → big
20. → juicy • S ∈ V é o sı́mbolo inicial da gramática.
21. → brown
22. hcompl-directoi → hadjectivosi hsubst-próprioi
23. → hartigoi hadjectivosi NB: V ∩ Σ = ∅.
hsubst-comumi
Vasco Pedro, LFA, UE, 2008/2009 24 Vasco Pedro, LFA, UE, 2008/2009 25
Derivação Linguagem Gerada

Seja G = (V, Σ, P, S) uma GIC. Seja G = (V, Σ, P, S) uma GIC.

Se u, v ∈ (V ∪ Σ)∗, A ∈ V e existe uma O conjunto das palavras deriváveis a partir


produção A → w em P , então uAv deriva de v ∈ (V ∪ Σ)∗, D(v), define-se como
directamente uwv

D(v) = {w | v ⇒ w}
uAv ⇒G uwv

A linguagem gerada por G, L(G), é o con-


Se existem u0, u1, . . . , un ∈ (V ∪ Σ)∗, n ≥ 0, junto das palavras sobre Σ∗ deriváveis a partir
tais que de S
u = u0 ⇒G u1 ⇒G . . . ⇒G un = v L(G) = {w | w ∈ Σ∗ e S ⇒ w}

então u deriva v em n passos


n L(G) é uma linguagem independente do
u ⇒G v
contexto.
n
Se u ⇒G v para algum n ≥ 0, u deriva v
Duas gramáticas são equivalentes se geram

u ⇒G v a mesma linguagem.

Vasco Pedro, LFA, UE, 2008/2009 26 Vasco Pedro, LFA, UE, 2008/2009 27

Recursividade Independência das


Sub-derivações
Uma produção (directamente) recursiva
tem a forma
Lema Sejam G = (V, Σ, P, S) uma GIC e
A → uAv n
v ⇒ w uma derivação em G em que v tem a
forma
O sı́mbolo não-terminal A é recursivo se v = w1 A1 w2 A2 . . . wk Ak wk+1
+
A ⇒ uAv
com wi ∈ Σ∗. Então existem palavras pi ∈
Uma derivação com a forma (V ∪ Σ)∗ que satisfazem
+
A ⇒ w ⇒ uAv i t
1. Ai ⇒ pi
em que A não ocorre em w, diz-se indirec-
tamente recursiva. 2. w = w1 p1 w2 p2 . . . wk pk wk+1

k
X
3. ti = n.
i=1
(u, v, w ∈ (V ∪ Σ)∗)

Vasco Pedro, LFA, UE, 2008/2009 28 Vasco Pedro, LFA, UE, 2008/2009 29
Derivação Esquerda e Árvore de Derivação
Direita Seja G = (V, Σ, P, S) uma GIC.

A árvore de derivação correspondente à de-



rivação S ⇒ w é formada de acordo com as
Numa derivação esquerda (⇒L), em todos seguintes regras:
os passos é reescrito o sı́mbolo não terminal
mais à esquerda.
1. A raiz da árvore é o sı́mbolo inicial S;

Numa derivação direita (⇒R), em todos os


passos é reescrito o sı́mbolo não terminal 2. Se A → x1x2 . . . xn, com xi ∈ V ∪ Σ, foi a
mais à direita. produção usada para reescrever o sı́mbolo
A, então o nó A correspondente tem fi-
lhos x1, x2, . . . , xn, por esta ordem;
Teorema (existência de derivação esquer-
da) Seja G = (V, Σ, P, S) uma GIC. Uma pa-
3. Se A → λ foi a produção usada para re-
lavra w ∈ Σ∗ pertence a L(G) sse
escrever o sı́mbolo A, então o nó A cor-

S ⇒L w respondente tem λ como único filho.

Uma palavra tem árvore de derivação A se


for a concatenação (dos sı́mbolos) das folhas
desta.
Vasco Pedro, LFA, UE, 2008/2009 30 Vasco Pedro, LFA, UE, 2008/2009 31

Ambiguidade Expressões Aritméticas


e Ambiguidade
Uma gramática G diz-se ambı́gua se al-
guma palavra de L(G) tem, pelo menos: 1a Versão (ambı́gua)

GEA = ({E}, {n, +, −, ×, ÷}, PEA, E)


• duas árvores de derivação distintas; ou
com produções PEA:

E →E+E |E−E |E×E |E÷E |n


• duas derivações esquerdas distintas; ou

2a Versão — Prioridades (ambı́gua)


• duas derivações direitas distintas.
E→E+E |E−E |T
T →T ×T |T ÷T |F
Uma linguagem é inerentemente ambı́gua F →n
se não existir uma gramática não ambı́gua
que a gere.
3a Versão — Associatividade (à esquerda)

E→E+T |E−T |T
{aibj ck | i = j ou j = k}
T →T ×F |T ÷F |F
F →n

Vasco Pedro, LFA, UE, 2008/2009 32 Vasco Pedro, LFA, UE, 2008/2009 32-1
Gramáticas Regulares Autómatos de Pilha (1)

Uma gramática regular é uma gramática


Autómato de pilha = autómato finito + pilha
independente do contexto em que todas as
produções têm uma das formas
Um autómato de pilha (AP) é um tuplo
M = (Q, Σ, Γ, δ, q0, F ) onde
A→a

A → aB • Q, Σ, q0 e F são como nos autómatos


finitos;
A→λ

onde A, B ∈ V e a ∈ Σ. • Γ é o alfabeto da pilha, um conjunto


finito de sı́mbolos (A, B, C, . . . ); e
Uma linguagem gerada por uma gramática
regular é uma linguagem regular. • δ é a função de transição do autómato,
uma função de Q × (Σ ∪ {λ}) × (Γ ∪ {λ})
Uma gramática não regular pode gerar uma em P(Q × (Γ ∪ {λ})).
linguagem regular.

α, β, γ, . . . denotam palavras sobre Γ

Vasco Pedro, LFA, UE, 2008/2009 33 Vasco Pedro, LFA, UE, 2008/2009 34

Autómatos de Pilha (2) Autómatos de Pilha (3)

Uma configuração de um autómato de pilha


é um triplo [q, w, α] ∈ Q × Σ∗ × Γ∗ Uma palavra w ∈ Σ∗ é aceite pelo autómato
de pilha M se existe uma computação
Transições:
[q0, w, λ] ⊢∗M [qf , λ, λ]
• [q ′, λ] ∈ δ(q, a, λ) com qf ∈ F (critério de aceitação por es-
[q, aw, α] ⊢ [q ′, w, α] tado de aceitação e pilha vazia).

• [q ′, λ] ∈ δ(q, a, A) A linguagem reconhecida pelo autómato de


pilha M é o conjunto de todas as palavras
[q, aw, Aα] ⊢ [q ′, w, α]
aceites por M .
• [q ′, B] ∈ δ(q, a, λ)

[q, aw, α] ⊢ [q ′, w, Bα] Um autómato de pilha é determinista se,


qualquer que seja a combinação de estado,
• [q ′, B] ∈ δ(q, a, A)
sı́mbolo de entrada e topo da pilha, existe
[q, aw, Aα] ⊢ [q ′, w, Bα] no máximo uma transição aplicável.

Configuração inicial: [q0, w, λ]

Vasco Pedro, LFA, UE, 2008/2009 35 Vasco Pedro, LFA, UE, 2008/2009 36
Variantes Pumping Lemma (2)

Um autómato de pilha atómico é um au-


tómato de pilha que só tem transições das Teorema (Pumping Lemma para lingua-
formas gens independentes do contexto) Seja L
[qj , λ] ∈ δ(qi, a, λ) uma linguagem independente do contexto.
Então existe um k tal que para qualquer pa-
[qj , λ] ∈ δ(qi, λ, A) lavra p de L, com |p| ≥ k, existe uma decom-
posição da forma
[qj , A] ∈ δ(qi, λ, λ)

Um autómato de pilha estendido pode con- u v w x y, com |vwx| ≤ k e |v| + |x| > 0
ter transições em que são empilhados mais
do que um sı́mbolo, como tal que

[qj , BCD] ∈ δ(qi, u, A)


u v i w xi y ∈ L, para todo o i ≥ 0.
Uma linguagem reconhecida por um AP es-
tendido é também reconhecida por um AP.
Uma linguagem reconhecida por um AP é
também reconhecida por um AP atómico.

Vasco Pedro, LFA, UE, 2008/2009 37 Vasco Pedro, LFA, UE, 2008/2009 38

Hierarquia de Chomsky Grafo de uma Gramática


Seja G = (V, Σ, P, S) uma gramática.

G é uma gramática

Seja G = (V, Σ, P, S) uma GIC.


• sem restrições (ou tipo 0) se todas as
suas produções tiverem a forma
O grafo esquerdo da gramática G é o grafo
u→v orientado etiquetado g(G) = (N, P, A) onde
com u ∈ (V ∪ Σ)+ e v ∈ (V ∪ Σ)∗;

N = {w ∈ (V ∪ Σ)∗ | S ⇒L w}
• dependente do contexto (ou tipo 1) se
todas as suas produções tiverem a forma
A = {[v, w, r] ∈ N × N × P | v ⇒L w por
u→v aplicação da produção r}
com u, v ∈ (V ∪ Σ)+ e |u| ≤ |v|;

• independente do contexto (ou tipo 2); O grafo de uma gramática não ambı́gua é
ou uma árvore.

• regular (ou tipo 3).

Vasco Pedro, LFA, UE, 2008/2009 39 Vasco Pedro, LFA, UE, 2008/2009 40
Análise Sintáctica Análise Sintáctica
Descendente em Largura
Sentido entrada: GIC G = (V, Σ, P, S) e p ∈ Σ∗
cria T com raiz S % árvore de pesquisa
Q ← {S} % fila
• descendente (parte de S) repete
q ← remove(Q) % q = uAv, u ∈ Σ∗, A ∈ V
i←0
• ascendente (parte da palavra) done ← f alse
repete
se não há uma produção para A com
Estratégia número maior que i então
done ← true
senão
• em largura seja A → w a primeira produção para
A com número j > i
se uwv ∈6 Σ∗ e o prefixo terminal de
• em profundidade uwv é um prefixo de p então
insere(uwv, Q)
acrescenta o nó uvw a T
i←j
Se w = uAv, u ∈ Σ∗ e A ∈ V , u é o prefixo até done ou p = uwv
terminal de w até vazia(Q) ou p = uwv
se p = uwv então ACEITA senão REJEITA
Vasco Pedro, LFA, UE, 2008/2009 41 Vasco Pedro, LFA, UE, 2008/2009 42

Análise Sintáctica Análise Sintáctica


Descendente em Profundidade Ascendente em Largura
entrada: GIC G = (V, Σ, P, S) e p ∈ Σ∗
S ← {[S, 0]} % pilha
repete
[q, i] ← desempilha(S) entrada: GIC G = (V, Σ, P, S) e p ∈ Σ∗
inviável ← f alse cria T com raiz p % árvore de pesquisa
repete Q ← {p} % fila
seja q = uAv, com u ∈ Σ∗ e A ∈ V
repete
se u não é prefixo de p então
q ← remove(Q)
inviável ← true
se não há uma produção para A com para cada produção A → w ∈ P
número maior que i então % TRANSFERÊNCIA(S)
inviável ← true para cada decomposição uwv de q,
se não inviável então com v ∈ Σ∗
seja A → w a primeira produção para insere(uAv, Q) % REDUÇÃO
A com número j > i acrescenta o nó uAv aos filhos
empilha([q, j], S) de q em T
q ← uwv até q = S ou vazia(Q)
i←0
se q = S então ACEITA senão REJEITA
até inviável ou q ∈ Σ∗
até q = p ou vazia(S)
se q = p então ACEITA senão REJEITA
Vasco Pedro, LFA, UE, 2008/2009 43 Vasco Pedro, LFA, UE, 2008/2009 44
Análise Sintáctica Transformação de
Ascendente em Profundidade Gramáticas (1)
entrada: GIC G = (V, Σ, P, S), com S não
recursivo, e p ∈ Σ∗
Sı́mbolo inicial não recursivo
S ← {[λ, 0, p]} % pilha Qualquer que seja a gramática independente
repete
do contexto G = (V, Σ, P, S), existe uma gra-
[u, i, v] ← desempilha(S)
mática independente do contexto equivalente
inviável ← f alse
repete G′ = (V ′, Σ, P ′, S ′) onde o sı́mbolo inicial é
seja j > i o no da 1a produção da forma não recursivo.
· A → w com u = qw e A 6= S, ou
· S → w com u = w e v = λ
se existe tal j então • Se o sı́mbolo inicial de G é não recursivo
empilha([u, j, v], S)
u ← qA % REDUÇÃO G′ = G
i←0
se não existe tal j e v 6= λ então
TRANSFERÊNCIA(u, v) • Se o sı́mbolo inicial de G é recursivo
i←0
se não existe tal j e v = λ então
inviável ← true G′ = (V ∪ {S ′}, Σ, P ∪ {S ′ → S}, S ′)
até u = S ou inviável
até u = S ou vazia(S) (S ′ ∈
6 V)
se vazia(S) então REJEITA senão ACEITA
Vasco Pedro, LFA, UE, 2008/2009 45 Vasco Pedro, LFA, UE, 2008/2009 46

1. Tornar o Sı́mbolo Transformação de


Inicial Não Recursivo Gramáticas (2)

Gramática original:
Seja G = (V, Σ, P, S) uma GIC.

G = ({L, M, N, O}, {a, b, c, d}, P, L)


O conjunto dos sı́mbolos que geram λ é
P : L → M b | aLb | λ

M → Lb | M LN | λ Λ = {A ∈ V | A ⇒ λ}
N → N aN | N bO
O → cO | λ
Uma gramática não contraı́vel não contém
sı́mbolos que geram λ.
Gramática equivalente com sı́mbolo inicial
não recursivo:
Numa gramática essencialmente não con-
traı́vel só o sı́mbolo inicial pode gerar λ.
G′ = ({L′, L, M, N, O}, {a, b, c, d}, P ′, L′)
P ′ : L′ → L
L → M b | aLb | λ Introdução de produções
M → Lb | M LN | λ ∗
Se A ⇒G u, então G′ = (V, Σ, P ∪ {A → u}, S)
N → N aN | N bO
O → cO | λ é equivalente a G.

Vasco Pedro, LFA, UE, 2008/2009 46-1 Vasco Pedro, LFA, UE, 2008/2009 47
Eliminação das 2. Eliminar Produções-λ
Produções-λ
G′ = ({L′, L, M, N, O}, {a, b, c, d}, P ′, L′)
P ′ : L′ → L
L → M b | aLb | λ
Seja G = (V, Σ, P, S) uma GIC com S não M → Lb | M LN | λ
recursivo. N → N aN | N bO
O → cO | λ
A gramática GL = (V, Σ, PL, S), equivalente
a G, é uma gramática essencialmente não Sı́mbolos que geram λ:
contraı́vel cujas produções PL são:
Λ = {L′, L, M, O}

1. Todas as produções de G que não são pro-


duções-λ; Gramática equivalente (essencialmente) não
contraı́vel:
2. Todas as produções que se obtêm elimi-
nando um ou mais sı́mbolos de Λ do corpo GL = ({L′, L, M, N, O}, {a, b, c, d}, PL, L′)
de uma produção de G, desde que o corpo
PL : L′ → L | λ
resultante tenha pelo menos um sı́mbolo; e L → M b | aLb | b | ab
M → Lb | M LN | b | LN | M N | N
3. A produção S → λ sse S ∈ Λ. N → N aN | N bO | N b
O → cO | c

Vasco Pedro, LFA, UE, 2008/2009 48 Vasco Pedro, LFA, UE, 2008/2009 48-1

Eliminação das Produções 3. Eliminar as Produções


Unitárias (A → B) Unitárias

CHAIN
Seja G = (V, Σ, P, S) uma GIC essencialmen- L′ {L′, L}
te não contraı́vel. L {L}
M {M, N }
N {N }
Para cada A ∈ V , seja CHAIN(A) o conjunto
O {O}

{B ∈ V | A ⇒G B}
Gramática sem produções unitárias, equiva-
A gramática GC = (V, Σ, PC , S) é uma gra- lente a GL:
mática equivalente a G onde PC consiste nas
produções A → w que satisfazem, para algum GC = ({L′, L, M, N, O}, {a, b, c, d}, PC , L′)
B ∈V:
PC : L′ → λ | M b | aLb | b | ab
1. B ∈ CHAIN(A) L → M b | aLb | b | ab
2. B → w ∈ P M → Lb | M LN | b | LN | M N | N aN |
N bO | N b
3. w ∈
6 V N → N aN | N bO | N b
O → cO | c

Vasco Pedro, LFA, UE, 2008/2009 49 Vasco Pedro, LFA, UE, 2008/2009 49-1
Sı́mbolos Inúteis 4. Eliminar os Sı́mbolos
Um sı́mbolo x ∈ V ∪ Σ é útil se existe uma Inúteis
derivação
∗ ∗ 1. PRODUTIVOS = {L′, L, M, O}
S ⇒ uxv ⇒ w
onde u, v ∈ (V ∪ Σ)∗ e w ∈ Σ∗. Produções sem sı́mbolos improdutivos:

Um sı́mbolo que não é útil é inútil. L′ → λ | M b | aLb | b | ab


L → M b | aLb | b | ab
Um sı́mbolo não terminal A é produtivo se M → Lb | b

A ⇒ w, com w ∈ Σ∗. O → cO | c

Um sı́mbolo não terminal que não é produtivo


2. ACESSÍVEIS = {L′, L, M } ∪ {a, b}
é improdutivo.

Gramática sem sı́mbolos inúteis (improduti-


Um sı́mbolo não terminal A é acessı́vel se
∗ vos ou inacessı́veis), equivalente a GC :
S ⇒ uAv, com u, v ∈ (V ∪ Σ)∗.

Um sı́mbolo não terminal que não é acessı́vel GU = ({L′, L, M }, {a, b}, PU , L′)
é inacessı́vel. PU : L′ → λ | M b | aLb | b | ab
L → M b | aLb | b | ab
M → Lb | b
Um sı́mbolo é útil se for produtivo e acessı́vel.
Vasco Pedro, LFA, UE, 2008/2009 50 Vasco Pedro, LFA, UE, 2008/2009 50-1

Forma Normal de Chomsky 5. Construir a Forma


Normal de Chomsky

Uma GIC G = (V, Σ, P, S) está na forma nor- 1. L′ → λ | M B | ALB | b | AB


mal de Chomsky se todas as suas produções B→b
têm uma das formas A→a
L → M B | ALB | b | AB
M → LB | b
• A → BC
Gramática na Forma Normal de Chomsky,
equivalente a GU :
• A→a

GN C = ({L′, L, M, A, B, X}, {a, b}, PN C , L′)


• S→λ
PN C : L′ → λ | M B | AX | b | AB
X → LB
B→b
onde a ∈ Σ e B, C ∈ V − {S}.
A→a
L → M B | AX | b | AB
M → LB | b

Vasco Pedro, LFA, UE, 2008/2009 51 Vasco Pedro, LFA, UE, 2008/2009 51-1
Forma Normal de Greibach 6. Construir a Forma
Normal de Greibach (1)

Uma GIC G = (V, Σ, P, S) está na forma nor- 1. Ordem dos não terminais: L′ X B A L M
mal de Greibach se todas as suas produções
têm uma das formas 2. Todas as produções da forma A1 → A2w
satisfazem A1 < A2.
• A → aA1A2 . . . An
L′ → λ | M B | AX | b | AB
X → LB
• A→a B→b
A→a
L → M B | aX | b | aB
• S→λ (M → M BB | aXB | bB | aBB | b)
M → aXBZ | bBZ | aBBZ | bZ |
aXB | bB | aBB | b
onde a ∈ Σ e Ai ∈ V −{S}, para i = 1, 2, . . . , n.
Z → BBZ | BB

(A1, A2, ∈ V e w ∈ V ∗)

Vasco Pedro, LFA, UE, 2008/2009 52 Vasco Pedro, LFA, UE, 2008/2009 52-1

6. Construir a Forma Eliminação da Recursividade


Normal de Greibach (2) Directa à Esquerda
Se A é um sı́mbolo não terminal com pelo
Gramática na Forma Normal de Greibach, menos uma produção da forma
equivalente a GN C :
A → Au
substituem-se as produções
GG = ({L′, L, M, A, B, X, Z}, {a, b}, PG, L′)
PG : L′ → λ | aXBZB | bBZB | aBBZB | bZB |
aXBB | bBB | aBBB | bB | aX | b | A → Au1 | Au2 | . . . | Auj | v1 | v2 | . . . | vk
aB
X → aXBZBB | bBZBB | aBBZBB |
bZBB | aXBBB | bBBB | aBBBB | onde o primeiro sı́mbolo dos vi não é A, pelas
bBB | aXB | bB | aBB produções
B→ b
A→ a
L → aXBZB | bBZB | aBBZB | bZB | A → v1 Z | v2 Z | . . . | vk Z | v1 | v2 | . . . | vk
aXBB | bBB | aBBB | bB | aX | b |
Z → u1 Z | u2 Z | . . . | uj Z | u1 | u2 | . . . | uj
aB
M → aXBZ | bBZ | aBBZ | bZ |
aXB | bB | aBB | b onde Z é um novo sı́mbolo (não terminal).
Z → bBZ | bB
(ui, vi ∈ (V ∪ Σ)∗)
Vasco Pedro, LFA, UE, 2008/2009 52-2 Vasco Pedro, LFA, UE, 2008/2009 53

S-ar putea să vă placă și