Sei sulla pagina 1di 112

Linguagens Formais

e Automatos
Vasco Pedro
Departamento de Informatica
Universidade de

Evora
2008/2009
Alfabeto, Palavra
alfabeto conjuntonitode smbolos (, T)
(elementos a, b, c, d, e)
Exemplos:
a, b, c, . . . , x, y, z
0, 1, . . . , 9, +, , , , (, )
InsereCartao, 0, 1, . . . , 9, Conrmar,
Corrigir, Anular, . . .
palavra sobre o alfabeto sequencia nita
de smbolos de (p, q, u, v, w, x, y, z)
palavra vazia (tambem e )
Vasco Pedro, LFA, UE, 2008/2009 1
Linguagem

conjunto de todas as palavras sobre


Deni cao recursiva:
(base)

(passo recursivo) se w

e a , entao
wa

(fecho) w

somente se pode ser ge-


rada por um numero nito de aplica-
coes do passo recursivo a partir de
linguagem sobre o alfabeto conjunto de
palavras sobre (L

)
Vasco Pedro, LFA, UE, 2008/2009 2
Opera coes sobre Palavras
[w[ comprimento da palavra w
a concatenacao de duas palavras u, v

,
escrita u.v ou uv, e uma operacao binaria em

denida como:
1. se [v[ = 0, entao v = e u.v = u
2. se [v[ = n > 0, entao v = wa, para alguma
palavra w com [w[ = n1 e algum a ,
e u.v = (u.w)a
a inversao de u

, escrita u
R
ou u
1
, e
uma operacao unaria em

denida como:
1. se [u[ = 0, entao u = e u
R
=
2. se [u[ = n > 0, entao u = wa, para al-
guma palavra w com [w[ = n1 e algum
a , e u
R
= a.w
R
Vasco Pedro, LFA, UE, 2008/2009 3
Subpalavra
u e subpalavra de v se existem x, y t.q.
v = xuy
Prexo
se x = entao u e prexo de v
Suxo
se y = entao u e suxo de v
(u, v, x, y

)
Vasco Pedro, LFA, UE, 2008/2009 4
Caracteriza cao Finita de
Linguagens
deni cao recursiva
atraves de opera coes sobre conjuntos
concatenacao de linguagens
se X e Y forem linguagens
XY = X Y = xy [ x X e y Y
exemplo
1, 2, 3 1, 00, =
11, 21, 31,
100, 200, 300,
1, 2, 3
Vasco Pedro, LFA, UE, 2008/2009 5
Estrela de Kleene
seja X um conjunto
X

=
_
n0
X
n
X
+
=
_
n>0
X
n
em alternativa, X
+
= XX

tambem conhecido como operador de fe-


cho ou de iteracao
exemplo
linguagem dos numeros naturais sem
zeros `a esquerda
0 1, 2, . . . , 90, 1, . . . , 9

Vasco Pedro, LFA, UE, 2008/2009 6


Conjuntos Regulares
os conjuntos regulares sobre o alfabeto
sao denidos como
(base) , e a, para todo a , sao
conjuntos regulares sobre
(passo recursivo) sejam X e Y conjuntos re-
gulares sobre ; os conjuntos
X Y
XY
X

sao conjuntos regulares sobre


(fecho) X e um conjunto regular sobre
somente se puder ser construdo atra-
ves de um numero nito de aplicacoes
do passo recursivo a partir dos elemen-
tos base
Vasco Pedro, LFA, UE, 2008/2009 7
Expressoes Regulares (1)
as express oes regulares sobre o alfabeto
sao denidas como
(base) , e a, para todo a , sao ex-
pressoes regulares sobre
(passo recursivo) sejam u e v expressoes re-
gulares sobre ; as expressoes
(u v)
(uv)
(u

)
sao expressoes regulares sobre
(fecho) u e uma expressao regular sobre
somente se puder ser construda atra-
ves de um numero nito de aplicacoes
do passo recursivo a partir dos elemen-
tos base
Vasco Pedro, LFA, UE, 2008/2009 8
Expressoes Regulares (2)
Linguagem Representada
L() =
L() =
L(a) = a (a )
L(u v) = L(u) L(v)
L(uv) = L(u)L(v)
L(u

) = L(u)

duas expressoes regulares sao equivalen-


tes se representam a mesma linguagem
Vasco Pedro, LFA, UE, 2008/2009 9
Expressoes Regulares (3)
Propriedades
u = u = u = u = u

=
u v = v u u = u
u u = u u

= (u

u(v w) = uv uw u

= uu

(u v)w = uw vw
(uv)

u = u(vu)

(u v)

= (u

v)

= u

(u v)

= (u vu

= (u

= (u

v)

= u

(vu

Vasco Pedro, LFA, UE, 2008/2009 10


Automatos Finitos
Deterministas
Um automato nito determinista (AFD)
e um tuplo M = (Q, , , q
0
, F) onde
Q e um conjunto nito de estados;
e um conjunto nito de smbolos (al-
fabeto);
e a funcao de transicao, uma funcao
total de Q em Q;
q
0
Q e o estado inicial do automato; e
F Q e o conjunto dos estados de
aceitacao.
Vasco Pedro, LFA, UE, 2008/2009 11
Congura cao e
Computa cao
Seja M = (Q, , , q
0
, F) um AFD.
A conguracao de um AF e um par [q, w]
Q

, onde q e o estado corrente do au-


tomato e w e a parte da palavra ainda por
processar.
A computacao de um AFD M para a pa-
lavra w = a
1
a
2
. . . a
n

e a sequencia de
congura coes
[s
0
, a
1
a
2
. . . a
n
]
M
[s
1
, a
2
. . . a
n
]
M

M
[s
n
, ]
com
s
0
= q
0
e s
i
= (s
i1
, a
i
),
para i > 0.
Vasco Pedro, LFA, UE, 2008/2009 12
Linguagem Reconhecida
Seja M = (Q, , , q
0
, F) um AFD.
A funcao de transicao estendida

: Q

Q de um AFD e denida por

(q, ) = q

(q, a) = (q, a)

(q, wa) = (

(q, w), a)
Uma palavra w e aceite pelo AFD sse

(q
0
, w) F
A linguagem reconhecida (ou aceite) por
M e o conjunto das palavras aceites por M
L(M) = w [

(q
0
, w) F
Dois automatos nitos sao equivalentes se
reconhecem a mesma linguagem.
Vasco Pedro, LFA, UE, 2008/2009 13
Automatos Finitos Nao
Deterministas (1)
Um automato nito nao determinista e
um tuplo M = (Q, , , q
0
, F) onde
Q e um conjunto nito de estados;
e um conjunto nito de smbolos (al-
fabeto);
e a funcao de transicao, uma funcao
total de Q em 1(Q);
q
0
Q e o estado inicial do automato; e
F Q e o conjunto dos estados de
aceitacao.
Qualquer automato nito determinista e um
automato nito nao determinista.
Vasco Pedro, LFA, UE, 2008/2009 14
Automatos Finitos Nao
Deterministas (2)
Seja M = (Q, , , q
0
, F) um automato nito
nao determinista.
Uma palavra w e aceite por M se existe
uma computacao que termina num estado de
aceita cao depois de terem sido processados
todos os seus smbolos
[q
0
, w]

M
[q
i
, ], onde q
i
F
A linguagem reconhecida por M e o con-
junto das palavras aceites por M
L(M) =
_
w

existe uma computacao


[q
0
, w]

M
[q
i
, ] em que q
i
F
_
Vasco Pedro, LFA, UE, 2008/2009 15
Automatos Finitos Nao
Deterministas com
Transi coes
Umautomato nito nao determinista com
transic oes (AFND) e um tuplo M = (Q,
, , q
0
, F) onde
Q e um conjunto nito de estados;
e um conjunto nito de smbolos (al-
fabeto);
e a funcao de transicao, uma funcao
de Q( ) em 1(Q);
q
0
Q e o estado inicial do automato; e
F Q e o conjunto dos estados de
aceitacao.
Vasco Pedro, LFA, UE, 2008/2009 16
Elimina cao do Nao
Determinismo
O -fecho de um estado q
i
e o conjunto de
todos os estados alcancaveis atraves de zero
ou mais transicoes a partir de q
i
q
i
-fecho(q
i
)
se q
j
-fecho(q
i
) e q
k
(q
j
, ), entao
q
k
-fecho(q
i
)
mais nenhum estado esta em -fecho(q
i
)
A funcao de transicao de entrada t de um
AFND M e uma fun cao de Q em 1(Q)
denida por
t(q
i
, a) =
_
q
j
-fecho(q
i
)
-fecho((q
j
, a))
Vasco Pedro, LFA, UE, 2008/2009 17
Minimiza cao de
Automatos Finitos
Deterministas
Seja M = (Q, , , q
0
, F) um automato nito
determinista. Dois estados q
i
e q
j
sao equi-
valentes se

(q
i
, u) F

(q
j
, u) F
para qualquer u

.
Dois estados equivalentes dizem-se indistin-
guveis.
Vasco Pedro, LFA, UE, 2008/2009 18
Calculo dos Estados
Equivalentes
Seja M = (Q, , , q
0
, F) um AFD.
1. Seja P = Q\ F, F uma parti cao de Q.
2. Enquanto existirem
p, p
t
P a q
i
, q
j
p
tais que (q
i
, a) p
t
e (q
j
, a) , p
t
, fazer
P P \ p q p [ (q, a) p
t

q p [ (q, a) , p
t

Este algoritmo calcula a particao P de Q tal


que, para quaisquer estados q
i
e q
j
se q
i
e q
j
pertencem ao mesmo subcon-
junto, q
i
e q
j
sao equivalentes;
se q
i
e q
j
pertencem a subconjuntos dis-
tintos, q
i
e q
j
nao sao equivalentes.
Vasco Pedro, LFA, UE, 2008/2009 19
Constru cao do AFD
Mnimo
1. Calcular os estados equivalentes; seja P a
particao determinada.
2. Para todos os p P e todos os a ,
seja q um estado em p e seja p
t
o elemento
de P a que (q, a) pertence; entao

t
(p, a) = p
t
.
3. O AFD mnimo (ou reduzido) equiva-
lente a M e
M
t
= (P, ,
t
, q
t
0
, F
t
)
onde
q
t
0
e o elemento de P que contem q
0
;
F
t
= p P [ p F.
Vasco Pedro, LFA, UE, 2008/2009 20
Composi cao de
Automatos
Seja M = (Q, , , q
0
, F) um AFND. Existe
um AFND
M
t
= (Q q
t
0
, q
f
, ,
t
, q
t
0
, q
f
)
equivalente a M em que
nao ha transicoes para o estado q
t
0
o unico estado de aceitacao e q
f
nao ha transicoes a partir do estado q
f
A funcao de transi cao de M
t
e obtida acres-
centando a
(q
t
0
, , q
0
)
uma transi cao de cada q F para q
f
NB: q
t
0
, q
f
Q = , q
t
0
,= q
f
Vasco Pedro, LFA, UE, 2008/2009 21
Composi coes
Sejam M
v
e M
w
dois automatos nitos nas
condi coes do acetato anterior
M
v
= (Q
v
, ,
v
, q
0
v
, q
f
v
)
M
w
= (Q
w
, ,
w
, q
0
w
, q
f
w
)
Denem-se os automatos nitos seguintes
M
.
= (Q
v
Q
w
, ,
.
, q
0
v
, q
f
w
)
com
.
=
v

w

_
(q
f
v
, , q
0
w
)
_
M

= (Q
v
Q
w
q
0
, q
f
, ,

, q
0
, q
f
)
com

=
v

w

_
(q
0
, , q
0
v
, q
0
w
),
(q
f
v
, , q
f
), (q
f
w
, , q
f
)
_
M

= (Q
v
q
0
, q
f
, ,

, q
0
, q
f
)
com

=
v

_
(q
0
, , q
0
v
, q
f
),
(q
f
v
, , q
0
v
, q
f
)
_
NB: q
0
, q
f
(Q
v
Q
w
) = , q
0
,= q
f
Vasco Pedro, LFA, UE, 2008/2009 21-1
Pumping Lemma
Teorema (Pumping Lemma para lingua-
gens regulares) Seja L uma linguagem re-
gular e seja k o numero de estados de um
AFD que a reconhece. Entao qualquer pala-
vra p de L, tal que [p[ k, pode ser escrita
como
uvw, com [uv[ k e [v[ > 0
e
uv
i
w L, para todo o i 0.
Vasco Pedro, LFA, UE, 2008/2009 22
Exemplo de Aplica cao do
Pumping Lemma Para
Linguagens Regulares
L = a
n
b
n
[ n 0
Se L for uma linguagem regular, existe um
AFD que a reconhece.
Sejam k o numero de estados desse automato
e p = a
k
b
k
. Qualquer decomposicao de p nas
condi coes do Pumping Lemma sera da forma
u v w
a
j
a
l
a
kjl
b
k
com j +l k e l > 0.
Como
uv
0
w = a
j
(a
l
)
0
a
kjl
b
k
= a
kl
b
k
, L
porque l > 0 e k l ,= k, L nao e uma lingua-
gem regular.
Vasco Pedro, LFA, UE, 2008/2009 22-1
Gramaticas (1)
1. frase) sujeito) frase-verbal)
2. frase) sujeito) verbo) compl-directo)
3. sujeito) subst-proprio)
4. artigo) subst-comum)
5. subst-proprio) John
6. Jill
7. subst-comum) car
8. hamburger
9. artigo) a
10. the
11. frase-verbal) verbo) adverbio)
12. verbo)
13. verbo) drives
14. eats
15. adverbio) slowly
16. frequently
smbolos terminais: John, Jill, hamburger,
car, a, the, drives, eats, slowly, frequently
smbolos nao terminais: frase), sujeito),
frase-verbal), verbo), . . .
Vasco Pedro, LFA, UE, 2008/2009 23
Gramaticas (2)
1. frase) sujeito) frase-verbal)
2. sujeito) verbo) compl-directo)
3. sujeito) subst-proprio)
4. artigo) subst-comum)
5. subst-proprio) John
6. Jill
7. subst-comum) car
8. hamburger
9. artigo) a
10. the
11. frase-verbal) verbo) adverbio)
12. verbo)
13. verbo) drives
14. eats
15. adverbio) slowly
16. frequently
17. adjectivos) adjectivo) adjectivos)
18.
19. adjectivo) big
20. juicy
21. brown
22. compl-directo) adjectivos) subst-proprio)
23. artigo) adjectivos)
subst-comum)
Vasco Pedro, LFA, UE, 2008/2009 24
Gramaticas Independentes do
Contexto
Uma gramatica independente do contex-
to (GIC) e um tuplo G = (V, , P, S) onde
V e o conjunto nito dos smbolos nao
terminais (A, B, C, . . .);
e o conjunto nito dos smbolos ter-
minais (alfabeto);
P V (V )

e um conjunto nito de
produc oes; e
S V e o smbolo inicial da gramatica.
NB: V = .
Vasco Pedro, LFA, UE, 2008/2009 25
Deriva cao
Seja G = (V, , P, S) uma GIC.
Se u, v (V )

, A V e existe uma
produ cao A w em P, entao uAv deriva
directamente uwv
uAv
G
uwv
Se existem u
0
, u
1
, . . . , u
n
(V )

, n 0,
tais que
u = u
0

G
u
1

G
. . .
G
u
n
= v
entao u deriva v em n passos
u
n

G
v
Se u
n

G
v para algum n 0, u deriva v
u

G
v
Vasco Pedro, LFA, UE, 2008/2009 26
Linguagem Gerada
Seja G = (V, , P, S) uma GIC.
O conjunto das palavras derivaveis a partir
de v (V )

, D(v), dene-se como


D(v) = w [ v

w
A linguagem gerada por G, L(G), e o con-
junto das palavras sobre

derivaveis a partir
de S
L(G) = w [ w

e S

w
L(G) e uma linguagem independente do
contexto.
Duas gramaticas sao equivalentes se geram
a mesma linguagem.
Vasco Pedro, LFA, UE, 2008/2009 27
Recursividade
Uma producao (directamente) recursiva
tem a forma
A uAv
O smbolo nao-terminal A e recursivo se
A
+
uAv
Uma derivacao com a forma
A w
+
uAv
em que A nao ocorre em w, diz-se indirec-
tamente recursiva.
(u, v, w (V )

)
Vasco Pedro, LFA, UE, 2008/2009 28
Independencia das
Sub-deriva coes
Lema Sejam G = (V, , P, S) uma GIC e
v
n
w uma deriva cao em G em que v tem a
forma
v = w
1
A
1
w
2
A
2
. . . w
k
A
k
w
k+1
com w
i

. Entao existem palavras p


i

(V )

que satisfazem
1. A
i
t
i
p
i
2. w = w
1
p
1
w
2
p
2
. . . w
k
p
k
w
k+1
3.
k

i=1
t
i
= n.
Vasco Pedro, LFA, UE, 2008/2009 29
Deriva cao Esquerda e
Direita
Numa derivacao esquerda (
L
), em todos
os passos e reescrito o smbolo nao terminal
mais `a esquerda.
Numa derivacao direita (
R
), em todos os
passos e reescrito o smbolo nao terminal
mais `a direita.
Teorema(existencia de derivacao esquer-
da) Seja G = (V, , P, S) uma GIC. Uma pa-
lavra w

pertence a L(G) sse


S

L
w
Vasco Pedro, LFA, UE, 2008/2009 30

Arvore de Derivacao
Seja G = (V, , P, S) uma GIC.
A arvore de derivacao correspondente `a de-
riva cao S

w e formada de acordo com as
seguintes regras:
1. A raiz da arvore e o smbolo inicial S;
2. Se A x
1
x
2
. . . x
n
, com x
i
V , foi a
produ cao usada para reescrever o smbolo
A, entao o no A correspondente tem -
lhos x
1
, x
2
, . . . , x
n
, por esta ordem;
3. Se A foi a produ cao usada para re-
escrever o smbolo A, entao o no A cor-
respondente tem como unico lho.
Uma palavra tem arvore de deriva cao A se
for a concatenacao (dos smbolos) das folhas
desta.
Vasco Pedro, LFA, UE, 2008/2009 31
Ambiguidade
Uma gramatica G diz-se ambgua se al-
guma palavra de L(G) tem, pelo menos:
duas arvores de deriva cao distintas; ou
duas derivacoes esquerdas distintas; ou
duas derivacoes direitas distintas.
Uma linguagem e inerentemente ambgua
se nao existir uma gramatica nao ambgua
que a gere.
a
i
b
j
c
k
[ i = j ou j = k
Vasco Pedro, LFA, UE, 2008/2009 32
Expressoes Aritmeticas
e Ambiguidade
1
a
Versao (ambgua)
G
EA
= (E, n, +, , , , P
EA
, E)
com produ coes P
EA
:
E E +E [ E E [ E E [ E E [ n
2
a
Versao Prioridades (ambgua)
E E +E [ E E [ T
T T T [ T T [ F
F n
3
a
Versao Associatividade (`a esquerda)
E E +T [ E T [ T
T T F [ T F [ F
F n
Vasco Pedro, LFA, UE, 2008/2009 32-1
Gramaticas Regulares
Uma gramatica regular e uma gramatica
independente do contexto em que todas as
produ coes tem uma das formas
A a
A aB
A
onde A, B V e a .
Uma linguagem gerada por uma gramatica
regular e uma linguagem regular.
Uma gramatica nao regular pode gerar uma
linguagem regular.
Vasco Pedro, LFA, UE, 2008/2009 33
Automatos de Pilha (1)
Automato de pilha = automato nito + pilha
Um automato de pilha (AP) e um tuplo
M = (Q, , , , q
0
, F) onde
Q, , q
0
e F sao como nos automatos
nitos;
e o alfabeto da pilha, um conjunto
nito de smbolos (A, B, C, . . . ); e
e a funcao de transicao do automato,
uma fun cao de Q( ) ( )
em 1(Q( )).
, , , . . . denotam palavras sobre
Vasco Pedro, LFA, UE, 2008/2009 34
Automatos de Pilha (2)
Uma conguracao de um automato de pilha
e um triplo [q, w, ] Q

Transi coes:
[q
t
, ] (q, a, )
[q, aw, ] [q
t
, w, ]
[q
t
, ] (q, a, A)
[q, aw, A] [q
t
, w, ]
[q
t
, B] (q, a, )
[q, aw, ] [q
t
, w, B]
[q
t
, B] (q, a, A)
[q, aw, A] [q
t
, w, B]
Congura cao inicial: [q
0
, w, ]
Vasco Pedro, LFA, UE, 2008/2009 35
Automatos de Pilha (3)
Uma palavra w

e aceite pelo automato


de pilha M se existe uma computa cao
[q
0
, w, ]

M
[q
f
, , ]
com q
f
F (criterio de aceita cao por es-
tado de aceitacao e pilha vazia).
A linguagem reconhecida pelo automato de
pilha M e o conjunto de todas as palavras
aceites por M.
Um automato de pilha e determinista se,
qualquer que seja a combinacao de estado,
smbolo de entrada e topo da pilha, existe
no maximo uma transi cao aplicavel.
Vasco Pedro, LFA, UE, 2008/2009 36
Variantes
Um automato de pilha atomico e um au-
tomato de pilha que so tem transicoes das
formas
[q
j
, ] (q
i
, a, )
[q
j
, ] (q
i
, , A)
[q
j
, A] (q
i
, , )
Um automato de pilha estendido pode con-
ter transi coes em que sao empilhados mais
do que um smbolo, como
[q
j
, BCD] (q
i
, u, A)
Uma linguagem reconhecida por um AP es-
tendido e tambem reconhecida por um AP.
Uma linguagem reconhecida por um AP e
tambem reconhecida por um AP atomico.
Vasco Pedro, LFA, UE, 2008/2009 37
Pumping Lemma (2)
Teorema (Pumping Lemma para lingua-
gens independentes do contexto) Seja L
uma linguagem independente do contexto.
Entao existe um k tal que para qualquer pa-
lavra p de L, com [p[ k, existe uma decom-
posi cao da forma
uv wxy, com [vwx[ k e [v[ +[x[ > 0
tal que
uv
i
wx
i
y L, para todo o i 0.
Vasco Pedro, LFA, UE, 2008/2009 38
Hierarquia de Chomsky
Seja G = (V, , P, S) uma gramatica.
G e uma gramatica
sem restricoes (ou tipo 0) se todas as
suas produ coes tiverem a forma
u v
com u (V )
+
e v (V )

;
dependente do contexto (ou tipo 1) se
todas as suas producoes tiverem a forma
u v
com u, v (V )
+
e [u[ [v[;
independente do contexto (ou tipo 2);
ou
regular (ou tipo 3).
Vasco Pedro, LFA, UE, 2008/2009 39
Grafo de uma Gramatica
Seja G = (V, , P, S) uma GIC.
O grafo esquerdo da gramatica Ge o grafo
orientado etiquetado g(G) = (N, P, A) onde
N = w (V )

[ S

L
w
A = [v, w, r] N N P [ v
L
w por
aplica cao da produ cao r
O grafo de uma gramatica nao ambgua e
uma arvore.
Vasco Pedro, LFA, UE, 2008/2009 40
Analise Sintactica
Sentido
descendente (parte de S)
ascendente (parte da palavra)
Estrategia
em largura
em profundidade
Se w = uAv, u

e A V , u e o prexo
terminal de w
Vasco Pedro, LFA, UE, 2008/2009 41
Analise Sintactica
Descendente em Largura
entrada: GIC G = (V, , P, S) e p

cria T com raiz S % arvore de pesquisa


Q S % la
repete
q remove(Q) % q = uAv, u

, A V
i 0
done false
repete
se nao ha uma produ cao para A com
numero maior que i entao
done true
senao
seja A w a primeira producao para
A com numero j > i
se uwv ,

e o prexo terminal de
uwv e um prexo de p entao
insere(uwv, Q)
acrescenta o no uvw a T
i j
ate done ou p = uwv
ate vazia(Q) ou p = uwv
se p = uwv entao ACEITA senao REJEITA
Vasco Pedro, LFA, UE, 2008/2009 42
Analise Sintactica
Descendente em Profundidade
entrada: GIC G = (V, , P, S) e p

S [S, 0] % pilha
repete
[q, i] desempilha(S)
inviavel false
repete
seja q = uAv, com u

e A V
se u nao e prexo de p entao
inviavel true
se nao ha uma produ cao para A com
numero maior que i entao
inviavel true
se nao inviavel entao
seja A w a primeira producao para
A com numero j > i
empilha([q, j], S)
q uwv
i 0
ate inviavel ou q

ate q = p ou vazia(S)
se q = p entao ACEITA senao REJEITA
Vasco Pedro, LFA, UE, 2008/2009 43
Analise Sintactica
Ascendente em Largura
entrada: GIC G = (V, , P, S) e p

cria T com raiz p % arvore de pesquisa


Q p % la
repete
q remove(Q)
para cada produ cao A w P
% TRANSFER

ENCIA(S)
para cada decomposi cao uwv de q,
com v

insere(uAv, Q) % REDUC

AO
acrescenta o no uAv aos lhos
de q em T
ate q = S ou vazia(Q)
se q = S entao ACEITA senao REJEITA
Vasco Pedro, LFA, UE, 2008/2009 44
Analise Sintactica
Ascendente em Profundidade
entrada: GIC G = (V, , P, S), com S nao
recursivo, e p

S [, 0, p] % pilha
repete
[u, i, v] desempilha(S)
inviavel false
repete
seja j > i o n
o
da 1
a
produ cao da forma
A w com u = qw e A ,= S, ou
S w com u = w e v =
se existe tal j entao
empilha([u, j, v], S)
u qA % REDUC

AO
i 0
se nao existe tal j e v ,= entao
TRANSFER

ENCIA(u, v)
i 0
se nao existe tal j e v = entao
inviavel true
ate u = S ou inviavel
ate u = S ou vazia(S)
se vazia(S) entao REJEITA senao ACEITA
Vasco Pedro, LFA, UE, 2008/2009 45
Transforma cao de
Gramaticas (1)
Smbolo inicial nao recursivo
Qualquer que seja a gramatica independente
do contexto G = (V, , P, S), existe uma gra-
matica independente do contexto equivalente
G
t
= (V
t
, , P
t
, S
t
) onde o smbolo inicial e
nao recursivo.
Se o smbolo inicial de G e nao recursivo
G
t
= G
Se o smbolo inicial de G e recursivo
G
t
= (V S
t
, , P S
t
S, S
t
)
(S
t
, V )
Vasco Pedro, LFA, UE, 2008/2009 46
1. Tornar o Smbolo
Inicial Nao Recursivo
Gramatica original:
G = (L, M, N, O, a, b, c, d, P, L)
P : L Mb [ aLb [
M Lb [ MLN [
N NaN [ NbO
O cO [
Gramatica equivalente com smbolo inicial
nao recursivo:
G
t
= (L
t
, L, M, N, O, a, b, c, d, P
t
, L
t
)
P
t
: L
t
L
L Mb [ aLb [
M Lb [ MLN [
N NaN [ NbO
O cO [
Vasco Pedro, LFA, UE, 2008/2009 46-1
Transforma cao de
Gramaticas (2)
Seja G = (V, , P, S) uma GIC.
O conjunto dos smbolos que geram e
= A V [ A


Uma gramatica nao contravel nao contem
smbolos que geram .
Numa gramatica essencialmente nao con-
travel so o smbolo inicial pode gerar .
Introdu cao de produc oes
Se A

G
u, entao G
t
= (V, , P A u, S)
e equivalente a G.
Vasco Pedro, LFA, UE, 2008/2009 47
Elimina cao das
Produ coes-
Seja G = (V, , P, S) uma GIC com S nao
recursivo.
A gramatica G
L
= (V, , P
L
, S), equivalente
a G, e uma gramatica essencialmente nao
contravel cujas produ coes P
L
sao:
1. Todas as produ coes de G que nao sao pro-
du coes-;
2. Todas as produ coes que se obtem elimi-
nando um ou mais smbolos de do corpo
de uma produ cao de G, desde que o corpo
resultante tenha pelo menos um smbolo; e
3. A produ cao S sse S .
Vasco Pedro, LFA, UE, 2008/2009 48
2. Eliminar Producoes-
G
t
= (L
t
, L, M, N, O, a, b, c, d, P
t
, L
t
)
P
t
: L
t
L
L Mb [ aLb [
M Lb [ MLN [
N NaN [ NbO
O cO [
Smbolos que geram :
= L
t
, L, M, O
Gramatica equivalente (essencialmente) nao
contravel:
G
L
= (L
t
, L, M, N, O, a, b, c, d, P
L
, L
t
)
P
L
: L
t
L [
L Mb [ aLb [ b [ ab
M Lb [ MLN [ b [ LN [ MN [ N
N NaN [ NbO [ Nb
O cO [ c
Vasco Pedro, LFA, UE, 2008/2009 48-1
Elimina cao das Produc oes
Unitarias (A B)
Seja G = (V, , P, S) uma GIC essencialmen-
te nao contravel.
Para cada A V , seja CHAIN(A) o conjunto
B V [ A

G
B
A gramatica G
C
= (V, , P
C
, S) e uma gra-
matica equivalente a G onde P
C
consiste nas
produ coes A w que satisfazem, para algum
B V :
1. B CHAIN(A)
2. B w P
3. w , V
Vasco Pedro, LFA, UE, 2008/2009 49
3. Eliminar as Produ coes
Unitarias
CHAIN
L
t
L
t
, L
L L
M M, N
N N
O O
Gramatica sem producoes unitarias, equiva-
lente a G
L
:
G
C
= (L
t
, L, M, N, O, a, b, c, d, P
C
, L
t
)
P
C
: L
t
[ Mb [ aLb [ b [ ab
L Mb [ aLb [ b [ ab
M Lb [ MLN [ b [ LN [ MN [ NaN [
NbO [ Nb
N NaN [ NbO [ Nb
O cO [ c
Vasco Pedro, LFA, UE, 2008/2009 49-1
Smbolos Inuteis
Um smbolo x V e util se existe uma
deriva cao
S

uxv

w
onde u, v (V )

e w

.
Um smbolo que nao e util e inutil.
Um smbolo nao terminal A e produtivo se
A

w, com w

.
Um smbolo nao terminal que nao e produtivo
e improdutivo.
Um smbolo nao terminal A e acessvel se
S

uAv, com u, v (V )

.
Um smbolo nao terminal que nao e acessvel
e inacessvel.
Um smbolo e util se for produtivo e acessvel.
Vasco Pedro, LFA, UE, 2008/2009 50
4. Eliminar os Smbolos
Inuteis
1. PRODUTIVOS = L
t
, L, M, O
Produ coes sem smbolos improdutivos:
L
t
[ Mb [ aLb [ b [ ab
L Mb [ aLb [ b [ ab
M Lb [ b
O cO [ c
2. ACESS

IVEIS = L
t
, L, M a, b
Gramatica sem smbolos inuteis (improduti-
vos ou inacessveis), equivalente a G
C
:
G
U
= (L
t
, L, M, a, b, P
U
, L
t
)
P
U
: L
t
[ Mb [ aLb [ b [ ab
L Mb [ aLb [ b [ ab
M Lb [ b
Vasco Pedro, LFA, UE, 2008/2009 50-1
Forma Normal de Chomsky
Uma GIC G = (V, , P, S) esta na forma nor-
mal de Chomsky se todas as suas produ coes
tem uma das formas
A BC
A a
S
onde a e B, C V S.
Vasco Pedro, LFA, UE, 2008/2009 51
5. Construir a Forma
Normal de Chomsky
1. L
t
[ MB [ ALB [ b [ AB
B b
A a
L MB [ ALB [ b [ AB
M LB [ b
Gramatica na Forma Normal de Chomsky,
equivalente a G
U
:
G
NC
= (L
t
, L, M, A, B, X, a, b, P
NC
, L
t
)
P
NC
: L
t
[ MB [ AX [ b [ AB
X LB
B b
A a
L MB [ AX [ b [ AB
M LB [ b
Vasco Pedro, LFA, UE, 2008/2009 51-1
Forma Normal de Greibach
Uma GIC G = (V, , P, S) esta na forma nor-
mal de Greibach se todas as suas produ coes
tem uma das formas
A aA
1
A
2
. . . A
n
A a
S
onde a e A
i
V S, para i = 1, 2, . . . , n.
Vasco Pedro, LFA, UE, 2008/2009 52
6. Construir a Forma
Normal de Greibach (1)
1. Ordem dos nao terminais: L
t
X B A L M
2. Todas as producoes da forma A
1
A
2
w
satisfazem A
1
< A
2
.
L
t
[ MB [ AX [ b [ AB
X LB
B b
A a
L MB [ aX [ b [ aB
(M MBB [ aXB [ bB [ aBB [ b)
M aXBZ [ bBZ [ aBBZ [ bZ [
aXB [ bB [ aBB [ b
Z BBZ [ BB
(A
1
, A
2
, V e w V

)
Vasco Pedro, LFA, UE, 2008/2009 52-1
6. Construir a Forma
Normal de Greibach (2)
Gramatica na Forma Normal de Greibach,
equivalente a G
NC
:
G
G
= (L
t
, L, M, A, B, X, Z, a, b, P
G
, L
t
)
P
G
: L
t
[ aXBZB [ bBZB [ aBBZB [ bZB [
aXBB [ bBB [ aBBB [ bB [ aX [ b [
aB
X aXBZBB [ bBZBB [ aBBZBB [
bZBB [ aXBBB [ bBBB [ aBBBB [
bBB [ aXB [ bB [ aBB
B b
A a
L aXBZB [ bBZB [ aBBZB [ bZB [
aXBB [ bBB [ aBBB [ bB [ aX [ b [
aB
M aXBZ [ bBZ [ aBBZ [ bZ [
aXB [ bB [ aBB [ b
Z bBZ [ bB
Vasco Pedro, LFA, UE, 2008/2009 52-2
Elimina cao da Recursividade
Directa `a Esquerda
Se A e um smbolo nao terminal com pelo
menos uma producao da forma
A Au
substituem-se as produ coes
A Au
1
[ Au
2
[ . . . [ Au
j
[ v
1
[ v
2
[ . . . [ v
k
onde o primeiro smbolo dos v
i
nao e A, pelas
produ coes
A v
1
Z [ v
2
Z [ . . . [ v
k
Z [ v
1
[ v
2
[ . . . [ v
k
Z u
1
Z [ u
2
Z [ . . . [ u
j
Z [ u
1
[ u
2
[ . . . [ u
j
onde Z e um novo smbolo (nao terminal).
(u
i
, v
i
(V )

)
Vasco Pedro, LFA, UE, 2008/2009 53
Gramaticas LL(k)
Subclasse das gramaticas independentes do
contexto que admite analise sintactica (des-
cendente) determinista, com k smbolos de
avan co.
Gramaticas LL(1)
Subclasse das gramaticas independentes do
contexto que admite analise sintactica (des-
cendente) determinista, com 1 smbolo de
avan co.
Vasco Pedro, LFA, UE, 2008/2009 54
Gramaticas LL(1)
A GIC G = (V, , P, S), com terminador #,
e LL(1) se quando existem duas derivacoes
esquerdas
S

u
1
Av
1
u
1
xv
1

u
1
aw
1
S

u
2
Av
2
u
2
yv
2

u
2
aw
2
onde u
i
, w
i

e a , entao x = y.
Teorema Uma gramatica LL(k), para algum
k > 0, e nao ambgua.
Teorema Se algum smbolo nao terminal de
G e recursivo `a esquerda, entao G nao e
LL(k), para qualquer k > 0.
Vasco Pedro, LFA, UE, 2008/2009 55
Factorizacao `a Esquerda
Seja G = (V, , P, S) uma gramatica indepen-
dente do contexto.
Se algum A V tiver producoes
A uv
1
[ uv
2
[ . . . [ uv
n
com u (V )
+
, a gramatica G
t
, obtida
acrescentando o novo smbolo nao terminal
A
t
e substituindo estas produ coes por
A uA
t
e
A
t
v
1
[ v
2
[ . . . [ v
n
e equivalente a G.
Vasco Pedro, LFA, UE, 2008/2009 56
Primeiros e Seguintes
Primeiros
Os primeiros de u (V )

sao os smbolos
do alfabeto que podem aparecer na primeira
posi cao de uma palavra derivada a partir de
u.
PRIMEIROS(u) = a [ u

ax

Seguintes
Os seguintes de A V sao os smbolos do
alfabeto que podem aparecer a seguir a A
nalguma deriva cao.
SEGUINTES(A) =
a [ S

uAv e a PRIMEIROS(v)
(a , x

e u, v (V )

)
Vasco Pedro, LFA, UE, 2008/2009 57
Smbolos Directores
O conjunto dos smbolos directores da pro-
du cao A w P e
DIR(A w) =
_

_
PRIMEIROS(w) se w ,


PRIMEIROS(w)

SEGUINTES(A)
se w


Teorema Se para todo o A V , para quais-
quer produ coes distintas A w e A v P
DIR(A w) DIR(A v) =
entao a gramatica e LL(1).
Vasco Pedro, LFA, UE, 2008/2009 58
Calculo dos Primeiros (1)
Constru cao do grafo dos primeiros:
Os vertices do grafo sao os elementos de
V e de ;
Para cada producao A u
1
u
2
. . . u
n
, u
i

V
Acrescenta-se um arco de A para u
1
;
Se u
1
, acrescenta-se tambem um
arco de A para u
2
;
Se u
1
, u
2
, acrescenta-se tambem
um arco de A para u
3
, e assim suces-
sivamente.
O grafo dos primeiros contem um caminho
de A V para a sse a PRIMEIROS(A).
Vasco Pedro, LFA, UE, 2008/2009 59
Calculo dos Primeiros (2)
Dene-se indutivamente PRIMEIROS(w),
w (V )

, como
PRIMEIROS() =
PRIMEIROS(a) = a a
PRIMEIROS(A) = (no grafo) A V
PRIMEIROS(uv) =
=
_

_
PRIMEIROS(u) se u ,


PRIMEIROS(u)

PRIMEIROS(v)
se u


Vasco Pedro, LFA, UE, 2008/2009 60
Calculo dos Seguintes
Constru cao do grafo dos seguintes:
Os vertices do grafo sao os elementos de
V e de ;
Para cada produ cao A uBv, B V e
u, v (V )

Acrescenta-se um arco de B para cada


a pertencente a PRIMEIROS(v);
Se v

, acrescenta-se um arco de B
para A.
O grafo dos seguintes contem um caminho
de A V para a sse a SEGUINTES(A).
Vasco Pedro, LFA, UE, 2008/2009 61
Analisador Sintactico
Descendente Recursivo (1)
proc E()
se smbolo-de-avanco a, ( entao
% E TX
T()
X()
senao
erro()
proc T()
se smbolo-de-avanco a entao
% T a
consome(a)
senao se smbolo-de-avanco ( entao
% T (E)
consome(()
E()
consome())
senao
erro()
Vasco Pedro, LFA, UE, 2008/2009 61-1
Analisador Sintactico
Descendente Recursivo (2)
proc X()
se smbolo-de-avan co + entao
% X Z
Z()
senao se smbolo-de-avan co ), # entao
% X
senao
erro()
proc consome(smbolo)
se smbolo-de-avan co = smbolo entao
se smbolo-de-avan co ,= # entao
smbolo-de-avan co proximo-smbolo()
senao
erro()
Vasco Pedro, LFA, UE, 2008/2009 61-2
Gramaticas LR(0)
Seja G = (V, , P, S) uma GIC, com S nao
recursivo e terminador #.
uw e um contexto-LR(0) de A w P se
existe uma deriva cao direita
S

R
uAv
R
uwv
A um prexo de um contexto-LR(0) chama-
-se prexo viavel.
Exemplo
G
LR
0
= (S, X, Y , a, b, #, P
LR
0
, S)
P
LR
0
: S X# X XY [ Y aY a [ b
Contextos-LR(0)
S X# X#
X XY XY
X
Y aY a XaY a, XaaY a, . . . = Xa

aY a
Y b Xb, Xab, Xaab, . . . = Xa

b
Vasco Pedro, LFA, UE, 2008/2009 62
Item LR(0)
Os itens LR(0) de G sao:
A u.v, se A uv P;
A ., se A P.
Um item completo e um item LR(0) em que
o ponto esta o mais `a direita possvel.
Um item A u.v e valido para o prexo
viavel xu se xuv e um contexto-LR(0).
Exemplo
Os itens LR(0) de G
LR
0
sao:
S .X# S X.# S X#.
X .XY X X.Y X XY .
X .
Y .aYa Y a.Ya Y aY.a Y aYa.
Y .b Y b.
Vasco Pedro, LFA, UE, 2008/2009 63
Fecho de um Conjunto
de Itens LR(0)
O fecho de um conjunto I de itens LR(0)
dene-se recursivamente como:
I fecho(I);
se A u.Bv fecho(I), com B V ,
entao B .w fecho(I) para todas as
produ coes B w;
nada mais pertence a fecho(I).
Exemplo
fecho(X X.Y ) =
X X.Y, Y .aY a, Y .b
Vasco Pedro, LFA, UE, 2008/2009 64
Automato Finito dos
Itens LR(0) Validos
Seja G = (V, , P, S) uma gramatica indepen-
dente do contexto.
O automato dos itens validos de G, que
reconhece os prexos viaveis de G, e o auto-
mato nito determinista
M = (Q, V , , q
0
, Q\ )
onde
q
0
= fecho(S .w [ S w P)
para todo o q Q e todo o x V ,
(q, x) Q, com
(q, x) =
fecho(A ux.v [ A u.xv q)
Vasco Pedro, LFA, UE, 2008/2009 65
Condi coes LR(0)
Uma gramatica independente do contexto e
LR(0) se o seu automato dos itens validos
satisfaz as seguintes condi coes:
Nenhum estado contem dois itens com-
pletos;
Se um estado contem um item completo,
todos os outros itens desse estado tem o
ponto imediatamente `a esquerda de um
smbolo nao terminal da gramatica.
Vasco Pedro, LFA, UE, 2008/2009 66
Analisador Sintactico
LR(0)
entrada: GIC LR(0) G = (V, , P, S),
AFD dos itens validos de G
M = (Q, V , , q
0
, F) e
p

u
v p
erro false
repete
q

(q
0
, u)
se q contem A w., sendo u = xw entao
u xA % REDUC

AO
senao se q contem A y.z, com z ,= ,
e v ,= entao
TRANSFER

ENCIA(u, v)
senao
erro true % REJEIC

AO
ate u = S ou erro
se u = S entao ACEITA senao REJEITA
Vasco Pedro, LFA, UE, 2008/2009 67
Tabela de Analise
Sintactica LR(0)
Uma linha por estado do AFD dos itens va-
lidos, excepto para o estado .
Uma coluna por cada smbolo de (V )\S,
cujo conteudo corresponde `a fun cao de tran-
si cao do automato.
Uma coluna ACC

AO que, na linha q
i
contem:
ACEITA se q
i
contem um item completo
de uma producao de S;
TRANSF se q
i
contem um item Au.av,
com a ;
A w, indicando uma REDUC

AO, se q
i
contem o item completo A w., A ,= S.
As posicoes vazias da tabela indicam a RE-
JEIC

AO da palavra.
Vasco Pedro, LFA, UE, 2008/2009 68
AP Reconhecedor LR(0)
Dada uma gramatica LR(0) G = (V, , P, S)
e o seu AFD dos itens validos M = (Q, V
, , q
0
, Q\), pode-se construir o automato
de pilha estendido que reconhece a linguagem
gerada por G
R = (q
I
, q, , V Q\ ,
t
, q
I
, q)
com
[q, q
0
]
t
(q
I
, , );
[q, ]
t
(q, , q
i
a
n
. . . q
j
2
a
2
q
j
1
a
1
q
0
) para
todo o q
i
Q que contem um item com-
pleto S a
1
a
2
. . . a
n
., onde
[q
0
, a
1
a
2
. . . a
n
]
M
[q
j
1
, a
2
. . . a
n
]

M
[q
i
, ];
[q, q
j
Aq
j
0
]
t
(q, , q
i
a
n
. . . q
j
2
a
2
q
j
1
a
1
q
j
0
)
para todo o q
i
Q que contem um item
completo A a
1
a
2
. . . a
n
., A ,= S, onde
q
j
= (q
j
0
, A) e
[q
j
0
, a
1
a
2
. . . a
n
]
M
[q
j
1
, a
2
. . . a
n
]

M
[q
i
, ];
[q, q
j
a q
i
]
t
(q, a, q
i
) se (q
i
, a)= q
j
, a.
Vasco Pedro, LFA, UE, 2008/2009 69
AP LR(0) para G
LR
0
Inicializa cao do AP
(q
I
, )

(q, 0)
Aceita cao
(q, 2#1X0)

(q, )
Redu cao
(q, 0)

(q, 1X0)
(q, 3Y 1X0)

(q, 1X0)
(q, 5b1)

(q, 3Y 1)
(q, 5b4)

(q, 6Y 4)
(q, 7a6Y 4a1)

(q, 3Y 1)
(q, 7a6Y 4a4)

(q, 6Y 4)
Transferencia
(q, 1)
a
(q, 4a1)
(q, 1)
b
(q, 5b1)
(q, 1)
#
(q, 2#1)
(q, 4)
a
(q, 4a4)
(q, 4)
b
(q, 5b4)
(q, 6)
a
(q, 7a6)
(De acordo com o AFD dos itens LR(0) validos obtido na aula.)
Vasco Pedro, LFA, UE, 2008/2009 69-1
Item LR(1)
Seja G = (V, , P, S) uma gramatica indepen-
dente do contexto.
Os itens LR(1) de G tem a forma
A u.v, L
onde
A u.v e um item LR(0), o nucleo, e
L # e o conjunto de smbolos
de avanco.
Um item A u.v, L e valido para xu se, para
todo o a L, existe uma deriva cao
S

R
xAy
com a PRIMEIROS(y#).
Vasco Pedro, LFA, UE, 2008/2009 70
Fecho LR(1)
O fecho de um conjunto I de itens LR(1)
dene-se recursivamente como:
I fecho
1
(I);
se A u.Bv, L fecho
1
(I), com B V ,
entao B .w, K fecho
1
(I) para todas
as produ coes B w, com
K =
_
PRIMEIROS(v) se v ,


PRIMEIROS(v) L se v


nada mais pertence a fecho
1
(I).
Vasco Pedro, LFA, UE, 2008/2009 71
Exemplo de Fecho LR(1)
G
LR
1
= (S, A, a, b, P
LR
1
, S)
P
LR
1
: S AbA
A Aa [
fecho
1
(
_
S Ab.A,#
_
) =
_
S Ab.A,#
_

_
A .Aa,#, A .,#
_

_
A .Aa,a, A .,a
_
=
_
S Ab.A, #,
A .Aa, a, #,
A ., a, #
_
Vasco Pedro, LFA, UE, 2008/2009 71-1
Automato Finito dos
Itens LR(1) Validos
Seja G = (V, , P, S) uma gramatica indepen-
dente do contexto e seja G
t
= (V S
t
, , P
S
t
S, S
t
).
O automato dos itens validos de G
t
e o
automato nito determinista
M = (Q, V , , q
0
, Q\ )
onde
q
0
= fecho
1
(S
t
.S, #)
para todo o q Q e todo o x V ,
(q, x) Q, com
(q, x) =
fecho
1
(A ux.v, L [ A u.xv, L q)
Vasco Pedro, LFA, UE, 2008/2009 72
Condi coes LR(1)
Uma gramatica independente do contexto e
LR(1) se o seu automato dos itens validos
satisfaz as seguintes condi coes:
Se um estado contem um item completo
A w., L e um item B u.av, K, entao
a , L;
Se um estado contem dois itens com-
pletos A w., L e B u., K, entao
L K = .
Vasco Pedro, LFA, UE, 2008/2009 73
Tabela de Analise
Sintactica LR(1)
Uma linha por estado do AFD dos itens va-
lidos, excepto para o estado .
Uma coluna por cada smbolo de (V )\S,
cujo conteudo corresponde `a fun cao de tran-
si cao do automato.
Uma coluna por cada smbolo a #
que, na linha q
i
contem a accao:
ACEITA se q
i
contem um item completo
de uma producao de S e a = #;
TRANSF se q
i
contem um item A
u.av, L;
A w, indicando uma REDUC

AO, se
q
i
contem o item completo A w., L,
A ,= S e a L.
As posicoes vazias da tabela indicam a RE-
JEIC

AO da palavra.
Vasco Pedro, LFA, UE, 2008/2009 74
Uma Tabela de Analise
Sintactica LR(1)
G
LR
1
= (S, A, a, b, P
LR
1
, S)
P
LR
1
: S AbA
A Aa [
S A a b a b #
0 1 2 A A
1 ACEITA
2 4 3 TRANSF TRANSF
3 5 A A
4 A Aa A Aa
5 6 TRANSF S AbA
6 A Aa A Aa
(De acordo com o AFD dos itens LR(1) validos obtido na aula.)
Vasco Pedro, LFA, UE, 2008/2009 74-1
AP Reconhecedor LR(1)
O automato de pilha que reconhece a lin-
guagem gerada por uma gramatica LR(1)
G = (V, , P, S) com AFD dos itens validos
M = (Q, V , , q
0
, Q \ ), e o automato
de pilha estendido
R = (Q
R
, #, V Q\ ,
R
, q
I
, F
R
)
com
Q
R
= q
I
, q q
a
[ a #
F
R
= q
#

Vasco Pedro, LFA, UE, 2008/2009 75


Funcao de Transi cao do
AP LR(1)
[q, q
0
]
R
(q
I
, , ).
[q
a
, ]
R
(q, a, ) para todo o a #.
[q
#
, ]
R
(q
#
, , q
i
a
n
. . . q
j
2
a
2
q
j
1
a
1
q
0
) para
todo o q
i
Q que contem um item completo
S a
1
a
2
. . . a
n
., L, # L e
[q
0
, a
1
a
2
. . . a
n
]
M
[q
j
1
, a
2
. . . a
n
]
M
. . .

M
[q
j
n1
, a
n
]
M
[q
i
, ].
[q
a
, q
j
Aq
j
0
]
R
(q
a
, , q
i
a
n
. . . q
j
2
a
2
q
j
1
a
1
q
j
0
)
para todo o q
i
Q que contem um item com-
pleto A a
1
a
2
. . . a
n
., L, A ,= S, a L,
q
j
= (q
j
0
, A) e
[q
j
0
, a
1
a
2
. . . a
n
]
M
[q
j
1
, a
2
. . . a
n
]
M
. . .

M
[q
j
n1
, a
n
]
M
[q
i
, ].
[q, q
j
a q
i
]
R
(q
a
, , q
i
) para todo o q
i
Q
que contem um item A u.av, L, a e
q
j
= (q
i
, a).
Vasco Pedro, LFA, UE, 2008/2009 76
AP LR(1) para G
LR
1
(q
I
, )

(q, 0) Inicializa cao do AP
(q, )
a
(q
a
, )
(q, )
b
(q
b
, )
(q, )
#
(q
#
, )
_

_
Leitura do smbolo
de avan co
(q
#
, 1S0)

(q
#
, ) Aceita cao
(q
a
, 0)

(q
a
, 2A0)
(q
b
, 0)

(q
b
, 2A0)
(q
a
, 3)

(q
a
, 5A3)
(q
#
, 3)

(q
#
, 5A3)
(q
a
, 4a2A0)

(q
a
, 2A0)
(q
b
, 4a2A0)

(q
b
, 2A0)
(q
#
, 5A3b2A0)

(q
#
, 1S0)
(q
a
, 6a5A3)

(q
a
, 5A3)
(q
#
, 6a5A3)

(q
#
, 5A3)
_

_
Redu cao
(q
a
, 2)

(q, 4a2)
(q
b
, 2)

(q, 3b2)
(q
a
, 5)

(q, 6a5)
_

_
Transferencia
(De acordo com o AFD dos itens LR(1) validos obtido na aula.)
Vasco Pedro, LFA, UE, 2008/2009 76-1
Automato Amalgamado
Seja M= (Q, , , q
0
, F) o automato dos itens
LR(1) validos de uma gramatica.
O automato amalgamado M
A
e o automa-
to que resulta de fundir num so os estados
de M com o mesmo nucleo LR(0).
Seja Q
i
= q
i
1
, q
i
2
, . . . , q
i
m

um conjunto de es-
tados de M com o mesmo nucleo. O estado

Q
i
e o resultado da fusao dos estados de Q
i
e contem os itens A u.v, L
i
1
L
i
2
. . . L
i
m
tais que A u.v, L
i
j
e um item de q
i
j
.
Seja Q
1
, Q
2
, . . . , Q
n
uma particao de Q tal
que todos os estados de Q
i
tem o mesmo
nucleo e os nucleos dos estados de Q
i
e de
Q
j
sao diferentes, se i ,= j. Entao
M
A
= (Q
A
, ,
A
,

q
0
, Q
A
\

)
com
Q
A
=

Q
1
,

Q
2
, . . . ,

Q
n
;

A
(

Q
i
, a) =

Q
j
se (q, a) Q
j
para q Q
i
.
Vasco Pedro, LFA, UE, 2008/2009 77
LALR(1)
Uma gramatica independente do contexto e
LALR(1) se o seu automato amalgamado sa-
tisfaz as condicoes LR(1).
LR(0) (bis)
Uma gramatica independente do contexto e
LR(0) se o seu automato dos itens LR(1)
validos, considerando somente os nucleos dos
estados, satisfaz as condi coes LR(0).
Vasco Pedro, LFA, UE, 2008/2009 78
A Linguagem WHILE

Atomos (conjunto nito)


A = nil, while, :=, quote, var, . . .
Valores D
A
(elementos d, e, f, . . . )
A D
A
se d, e D
A
, entao (d.e) D
A
D
A
e o menor conjunto que satisfaz
os pontos anteriores.
Variaveis Vars (conjunto innito, X, Y, . . . )
Expressoes
E X (variavel)
[ d (valor)
[ =? E E
[ cons E E [ hd E [ tl E
Instru coes
C X := E [ C; C [ while E do C
Programas
read X; C; write Y
Vasco Pedro, LFA, UE, 2008/2009 79
A cucar Sintactico para a
Linguagem WHILE (1)
Booleanos
false nil
true (nil.nil)
if E then C
1
else C
2

Z := E;
W := true;
while Z do
{ Z := false; W := false; C
1
};
while W do { W := false; C
2
};
(onde Z e W sao variaveis que nao ocorrem
no resto do programa)
skip X := X
Vasco Pedro, LFA, UE, 2008/2009 79-1
A cucar Sintactico para a
Linguagem WHILE (2)
Listas
nil e a lista vazia
(e) (e . nil)
(e
1
e
2
... e
n
)
(e
1
. (e
2
. ... (e
n
. nil)...))
Naturais
0 nil
1 (nil.nil)
n (nil.n 1)
Vasco Pedro, LFA, UE, 2008/2009 79-2
A cucar Sintactico para a
Linguagem WHILE (3)
Macros
Se p e o programa
read X
p
;
C
p
;
write Y
p
entao a instrucao
W := p e;
e equivalente a
X
p
:= e;
C
p
;
W := Y
p
;
Vasco Pedro, LFA, UE, 2008/2009 79-3
Representa cao Interna de
um Programa WHILE
O programa WHILE
read X;
Y := nil;
while X do
Y := cons (hd X) Y;
X := tl X;
write Y
e representado internamente pela lista
(
(var 1)
(; (:= (var 2) (quote nil))
(while (var 1)
(; (:= (var 2)
(cons (hd (var 1)) (var 2)))
(:= (var 1) (tl (var 1))))))
(var 2)
)
Vasco Pedro, LFA, UE, 2008/2009 79-4
Problema de Decisao
Um problema de decisao e um problema
cujas instancias tem resposta sim ou nao.
Exemplos
x e um quadrado perfeito?
Instancias:
0 e um quadrado perfeito?
1 e um quadrado perfeito?
2 e um quadrado perfeito?
. . .
A palavra w pertence `a linguagem L?
O programa p termina se corre com dados
d?
A maquina de Turing M para quando o
conteudo inicial da ta e w?
Vasco Pedro, LFA, UE, 2008/2009 80
Solu cao de um Problema
de Decisao
A solucao de um problema de decisao e um
procedimento efectivo (algoritmo) que per-
mite calcular a resposta para todas as instan-
cias do problema.
Um algoritmo deve ser
completo: produz uma resposta para to-
das as instancias de um problema;
executavel mecanicamente: consiste
num numero nito de passos, que podem
ser executados sem pensar;
determinista: produz sempre a mesma
resposta para a mesma instancia do pro-
blema.
Um problema de decisao sem solu cao diz-se
indecidvel.
Vasco Pedro, LFA, UE, 2008/2009 81
Tese de Church-Turing
Existe um procedimento efectivo que e so-
lu cao de um problema de decisao se e so
se existe uma maquina de Turing que para
sempre e que resolve todas as instancias do
problema.
Formalismos Equivalentes
Maquinas de Turing
Calculo-
Funcoes recursivas
Sistemas de Post
URM (Unlimited Register Machine)
Linguagem WHILE
Vasco Pedro, LFA, UE, 2008/2009 82
Problema da Termina cao
(Halting Problem) (1)
Enunciado: O programa p termina quando
corre com dados d?
Seja termina a fun cao
termina(p, d) =
_

_
true
se p termina com
dados d
false
se p nao termina
com dados d
e seja t o programa que implementa a fun cao
termina: quando corrido com dados (p.d),
o resultado de t e
true se o programa p termina quando
corre com dados d;
false no caso contrario.
Vasco Pedro, LFA, UE, 2008/2009 83
Problema da Termina cao
(Halting Problem) (2)
Seja t o programa que, quando corrido com
dados p, tem o seguinte comportamento
se o resultado de t(p.p) e true, t nao
termina;
se o resultado de t(p.p) e false, o re-
sultado de t(p) e true.
Qual o resultado de t(t)?
Se t(t) termina, entao o resultado de
t(t.t) e true e t(t) nao termina;
Se t(t) nao termina, entao o resul-
tado de t(t.t) e false e o resultado
de t(t) e true.
Ha uma contradicao em ambos os casos!
Vasco Pedro, LFA, UE, 2008/2009 84
Problema da Termina cao
(Halting Problem) (3)
O programa t nao existe.
O problema da termina cao e indecidvel
A fun cao termina e nao computavel.
Vasco Pedro, LFA, UE, 2008/2009 85
Redu cao de Problemas
O problema A pode ser reduzido ao pro-
blema B se qualquer instancia de A puder
ser expressa como uma instancia de B cuja
resposta e a resposta `a instancia de A.
Se A pode ser reduzido a B e se A e um
problema indecidvel, entao B tambem e in-
decidvel.
Exemplo
O problema da terminacao pode ser reduzido
ao problema de saber se o programa p ter-
mina quando corre com dados nil.
Vasco Pedro, LFA, UE, 2008/2009 86
Exemplo de Reducao (1)
Seja N o problema de decisao: o programa p
termina quando corrido com dados nil?
Seja p
N
o programa que implementa a solu-
cao de N.
Sejam p um programa e d dados para p:
read X
p
;
C
p
;
write Y
p
Seja p o programa:
read X
p
;
X
p
:= d;
C
p
;
write Y
p
e seja s o programa que constroi p a partir
de (p.d).
Vasco Pedro, LFA, UE, 2008/2009 86-1
Exemplo de Reducao (2)
O comportamento de p, quando corrido com
quaisquer dados, e o comportamento de p
quando corrido com dados d.
Seja t o programa:
read PD; (PD contem o par (p.d))
P := s PD; (transforma p)
R := p
N
P; (p
N
corre com dados p)
write R
Dados p e d, t constroi p e calcula p
N
(p).
O resultado de p
N
(p) e true se p(nil)
termina e false caso contrario.
Como p(nil) tem o comportamento de
p(d), o programa t determina se p termina
quando corrido com dados d.
Vasco Pedro, LFA, UE, 2008/2009 86-2
Exemplo de Reducao (3)
O programa t implementa uma solucao para
o problema da terminacao.
Mas o problema da terminacao e indecidvel
e o programa t nao existe.
Como existe uma reducao do problema da
termina cao ao problema N o programa
s pode ser construdo e as restantes cons-
tru coes usadas na constru cao de t sao pos-
sveis , a premissa errada e a existencia do
programa p
N
.
Logo, o programa p
N
nao existe e o problema
N tambem e indecidvel.
Vasco Pedro, LFA, UE, 2008/2009 86-3
Teorema de Rice
Qualquer propriedade extensional nao-trivial
de programas e indecidvel.
Uma propriedade e extensional se diz res-
peito `a fun cao que o programa calcula.
Uma propriedade e nao-trivial se e satisfeita
por pelo menos um programa, mas nao por
todos.
Exemplos
O programa termina quando corre com da-
dos nil.
O conjunto d [ p(d) termina e nito.
O programa implementa uma funcao total.
Vasco Pedro, LFA, UE, 2008/2009 87
Problemas Indecidveis
A GIC G e ambgua?
As GIC G
1
e G
2
sao equivalentes?
A intersec cao das linguagens geradas pe-
las GIC G
1
e G
2
e nao vazia?
O programa p reconhece a linguagem va-
zia?
A linguagem reconhecida pelo programa
p e regular?
A linguagem reconhecida pelo programa
p e

?
Vasco Pedro, LFA, UE, 2008/2009 88

Potrebbero piacerti anche