Anda di halaman 1dari 298

Linguagens Formais e Autmatos

Pedro Mariano
DETI, Universidade de Aveiro
plsm@ua.pt
PLSM, ACP LFA0910 2
Apresentao
PLSM, ACP LFA0910 3
Apresentao
s
Corpo Docente
x
Pedro Mariano
s
Atendimento
x
6
a
-feiras na OT
x
Local: sala 344 (gabinete)
s
Pr-requisitos
x
Conhecimento das matrias de Tpicos de Matemtica Discreta
x
Conhecimentos de programao
PLSM, ACP LFA0910 4
Programa das Tericas 1
s
Programao em C
x
Ambiente de programao em GNU/Linux
x
Introduo linguagem C
s
Fundamentos sobre teoria das linguagens
s
Modelos computacionais para linguagens regulares
x
Expresses regulares (ER)
x
Autmatos nitos (AF)
x
Equivalncia entre ER e AF
x
Teorema da repetio
PLSM, ACP LFA0910 5
Programa das Tericas 2
s
Modelos computacionais para linguagens independentes do contexto
x
Autmatos de pilha (AP)
x
Gramticas
s
Anlise sintctica e semntica
x
Reconhecedores sintcticos descendentes
x
Gramticas de atributos
x
Reconhecedores sintcticos ascendentes
s
Mquinas de Turing
x
Teorema da Paragem
PLSM, ACP LFA0910 6
Programa das Prticas
s
Resoluo de exerccios de introduo ao C
s
Resoluo de exerccios sobre expresses regulares
s
Resoluo de exerccios sobre autmatos nitos e sua implementao em C
s
Utilizao da ferramenta ex na implementao de autmatos nitos
s
Implementao de reconhecedores (parsers) descendentes em C
s
Utilizao da ferramenta bison na implementao de reconhecedores
sintcticos.
s
Utilizao da ferramenta bison na implementao de gramticas de atributos
do tipo S.
PLSM, ACP LFA0910 7
Objectivos
No m do semestre espera-se que os alunos adquiram as seguintes
competncias:
s
Compreenso das noes de:
x
linguagem, linguagem regular, linguagem independente do contexto e
linguagem dependente do contexto
x
expresso regular, autmato nito, determinista, no determinista e
generalizado, autmato de pilha e gramtica
s
Capacidade para interpretar os modelos computacionais mais comuns
s
Capacidade para modelar problemas usando esses modelos
computacionais
s
Capacidade para construir reconhecedores sintcticos a partir de uma
descrio gramatical
s
Capacidade para construir pequenos tradutores gramaticais
PLSM, ACP LFA0910 8
Bibliograa
s
Artur Pereira,
Apontamentos de Linguagens Formais e Autmatos,
publicao interna, 2009;
s
Raymond Greenlaw e James Hoover,
Fundamentals of the theory of computation: principles and practice, 1998;
s
John E. Hopcroft e Jeffrey D. Ullman,
Introduction to Automata Theory, Languages and Computation, 1979;
s
Michael Sipser,
Introduction to the Theory of Computation, 1997;
s
Alfred Aho, Ravi Sethi e Jeffrey Ullman,
Compilers : principles, techniques, and tools, 1986.
PLSM, ACP LFA0910 9
Avaliao
s
2 comp. de avaliao, terico-prtica e prtica, a 50% cada
s
Componente terico-prtica (nota mnima de 7,5):
x
do tipo misto, com 2 provas escritas presenciais:
s
uma a meio do semestre, com peso 40%
s
uma na poca de exame, com peso 60%
s
Componente prtica (nota mnima de 8,5):
x
do tipo contnuo, com 3 elementos de avaliao:
s
dois trabalhos prticos, com peso 45% cada
Mximo 4 elementos por grupo
s
desempenho nas aulas prticas, com peso 10%
s
notas superiores a 17 exigem a prestao de uma prova de aferio
s
Trabalhadores-estudantes:
x
desempenho distribudo pelos trabalhos
s
Repetentes:
x
podem optar por herdar 90% da nota do ano anterior, no mximo de 15
valores, desde que deixem de frequentar as aulas prticas
PLSM, ACP LFA0910 10
Linguagens
PLSM, ACP LFA0910 11
Noo Informal
s
Uma linguagem um sistema de smbolos usado para comunicar
informao
s
Uma mensagem nessa linguagem uma sequncia de smbolos
s
Mas nem todas as sequncias so vlidas
Logo, uma linguagem caracterizada por:
s
Caracterizadas por
x
um conjunto de smbolos
x
uma forma de descrever o conjunto das sequncias vlidas
PLSM, ACP LFA0910 12
Utilizao
s
Servem para transmitir informao
s
Resolver problemas de
x
Deciso Saber se uma palavra pertence linguagem ou no
x
Funo Dada uma palavra de uma linguagem calcular a palavra de
outra linguagem
PLSM, ACP LFA0910 13
Exemplos Linguagens 1
s
O conjunto {"abc", "bbb", "aaa"}
x
Cada elemento do conjunto uma sequncia denida sobre o conjunto
{a, b, c}
s
Endereos de correio electrnico
x
Cada elemento uma sequncia de caracteres alfanumricos contendo
uma ocorrncia do smbolo @ e uma ou mais ocorrncias do smbolo .
s
Conjunto das sequncias binrias com um nmero par de uns
x
Cada elemento do conjunto uma sequncia denida sobre o conjunto
{0, 1}
s
Conjunto dos vocbulos em portugus
x
Cada vocbulo uma sequncia denida sobre o conjunto das letras
(incluindo as vogais acentuadas e o )
PLSM, ACP LFA0910 14
Exemplos Linguagens 2
s
O conjunto das sequncias capicuas denidas com as letras a e b
x
Cada elemento do conjunto uma sequncia denida sobre o conjunto
{a, b}
s
O conjunto das sequncias reconhecidas por uma mquina de calcular
x
Cada elemento do conjunto uma sequncia denida sobre o conjunto
{0, 1, , 9, +, }
s
A linguagem Java
x
Cada elemento do conjunto uma sequncia de identicadores, palavras
reservadas, operadores e caracteres de pontuao
s
A Lngua portuguesa
x
Cada elemento do conjunto um texto em portugus, portanto uma
sequncia denida sobre o conjunto dos vocbulos mais os sinais de
pontuao
PLSM, ACP LFA0910 15
Noes Bsicas 1
Denio Alfabeto
Conjunto de smbolos ou letras
Em geral, nito e no vazio
Exemplos
s
A
1
={0, 1} o alfabeto do conjunto dos nmeros binrios
s
A
2
={0, 1, . . . , 9} o alfabeto do conjunto dos nmeros decimais
s
A
3
={a, . . . , z, 0, . . . , 9, +, -, , , (, )} alfabeto usado na escrita de
expresses aritmticas
s
Qual o alfabeto da linguagem Java?
s
Qual o alfabeto do conjunto dos vocbulos em portugus?
s
Qual o alfabeto da Lngua Portuguesa?
PLSM, ACP LFA0910 16
Noes Bsicas 2
Denio Palavra
Uma palavra sobre um alfabeto A uma sequncia nita de smbolos u =
a
1
a
2
. . . a
n
com a
i
An 0
Exemplos
s
A
1
={0, 1}
0010 000
s
A
2
={0, 1, . . . , 9}
2010 2009 000
s
A
3
={a, . . . , z, 0, . . . , 9, +, , , , (, )}
a-(2-b) )a1+3-
s
Palavras sobre o alfabeto Java?
s
Palavras sobre o alfabeto dos vocbulos em Portugus?
Denio Palavra Vazia
a sequncia de 0 (zero) smbolos e denota-se por . Note que no pertence
ao alfabeto.
PLSM, ACP LFA0910 17
Noes Bsicas 3
Denio Subpalavra
x subpalavra de y se existem v e w tal que y = vxw
Gracamente
v x w
y
Denio Prexo
Se v = ento x um prexo de y e escreve-se x
P
y
Propriedades
s
x
P
x (reexividade)
s
x
P
y
P
w x
P
w (transitividade)
s
x
P
y
P
x x = y (anti-simetria)

P
uma relao de ordem parcial
Denio Suxo
Se w = ento x um suxo de y
PLSM, ACP LFA0910 18
Operaes sobre Palavras 1
Denio Comprimento
O comprimento da palavra u denota-se |u| e representa o seu nmero de sm-
bolos
s
O comprimento da palavra vazia 0
|| = 0
Denio Reverso
O reverso de uma palavra u a palavra, denotada por u
R
, que se obtm inver-
tendo a ordem dos smbolos de u
u = u
1
u
2
u
n
u
R
= u
n
u
2
u
1
PLSM, ACP LFA0910 19
Operaes sobre Palavras 2
s
habitual interpretar-se a palavra u como uma funo
u : {1 n} A, com n =|u|
s
u(i) representa o i-simo smbolo de u
Denio Teste de Ocorrncia
Por vezes necessrio testar se o smbolo a ocorre na posio i de uma palavra
u
u
a
(i) =
_
1 se u(i) = a
0 caso contrrio
Denio Nmero de Ocorrncias
O nmero de ocorrncias de um smbolo a numa palavra u dado por
#(a, u) =
|u|

i=1
u
a
(i)
PLSM, ACP LFA0910 20
Operaes sobre Palavras 3
Denio Concatenao
A concatenao, ou produto, das palavras u = a
1
a
2
. . . a
n
e v = b
1
b
2
. . . b
m
a
palavra
u.v = uv = a
1
a
2
. . . a
n
b
1
b
2
. . . b
m
Propriedades da concatenao:
s
|u.v| =|u| +|v|
s
u.(v.w) = (u.v).w = u.v.w (associatividade)
s
u. = .u = u (elemento neutro)
Denio Potncia
A potncia de ordem n, com n 0, de uma palavra u denota-se por u
n
e repre-
senta a concatenao de n rplicas de u, ou seja, uu u
. .
n
.
Exemplos
s
(ab)
3
=ababab
s

n
= n 0
s
u
0
=
PLSM, ACP LFA0910 21
Noes sobre Linguagens 1
Denio Linguagem
Dado umalfabeto A, uma linguagemL umconjunto nito ou innito de palavras
sobre A
Exemplos sobre o alfabeto A ={0, 1}
s
As palavras de comprimento igual ou inferior a 2
{, 0, 1, 00, 01, 10, 11}
s
As palavras compostas unicamente por 0s
{0, 00, 000, . . .}
s
As palavras compostas s por 0s ou por 1s e de comprimento mpar
{0, 1, 000, 111, . . .}
s
A linguagem vazia
{} = / 0
s
A linguagem composta pela palavra vazia
{}
PLSM, ACP LFA0910 22
Noes sobre Linguagens 2
Denio A

O conjunto de todas as palavras sobre um alfabeto A incluindo a palavra vazia


representado por A

Propriedades
s
Qualquer linguagem L um subconjunto de A

s
{} A

s
{} A

s
A A

Exemplos
s
A ={a} A

={, a, aa, . . .}
s
A ={0, 1} A

={, 0, 1, 00, 01, 10, 11, . . .}


PLSM, ACP LFA0910 23
Operaes sobre Linguagens 1
Denio Reunio
A reunio de duas linguagens L
1
e L
2
denota-se por L
1
L
2
e dada por
L
1
L
2
={u| u L
1
u L
2
}
Denio Interseco
A interseco de duas linguagens L
1
e L
2
denota-se por L
1
L
2
e dada por
L
1
L
2
={u| u L
1
u L
2
}
Sobre o alfabeto A ={a, b} considere as linguagens
L
a
={u| u comea por a} ={aw| w A

}
L
b
={u| u termina com a} ={wa| w A

}
s
L = L
a
L
b
?
s
L = L
a
L
b
?
PLSM, ACP LFA0910 24
Operaes sobre Linguagens 2
Denio Diferena
A diferena entre duas linguagens L
1
e L
2
denota-se por L
1
L
2
e dada por
L
1
L
2
={u| u L
1
u L
2
}
Denio Complementao
A complementao da linguagem L sobre o alfabeto A denota-se por L ou L
C
e
dada por
L = A

L ={u| u L}
Sobre o alfabeto A ={a, b} considere as linguagens
L
a
={u| u comea por a} ={aw| w A

}
L
b
={u| u termina com a} ={wa| w A

}
s
L = L
a
L
b
?
s
L = L
a
?
PLSM, ACP LFA0910 25
Operaes sobre Linguagens 3
A reunio, a interseco e a complementao gozam das leis de DeMorgan:
L
1
(L
2
L
3
) = (L
1
L
2
) (L
1
L
3
)
L
1
(L
2
L
3
) = (L
1
L
2
) (L
1
L
3
)
PLSM, ACP LFA0910 26
Operaes sobre Linguagens 4
Denio Concatenao
A concatenao de duas linguagens L
1
e L
2
denota-se por L
1
.L
2
e dada por
L
1
.L
2
={uv | u L
1
v L
2
}
A concatenao goza das propriedades:
s
L
1
.(L
2
.L
3
) = (L
1
.L
2
).L
3
= L
1
.L
2
.L
3
(associativa)
s
L.{} ={}.L = L (ex. de elemento neutro)
s
L. / 0 = / 0.L = / 0 (ex. de elemento absorvente)
s
L
1
.(L
2
L
3
) = L
1
.L
2
L
1
.L
3
(distributiva em relao reunio)
s
L
1
.(L
2
L
3
) = L
1
.L
2
L
1
.L
3
(distributiva em relao interseco)
Sobre o alfabeto A ={a, b} considere as linguagens
L
a
={u| u comea por a} ={aw| w A

}
L
b
={u| u termina com a} ={wa| w A

}
s
L = L
a
.L
b
?
s
L = L
a
.L
a
?
PLSM, ACP LFA0910 27
Operaes sobre Linguagens 5
Denio Potncia
A potncia de ordem n da linguagem L denota-se por L
n
e denida indutiva-
mente por
L
0
={}
L
n+1
= L
n
.L
Denio Fecho de Kleene
O fecho de Kleene da linguagem L denota-se por L

e dado por
L

= L
0
L
1
L
2
=

_
i=0
L
i
Sobre o alfabeto A ={a, b} considere as linguagens
L
a
={u| u comea por a} ={aw| w A

}
L
b
={u| u termina com a} ={wa| w A

}
s
L
a
2
?
s
L
a

?
PLSM, ACP LFA0910 28
Notas sobre as Operaes
s
Nos operadores binrios no necessrio que as linguagens estejam
denidas sobre o mesmo alfabeto
s
Sejam as linguagens L
a
e L
b
denidas, respectivamente, sobre os alfabetos
A
a
e A
b
s
A linguagem L
a
L
b
est denida sobre que alfabeto?
PLSM, ACP LFA0910 29
Linguagens Regulares
PLSM, ACP LFA0910 30
Denio de Linguagem Regular
Denio Linguagem Regular
A classe das linguagens regulares sobre o alfabeto A dene-se indutivamente
da seguinte forma:
s
O conjunto vazio, / 0, uma linguagem regular (LR)
s
Qualquer que seja o a A, o conjunto {a} uma LR
s
Se L
1
e L
2
so linguagens regulares, ento L
1
L
2
uma LR
s
Se L
1
e L
2
so linguagens regulares, ento L
1
.L
2
uma LR
s
Se L
1
uma linguagem regular, ento (L
1
)

uma LR
s
Nada mais linguagem regular
s
As linguagens regulares so construdas a partir das operaes
x
Unio
x
Concatenao
x
Fecho de Kleene
s
Note que {} uma LR, uma vez que {} = / 0

s
Qualquer linguagem nita uma LR
PLSM, ACP LFA0910 31
Exerccio
Com base na denio, mostre que o conjunto dos nmeros binrios
comeados em 1 e terminados em 0 uma LR sobre o alfabeto A ={0, 1}
PLSM, ACP LFA0910 32
Denio de Expresso Regular
Denio Expresso Regular
O conjunto das expresses regulares sobre o alfabeto A dene-se
indutivamente da seguinte forma:
s
() uma expresso regular (ER) que representa a LR {}
s
Qualquer que seja o a A, a uma ER que representa a LR {a}
s
Se e
1
e e
2
so ER representando respectivamente as LR L
1
e L
2
, ento
(e
1
|e
2
) uma ER representando a LR L
1
L
2
s
Se e
1
e e
2
so ER representando respectivamente as LR L
1
e L
2
, ento
(e
1
e
2
) uma ER representando a LR L
1
.L
2
s
Se e
1
uma ER representando a LR L
1
, ento e
1

uma ER representando
a LR (L
1
)

s
Nada mais expresso regular
s
habitual representar-se por a ER ()

Representa a linguagem {}
PLSM, ACP LFA0910 33
Propriedades das Expresses Regulares 1
Operao de escolha (e
1
|e
2
)
s
e
1
| e
2
= e
2
| e
1
(comutativa)
s
e
1
| (e
2
| e
3
) = (e
1
| e
2
) | e
3
= e
1
| e
2
| e
3
(associativa)
s
e
1
| () = () | e
1
= e
1
(existncia de elemento neutro)
s
e
1
| e
1
= e
1
(idempotncia)
Operao de concatenao (e
1
e
2
)
s
e
1
(e
2
e
3
) = (e
1
e
2
)e
3
= e
1
e
2
e
3
(associativa)
s
e
1
= e
1
= e
1
(existncia de elemento neutro)
s
e
1
() = ()e
1
= () (existncia de elemento absorvente)
s
no goza da propriedade comutativa
PLSM, ACP LFA0910 34
Propriedades das Expresses Regulares 2
Operaes de escolha e concatenao
s
e
1
(e
2
| e
3
) = e
1
e
2
| e
1
e
3
distributiva esquerda da concatenao em relao
escolha
s
(e
1
| e
2
)e
3
= e
1
e
3
| e
2
e
3
distributiva direita da concatenao em relao
escolha
Operao de fecho
s
(e

= e

s
(a

| b

= (a| b)

s
(a| b

= (a| b)

Ateno:
s
(e
1
| e
2
)

= e

1
| e

2
s
(e
1
e
2
)

= e

1
e

2
PLSM, ACP LFA0910 35
Simplicao notacional
s
Na escrita de expresses regulares assume-se que a operao de fecho ()
tem precedncia em relao operao de concatenao e esta tem
precedncia em relao operao de escolha (|)
s
O uso destas precedncias permite a queda de alguns parntesis e
consequentemente uma notao simplicada
s
Determine uma expresso regular que represente o conjunto das
sequncias binrias com 2 zeros
s
Sobre o alfabeto A ={a, b, , z} construa uma expresso regular que
reconhea a linguagem
L ={w A

| #(a, w) = 3}
PLSM, ACP LFA0910 36
Extenses notacionais
s
e+ = e.e
s
e? = (e|)
s
[a
1
a
2
a
3
a
n
] = (a
1
| a
2
| a
3
| | a
n
)
s
[a
1
-a
n
] = (a
1
| | a
n
)
s
[a
1
a
2
a
3
a
n
] representa um smbolo diferente dos dados
s
[a
1
-a
n
] idem
s
e{n} = e.e. .e
. .
n
s
e{n
1
, n
2
} = e.e. .e
. .
n
1
,...,n
2
s
e{n, } = e.e. .e
. .
n,...
s
Sobre o alfabeto A ={a, b, , z} construa uma expresso regular que
reconhea a linguagem
L ={w A

| #(a, w) = 3}
PLSM, ACP LFA0910 37
Representao Grca 1
s
O diagrama representa a linguagem regular (b.a)

c
b
a
s
Diagramas para cada um dos operadores
ER Diagrama Linguagem
/ 0 {}
{}
a A

{a}
PLSM, ACP LFA0910 38
Representao Grca 2
ER Diagrama Linguagem
e. f

L(e).L(e)
e| f

L(e) L( f )
e

L(e)

PLSM, ACP LFA0910 39


Autmatos Finitos Determinsticos
PLSM, ACP LFA0910 40
Autmato Finito 1
s
Um autmato nito um mecanismo reconhecedor das palavras de uma
linguagem, baseado na noo de estado e na de transio entre estados
fita de trabalho
Unidade de Controlo
fita de sada fita de entrada
s
Caractersticas:
1. nmero nito de estados
2. ta de entrada: s de leitura, acesso sequencial ou aleatrio
3. ta de sada: s de escrita, de tipo sim/no nos reconhecedores
4. ta de trabalho: funcionamento em pilha, se existir
PLSM, ACP LFA0910 41
Autmato Finito 2
s
Um autmato nito um mecanismo reconhecedor das palavras de uma
linguagem, baseado na noo de estado e na de transio entre estados
Unidade de Controlo
sim / no fita de entrada
s
Autmato nito determinista:
x
entrada sequencial
x
sada do tipo sim/no
x
sem pilha de trabalho
PLSM, ACP LFA0910 42
Denio
Denio Autmato Finito Determinista
Um autmato nito determinista (AFD) um quntuplo M = (A, Q, q
0
, , F), em
que:
s
A o alfabeto de entrada
s
Q um conjunto nito no vazio de estados
s
q
0
Q o estado inicial
s
: QA Q uma funo que determina a transio entre estados
s
F Q o conjunto dos estados de aceitao
s
Representao da funo de transio
x
Conjunto de triplos QAQ
x
Matriz de |Q| linhas por |A| colunas. As clulas contm elementos de Q
x
Grafo em que
s
os vrtices so os estados Q
s
os arcos esto etiquetados com smbolos de A
PLSM, ACP LFA0910 43
Representao Grca 1
s
A ={0, 1}
s
Q ={A, B,C}
s
q
0
= A
s
={(A, 0, B), (A, 1, A), (B, 0,C), (B, 1, B), (C, 0,C), (C, 1,C)}
s
F ={B}
Funo de transio

0
1

0
0,1
PLSM, ACP LFA0910 44
Representao Grca 2
s
A ={0, 1}
s
Q ={A, B,C}
s
q
0
= A
s
={(A, 0, B), (A, 1, A), (B, 0,C), (B, 1, B), (C, 0,C), (C, 1,C)}
s
F ={B}
Estados de aceitao

0
1

0
0,1
PLSM, ACP LFA0910 45
Representao Grca 3
s
A ={0, 1}
s
Q ={A, B,C}
s
q
0
= A
s
={(A, 0, B), (A, 1, A), (B, 0,C), (B, 1, B), (C, 0,C), (C, 1,C)}
s
F ={B}
Estado inicial

0
1

0
0,1
PLSM, ACP LFA0910 46
Exemplo de AFD 1
Represente textualmente o AFD seguinte
s
A =?
s
Q =?
s
q
0
=?
s
=?
s
F =?

1
0

1
0
1
PLSM, ACP LFA0910 47
Exemplo de AFD 2
Represente textualmente o AFD seguinte
s
A =?
s
Q =?
s
q
0
=?
s
=?
s
F =?

0
1

0
1

0
0,1
PLSM, ACP LFA0910 48
Linguagem Reconhecida por um AFD
Denio Palavra Aceite por AFD
Diz-se que um AFD M = (A, Q, q
0
, , F), aceita uma palavra u A

com
u = a
1
a
2
a
n
se existir uma sequncia de estados s
0
, s
1
, , s
n
, que satisfaa as
seguintes condies:
s
s
0
= q
0
s
i = 1, , n, s
i
= (s
i1
, a
i
)
s
s
n
F
Caso contrrio diz-se que M rejeita a sequncia de entrada
s
Seja

: QA

Q a extenso de denida indutivamente por


x

(q, ) = q
x

(q, av) =

((q, a), v), com a Av A

s
M aceita u se

(q
0
, u) F
Denio Linguagem Reconhecida por AFD
L(M) ={u A

| M aceita u} ={u A

(q
0
, u) F}
PLSM, ACP LFA0910 49
Projecto de um AFD
s
Quantos estados so necessrios?
s
Qual o estado inicial?
s
Se um estado de aceitao o surgimento de um smbolo invalida a
palavra?
s
Determinar para cada estado e smbolo qual o novo estado
s
Projecte um AFD sobre o alfabeto {0, 1} que reconhea sequncias com um
nmero par de 0
s
Projecte um AFD que reconhea as sequncias denidas sobre o alfabeto
A ={a, b, c} que satisfazem o requisito de qualquer b ter um a
imediatamente sua esquerda e um c imediatamente a sua direita
PLSM, ACP LFA0910 50
Reduo de um AFD 1
s
AFD que reconhece as sequncias denidas sobre o alfabeto A ={a, b, c}
que satisfazem o requisito de qualquer b ter um a imediatamente sua
esquerda e um c imediatamente a sua direita
s
Compare os estados A e D
x
Deste conjunto de estados para onde transita o autmato com os
smbolos a, b e c?

b
c
a

b
a,b,c
a,b

c
c
a
b
PLSM, ACP LFA0910 51
Reduo de um AFD 2
s
Os estados A e D podem ser fundidos
s
O autmato resultante no pode ser reduzido

c
a

b
c
a

b
a,b,c
c
a,b
PLSM, ACP LFA0910 52
Algoritmo de Reduo de um AFD 1
s
Considere o AFD M = (A, Q, q
0
, , F)
s
Dois estados s
1
e s
2
so equivalentes
u A

(s
1
, u) F

(s
2
, u)
Denio Classe de Equivalncia
O conjunto de estados equivalentes a s denotado por [s] e representa uma
classe de equivalncia
s x
(s
1
F s
2
F) (s
1
F s
2
F)
ou so de aceitao ou no
x
a A (s
1
, a) = (s
2
, a) ((s
1
, a) {s
1
, s
2
}(s
2
, a) {s
1
, s
2
})
ou transita para o mesmo estado
ou transita para o subconjunto {s
1
, s
2
}
PLSM, ACP LFA0910 53
Algoritmo de Reduo de um AFD 2
s
Considere o AFD M = (A, Q, q
0
, , F)
1. Dois subconjuntos de Q: C
1
= F e C
2
= QF
2. Se existir um subconjunto C
i
com dois estados s
1
e s
2
tal que (s
1
, a) e
(s
2
, a) pertencem a subconjuntos diferentes
3. Ento s
1
e s
2
no podem car no mesmo subconjunto
4. Dividir C
i
em dois ou mais subconjuntos e voltar a 2
5. Seno todos os subconjuntos C
i
so classes de equivalncia
PLSM, ACP LFA0910 54
Exemplo de Reduo de um AFD 1
s
Subconjunto C
1
={E, F}
s
Subconjunto C
2
={A, B,C, D}

1
0

1
0
1
0
1
0
1
0
1
PLSM, ACP LFA0910 55
Exemplo de Reduo de um AFD 2
s
Subconjunto C
1
={E, F}
s
Subconjunto C
2,1
={A, B}
s
Subconjunto C
2,2
={C, D}

1
0

1
0
1
0
1
0
1
PLSM, ACP LFA0910 56
Exemplo de Reduo de um AFD 3
s
Subconjunto C
1
={E, F}
s
Subconjunto C
2,1
={A, B}
s
Subconjunto C
2,2
={C, D}

1
0
1
0
1
PLSM, ACP LFA0910 57
Congurao de um AFD
1 0 0 1 0 1 1
s
1
s
4
s
3
s
2
fita de entrada
Unidade de Controlo
Denio Congurao de um AFD
Dado um AFD M = (A, Q, q
0
, , F) e uma palavra u A

uma congurao de M
na entrada u um tuplo (q, [p, u]) em que
s
q um estado Q
s
[p, u] uma congurao da ta de entrada
s
p {1, 2, }
PLSM, ACP LFA0910 58
Exerccio
Construa um AFD que reconhea as palavras que contm a subpalavra abac
sobre o alfabeto {a, b, c}
PLSM, ACP LFA0910 59
Autmatos Finitos No-Determinsticos
PLSM, ACP LFA0910 60
Motivao
s
Um AFD s tem um nico o de execuo
(q
0
, [1, u]) ((q
0
, u(1)), [2, u])
s
Um Autmato Finito No-Determinstico (AFND) tem mltiplos os de
execuo
x
Comportamento no previsvel
x
No-determinismo
s
Tm maior poder expressivo
PLSM, ACP LFA0910 61
Exemplo 1
Seja a linguagem cujas palavras tm a subpalavra bb ou cc
e = (a|b|c) (bb|cc)(a|b|c)

a,c

b
a,c

b
a,b,c

a,b

c
a,b

c
a,b,c

a,b,c

c

b
a,b,c
c
PLSM, ACP LFA0910 62
Exemplo 2
Seja a linguagem cujas palavras s tm as ou bs mais a palavra vazia
e = (a|b)

b,c
a,b,c

a,c
a,b,c

a
b
PLSM, ACP LFA0910 63
Percursos Alternativos 1
s
Do mesmo estado partem vrias hipteses para o mesmo smbolo
s
H transies etiquetadas com
s
H arcos ausentes
Sobre o alfabeto A ={a, b, c} considere a linguagem
L ={wax | w A

x {b, c}}

a,b,c

b,c
Quais os percursos percorridos ao reconhecer a palavra abab?
PLSM, ACP LFA0910 64
Percursos Alternativos 2

b
PLSM, ACP LFA0910 65
Percursos com Transies 1

0,1

0,

1
A palavra 1011 reconhecida pelo AFND?
PLSM, ACP LFA0910 66
Percursos com Transies 2

0
1

1
1

1
PLSM, ACP LFA0910 67
Denio de AFND
Denio Autmato Finito No-Determinista
Um autmato nito no determinista um quntuplo M = (A, Q, q
0
, , F), em
que:
s
A o alfabeto de entrada
s
Q um conjunto nito no vazio de estados
s
q
0
Q o estado inicial
s
(QA

Q) a relao de transio entre estados, com A

= A{}
s
F Q o conjunto dos estados de aceitao
s
Apenas a denio de difere em relao aos AFD
s
Se se representar na forma de uma tabela, as clulas so preenchidas
com elementos de (Q), ou seja, sub-conjuntos de Q
PLSM, ACP LFA0910 68
Representao Textual de AFND

0,1

0,

1
s
A ={0, 1}
s
Q ={A, B,C, D}
s
q
0
= A
s
F ={D}
s
={(A, 0, A), (A, 1, A), (A, 1, B), (B, ,C), (B, 0,C), (C, 1, D)}
PLSM, ACP LFA0910 69
Linguagem Reconhecida por um AFND
Denio Palavra Aceite por AFND
Diz-se que um AFND M = (A, Q, q
0
, , F), aceita uma palavra u A

se u se
puder escrever na forma u = u
1
u
2
u
n
, com u
i
A

, e existir uma sequncia de


estados s
0
, s
1
, , s
n
, que satisfaa as seguintes condies:
1. s
0
= q
0
2. qualquer que seja o i = 1, , n, (s
i1
, u
i
, s
i
)
3. s
n
F
Caso contrrio diz-se que M rejeita a entrada
s
Note que n pode ser maior que |u|, porque alguns dos u
i
podem ser
s
Usar-se- a notao q
i
u
q
j
para representar a existncia de uma palavra u
que conduza do estado q
i
ao estado q
j
Denio Linguagem Reconhecida por AFND
L(M) ={u | q
0
u
q
f
q
f
F}
PLSM, ACP LFA0910 70
Equivalncia entre AFD e AFND 1
s
A classe das linguagens cobertas por um AFD a mesma que a classe das
linguagens cobertas por um AFND
s
Se M um AFD, ento M

AFND : L(M

) = L(M)
s
Se M

um AFND, ento M AFD : L(M) = L(M

)
s
Como determinar um AFND equivalente a um AFD dado ?
s
Como determinar um AFD equivalente a um AFND dado ?
PLSM, ACP LFA0910 71
Equivalncia entre AFD e AFND 2
s
Pelas denies de AFD e AFND, um AFD um AFND
x
Q, q
0
e F tm a mesma denio
x
Nos AFD : QA Q
x
Nos AFND QA

Q
x
Mas, se : QA Q ento QAQ QA

Q
x
Logo, um AFD um AFND
PLSM, ACP LFA0910 72
Equivalncia entre AFD e AFND 3
s
Por observao da rvore de percursos
Um AFND num dado instante encontra-se num sub-conjunto de Q
s
Os subconjuntos de Q so em nmero nito
s
possvel construir um Q

em que
x
Cada estado q

corresponde a um subconjunto de Q
s
Dado um AFND M = (A, Q, q
0
, , F), considere o AFD M

= (A, Q

, q

0
,

, F

)
onde:
x
Q

=(Q)
x
q

0
o subconjunto de Q constitudo por q
0
todos os alcanveis a partir
dele por ocorrncias de s
x
F ={ f

(Q) | f

F = / 0}
x

=(Q) A (Q), com

(q

, a) =

qq
{(q, a)} fechado em
s
M e M

reconhecem a mesma linguagem


PLSM, ACP LFA0910 73
Exemplo de Converso de AFND em AFD 1
s
Na prtica no necessrio considerar todos os subconjuntos de Q
s
Partindo de q

0
podemos obter os subconjuntos representados no AFD
Sobre o alfabeto A = {a, b, c} consi-
dere o AFND

a
b
Q

={X
0
, X
1
, X
2
, X
3
, X
4
, X
5
, X
6
, X
7
}
X
0
={} X
1
={A}
X
2
={B} X
3
={C}
X
4
={A, B} X
5
={A,C}
X
6
={B,C} X
7
={A, B,C}
PLSM, ACP LFA0910 74
Exemplo de Converso de AFND em AFD 2

c
a
b,c
b
a,c
a,b,c
PLSM, ACP LFA0910 75
Operaes sobre AFD
s
Sobre o alfabeto A ={a, b, c}, sejam L
1
e L
2
as duas linguagens seguintes:
L
1
={aw| w A

}
L
2
={wa| w A

}
s
Como construir um AFD ou AFND que reconhea:
x
L
1
complementao
x
L = L
1
L
2
reunio
x
L = L
1
L
2
concatenao
x
L
1

fecho de Kleene
x
L = L
1
L
2
interseco
PLSM, ACP LFA0910 76
Complementao de AFD 1
M
1
L(M
1
) M L(M
1
)
PLSM, ACP LFA0910 77
Complementao de AFD 2
s
Seja M
1
= (A
1
, Q
1
, q
1
,
1
, F
1
) um autmato AFD qualquer
s
O AFD M = (A
1
, Q
1
, q
1
, , F), onde
F = Q
1
F
1
implementa a complementao de M
1
, ou seja, L(M) = L(M
1
).
PLSM, ACP LFA0910 78
Reunio de AFDs 1
M
1
L(M
1
)
M
2
L(M
2
)

M L(M) = L(M
1
) L(M
2
)
PLSM, ACP LFA0910 79
Reunio de AFDs 2
s
Seja M
1
= (A, Q
1
, q
1
,
1
, F
1
) e M
2
= (A, Q
2
, q
2
,
2
, F
2
) dois autmatos (AFD ou
AFND) quaisquer
s
O AFND M = (A, Q, q
0
, , F), onde
Q = Q
1
Q
2
{q
0
}, com q
0
Q
1
q
0
Q
2
F = F
1
F
2
=
1

2
{(q
0
, , q
1
), (q
0
, , q
2
)}
implementa a reunio de M
1
e M
2
x
ou seja, L(M) = L(M
1
) L(M
2
)
PLSM, ACP LFA0910 80
Concatenao de AFDs 1
M
1
L(M
1
) M
2
L(M
2
)

M L(M) = L(M
1
).L(M
2
)
PLSM, ACP LFA0910 81
Concatenao de AFDs 2
s
Seja M
1
= (A, Q
1
, q
1
,
1
, F
1
) e M
2
= (A, Q
2
, q
2
,
2
, F
2
) dois autmatos (AFD ou
AFND) quaisquer
s
O AFND M = (A, Q, q
0
, , F), onde
Q = Q
1
Q
2
q
0
= q
1
F = F
2
=
1

2
(F
1
{}{q
2
})
implementa a concatenao de M
1
e M
2
x
ou seja, L(M) = L(M
1
) L(M
2
)
PLSM, ACP LFA0910 82
Fecho de Kleene de AFDs 1
M
1
L(M
1
)

M L(M) = L(M
1
)

PLSM, ACP LFA0910 83


Fecho de Kleene de AFDs 2
s
Seja M
1
= (A, Q
1
, q
1
,
1
, F
1
) um autmato (AFD ou AFND) qualquer
s
O AFND M = (A, Q, q
0
, , F), onde
Q = Q
1
{q
0
}
F = F
1
{q
0
}
=
1
(F
1
{}{q
0
}) {(q
0
, , q
1
)}
implementa o fecho de M
1
x
ou seja, L(M) = L(M
1
)

.
PLSM, ACP LFA0910 84
Interseco de AFDs 1

1
0,1
M
1
L(M
1
)

0
1
0
M
2
L(M
2
)

1
1

1
1
0
1
0
M L(M) = L(M
1
) L(M
2
)
PLSM, ACP LFA0910 85
Interseco de AFDs 2
s
Seja M
1
= (A, Q
1
, q
1
,
1
, F
1
) e M
2
= (A, Q
2
, q
2
,
2
, F
2
) dois autmatos (AFD ou
AFND) quaisquer
s
O AFND M = (A, Q, q
0
, , F), onde
Q = Q
1
Q
2
q
0
= (q
1
, q
2
)
F = F
1
F
2
(Q
1
Q
2
) A

(Q
1
Q
2
)
sendo denido de modo que
((q
i
, q
j
), a, (q

i
, q

j
)) se e s se (q
i
, a, q

i
)
1
e (q
j
, a, q

j
)
2
,
implementa interseco de M
1
e M
2
, ie., L(M) = L(M
1
) L(M
2
).
PLSM, ACP LFA0910 86
Equivalncia entre Expresso Regular e
Autmato Finito
PLSM, ACP LFA0910 87
Converso de uma ER num AFND
s
Recordemos as expresses
regulares
()

a

a
s
A palavra vazia tambm resulta da
aplicao do operador de fecho
expresso ()
s
Os autmatos das expresses
seguintes podem ser obtidos a
partir de aplicao de operaes
sobre autmatos
Expresso Operador
e

fecho de Kleene
e
1
.e
2
concatenao
e
1
|e
2
reunio
PLSM, ACP LFA0910 88
Exemplo de converso de uma ER num AFND
Qual o autmato equivalente expresso regular a|a(a|b|c)

a?
Decomposio da expresso regular:
a | a . a | b | c

. a
PLSM, ACP LFA0910 89
Autmato Finito Generalizado
Denio Autmato Finito Generalizado
Um Autmato Finito Generalizado (AFG) um quntuplo M = (A, Q, q
0
, , F),
em que:
s
A o alfabeto de entrada
s
Q um conjunto nito no vazio de estados
s
q
0
Q o estado inicial
s
(QE Q) a relao a transio entre estados, sendo E o conjunto
das expresses regulares denidas sobre A
s
F Q o conjunto dos estados de aceitao
s
A diferena est na denio da relao
x
Neste caso as etiquetas so expresses regulares
s
Com base nesta denio os automtos nitos deterministas e no
deterministas so autmatos nitos generalizados
PLSM, ACP LFA0910 90
Exemplos de AFG 1
O AFG seguinte representa o conjunto das palavras, denidas sobre o alfabeto
A ={a, b, c}, que contm a sub-palavra aba

[abc]

aba
[abc]
PLSM, ACP LFA0910 91
Exemplos de AFG 2
Qual o AFG que representa as constantes reais em C?

[0-9]

e|E
[0-9]
e|E

[+-]?
[0-9]

.
[0-9]

[+-]?
[0-9]+
PLSM, ACP LFA0910 92
Converso de um AFG numa ER
Denio Autmato Finito Generalizado Reduzido
Um AFG com a forma

em que
s
o estado inicial A no tem arcos de partida e no de aceitao
s
o estado de aceitao B no tem arcos a sair
designa-se por AFG reduzido
Transformando um AFG forma reduzida, a expresso regular e equivalente
ao autmato
PLSM, ACP LFA0910 93
Algoritmo de Converso 1
s
Transformao de um AFG noutro cujo estado inicial no tenha arcos a
chegar
x
Se necessrio, acrescenta-se um novo estado inicial com um arco em
para o antigo
s
Transformao de um AFG noutro com um nico estado de aceitao e
sem arcos de sada
x
Se necessrio, acrescenta-se um novo estado, que passa a ser o nico
de aceitao, que recebe arcos em dos anteriores estados de
aceitao
s
Eliminao dos restantes estados
x
Os estados so eliminados um a um em processos de transformao que
mantm a equivalncia
PLSM, ACP LFA0910 94
Algoritmo de Converso 2
Considere que se pretende eliminar o estado B

s
Para cada par de estados (A
i
,C
j
) necessrio acrescentar um arco com a
expresso regular a
i
.c
j
x
Para ir do estado A
i
ao estado C
j
a subpalavra tem que vericar a
concatenao das expresses regulares a
i
e c
j
s
Se j existir um arco de A
i
para C
j
, esta expresso regular mais uma
opo de transio
PLSM, ACP LFA0910 95
Algoritmo de Converso 3


. c1 e

o1 . cm e

on . c1 e
on . cm e
s
O arco do estado A1 para o estado C1 ca etiquetado com a expresso
regular a
1
.c
1
|e
s
Os restantes pares de estados tm expresses similares
PLSM, ACP LFA0910 96
Algoritmo de Converso 4
Se o estado B tiver uma transio para si prprio

o1

s
Para cada par de estados (A
i
,C
j
) necessrio acrescentar um arco com a
expresso regular a
i
.b

.c
j
x
Para ir do estado A
i
ao estado C
j
a subpalavra tem que vericar a
concatenao das expresses regulares a
i
, b

e c
j
PLSM, ACP LFA0910 97
Exemplo de Converso para AFGR
Considere o autmato sobre o alfabeto A ={0, 1} que aceita palavras com um
nmero mpar de 0s

0
0
1
O algoritmo de remoo de estados parte do autmato seguinte:

0
0
1

PLSM LFA0910 98
FLEX
PLSM LFA0910 99
Linguagem lex
s
lex uma linguagem de programao de esquadrinhadores (scanners), isto
, programas de varrimento de textos procura de padres
s
Os padres so representados por expresses regulares
s
O alfabeto do lex o cdigo ASCII
s
flex um compilador de lex para C
s
Como criar um programa
flex -oficheiro.yy.c ficheiro.yy
gcc -o ficheiro ficheiro.yy.c -lfl
PLSM LFA0910 100
Formato Ficheiro de Entrada
s
O formato do cheiro de entrada consiste em 3 seces separadas por uma
linha contendo %%
x
A primeira seco contm denies
x
A segunda seco contm regras
x
A terceira seco contm cdigo C
definitions
%%
rules
%%
user code
PLSM LFA0910 101
Seco de Denies
s
Contm declaraes de expresses regulares que podem ser usadas na
especicao de regras
s
Contm opes para o flex
s
Qualquer texto contido entre %{ e %} copiado verbatim para o cheiro C
s
Qualquer texto indentado tambm copiado para o cheiro C
DIGIT [0-9]
ID [a-z][a-z0-9]
*
#include <stdio.h>
int num_lines = 0, num_chars = 0;
%%
PLSM LFA0910 102
Seco de Regras
s
O formato de uma regra consiste num padro (expresso regular com
extenses notacionais) seguida de excerto de cdigo C
s
O cdigo pode estar em mltiplas linhas desde que envolto em { e }
s
No cdigo, a varivel yytext contm a cadeia de caracteres que
corresponde expresso regular
s
disparada a regra cujo padro corresponde ao texto de maior comprimento
x
Se h duas ou mais regras, disparada a regra listada em primeiro lugar
DIGIT [0-9]
ID [a-z][a-z0-9]
*
%%
{DIGIT}+ {
printf ("An integer: %s (%d)\n", yytext, atoi (yytext));
}
{DIGIT}+"."{DIGIT}
*
{
printf ("A float: %s (%g)\n", yytext, atof (yytext));
}
PLSM LFA0910 103
Cdigo C
s
A ltima seco contm cdigo que colocado no nal do cheiro C gerado
s
Geralmente tem a funo main(int,char
*
[])
s
A varivel yyin representa o cheiro de texto onde iro ser procurados os
padres
s
A funo yylex() contm o algoritmo de esquadrinhamento
#include <stdio.h>
%%
hello printf ("hello %s", getlogin ());
%%
int main (int argc, char
*
argv[])
{
if (argc == 2 && (yyin = fopen (argv [1], "r")) == NULL) {
yyin = stdin;
}
return yylex ();
}
PLSM LFA0910 104
Controlo das Regras
s
possvel controlar quais as regras que so disparadas
s
Usa-se o mecanismo de start condition
s
A expresso regular pode ser precedida de uma lista de start condition
<SC1,SC2>
s
As start condition so declaradas na seco de denies atravs
x
%s start condition no exclusiva as regras sem start condition tambm
esto activas
x
%x start condition exclusiva s as regras desta start condition esto
activas
s
As start condition so activas atravs da instruo BEGIN(SC)
x
A instruo BEGIN(0) repe o esquadrinhador no estado inicial
s
As start condition so teis para varrer seces de texto que so
sintacticamente diferentes: cadeias de caracteres, comentrios
%x STRING
%%
<STRING>[^"]
*
{/
*
process string contents
*
/}
PLSM LFA0910 105
Padres
Os padres so compostos expresses regulares com extenses notacionais
s
x caracter x
s
. qualquer caracter excepto o m-de-linha
s
[abc] [a-c] qualquer dos caracteres a, b ou c
s
[^abc] [^a-c] qualquer caracter excepto a, b ou c
s
e
*
0 ou mais ocorrncias da expresso e
s
{NOME} expresso regular NOME denida na seco de denies
s
^e expresso regular e no incio de uma linha
s
e$ expresso regular e no m de uma linha
s
<<EOF>> marca de m-de-cheiro
s
[:alnum:] [:alpha:] [:blank:] [:cntrl:] [:digit:]
[:graph:] [:lower:] [:print:] [:punct:] [:space:]
[:upper:] [:xdigit:] entre [ e ] representa um conjunto de
caracteres
PLSM LFA0910 106
Exemplos 1
Um programa em lex que copia os caracteres lidos do stdin para o stdout
%%
Por omisso qualquer smbolo que no reconhecido por uma regra
impresso no stdin
O programa anterior equivalente a
%%
.|"\n" printf ("%s", yytext);
PLSM, ACP LFA0910 107
Mquinas de Moore e de Mealy
PLSM, ACP LFA0910 108
Descrio Informal 1
s
Os Autmatos Finitos podem ser usados em problemas de deciso:
x
Na anlise lexical de um programa de uma linguagem de programao
x
Reconhecimento de padres
s
Que modicao se pode fazer de modo a ser aplicado a um problema de
funo?
x
Dado a descrio de um problema codicado num dado alfabeto
x
Pretende-se uma soluo codicada num alfabeto distinto
s
Dada uma palavra u = a
1
a
2
a
n
como obter a palavra v = b
1
b
2
c
n
?
x
Os smbolos a
i
pertencem ao alfabeto A
x
Os smbolos b
i
pertencem ao alfabeto Z

1
1

0
0
1
PLSM, ACP LFA0910 109
Descrio Informal 2
s
Considere os alfabetos A ={0, 1} e Z ={x, y, z}
s
Considere o Autmato Finito Determinista

1
1

0
0
1
s
Posso produzir uma palavra sobre o alfabeto Z associando um smbolo de Z
s
A cada estado

1
1

0
0
1
s
A cada transio

0/x

1/y
1/x

0/z
0/y
1/z
s
Dependendo do problema, interessa
x
a palavra sobre Z ou
x
o ltimo smbolo de Z que foi produzido
PLSM, ACP LFA0910 110
Descrio Informal 3
s
Deixamos de ter um conjunto de estados de aceitao
s
Passamos a ter
x
Uma funo que associa estados a smbolos do alfabeto Z
: Q Z

1
1

0
0
1
x
Uma funo que dado um estado e um smbolo do alfabeto de entrada A
devolve um smbolo do alfabeto Z
: QA Z

0/x

1/y
1/x

0/z
0/y
1/z
PLSM, ACP LFA0910 111
Mquina de Moore
Denio Mquina de Moore
Uma mquina de Moore um sextuplo M = (A, Q, q
0
, , Z, ) onde
s
A o alfabeto de entrada
s
Q um conjunto nito no vazio de estados
s
q
0
Q o estado inicial
s
: QA Q uma funo que determina a transio entre estados
s
Z o alfabeto de sada
s
: Q Z uma funo que determina a sada da mquina
s
Comparando com os AFD
x
No h conjunto de estados de aceitao F
x
H o conjunto que representa o alfabeto de sada Z
x
H uma funo que produz uma palavra sobre Z : Q Z
PLSM, ACP LFA0910 112
Exemplos de Mquinas de Moore
s
Construa uma mquina de Moore que, recebendo uma palavra denida
sobre o alfabeto {a, b, c}, identique todas as ocorrncias da letra a
x
Interessa a palavra produzida pela mquina
x
So necessrios dois estados
s
Construa uma mquina de Moore que, recebendo uma palavra denida
sobre o alfabeto {a, b, c}, identique todas as ocorrncias da letra a que tm
um b sua esquerda
x
Interessa a palavra produzida pela mquina
x
necessrio distinguir se a ltima letra um b ou no
x
Se a ltima letra um b pode ser produzido ou 0 ou um 1
x
No total so precisos trs estados
PLSM, ACP LFA0910 113
Mquina de Mealy
Denio Mquina de Mealy
Uma mquina de Mealy um sextuplo M = (A, Q, q
0
, , Z, ) onde
s
A o alfabeto de entrada
s
Q um conjunto nito no vazio de estados
s
q
0
Q o estado inicial
s
: QA Q uma funo que determina a transio entre estados
s
Z o alfabeto de sada
s
: QA Z uma funo que determina a sada da mquina
s
Comparando com os AFD
x
No h conjunto de estados de aceitao F
x
H o conjunto que representa o alfabeto de sada Z
x
H uma funo que produz uma palavra sobre Z
PLSM, ACP LFA0910 114
Exemplos de Mquinas de Mealy
s
Construa uma mquina de Mealy que, recebendo uma palavra denida
sobre o alfabeto {a, b, c}, identique todas as ocorrncias da letra a
x
Interessa a palavra produzida pela mquina
x
S necessrio um estado
s
Construa uma mquina de Mealy que, recebendo uma palavra denida
sobre o alfabeto {a, b, c}, identique todas as ocorrncias da letra a que tm
um b sua esquerda
x
Interessa a palavra produzida pela mquina
x
necessrio distinguir se a ltima letra um b ou no
x
So necessrios dois estados
PLSM, ACP LFA0910 115
Comparao entre Moore e Mealy
s
Ambas as mquinas tm o mesmo poder descritivo
s
Nas mquinas de Mealy a sada depende do estado e do smbolo
s
Tipicamente, uma mquina de Mealy precisa de menos estados

a,c

b c
b

a
a,c
b

a,c/0

b/0
a/1
c/0
b/0
PLSM, ACP LFA0910 116
Exemplos de Mquinas de Moore e de Mealy
s
Contrua uma mquina sobre o alfabeto {0, 1} receba uma palavra que
representa um nmero binrio produza o resto da diviso deste nmero por
3
x
Interessa o ltimo smbolo produzida pela mquina
s
Contrua uma mquina sobre o alfabeto {0, 1} receba uma palavra que
representa um nmero binrio produza o quociente da diviso deste nmero
por 3
x
Interessa a palavra produzida pela mquina
s
Sobre o alfabeto {1, 2, 3, 4, 5}, construa uma mquina que modele um
termostto com as seguintes funcionalidades
x
liga o aquecimento quando a temperatura atinge o valor 1 desligando
quando atinge o valor 3
x
liga o arrefecimento quando a temperatura atinge o valor 5 desligando
quando atinge o valor 3
PLSM, ACP LFA0910 117
Converso entre Moore e Mealy
s
Considere as mquinas de Moore e de Mealy da gura seguinte

0
0

1 1
0
0
1
0 1

0/0

1/0
0/1
1/0
0/0
1/1
s
So mquinas equivalentes que recebem sequncias binrias e produzem
um 1 sempre que os dois ltimos smbolos consumidos forem iguais e 0
caso contrrio
s
Sendo equivalentes possvel dada uma mquina de um dos tipos gerar
uma do outro tipo que represente exactamente o mesmo comportamento
PLSM, ACP LFA0910 118
Converso de Moore em Mealy 1
s
Moore produz a sada nos estados e Mealy nas transies
s
A converso de uma mquina de Moore numa de Mealy equivalente pode
obter-se transferindo a sada associada a cada estado para todos os arcos
que chegam a esse estado
s
Formalmente, se M = (A, Q, q
0
, , Z, ) uma mquina de Moore, uma
mquina de Mealy equivalente dada por
M

= (A, Q, q
0
, , Z,

)
onde

(q, a) = ((q, a))



a

a/x
PLSM, ACP LFA0910 119
Converso de Moore em Mealy 2
s
Na mquina de Mealy obtida podem haver estados equivalentes
Denio Estados Equivalentes numa Mquina de Mealy
Um subconjunto de estados C Q equivalente se
s
Para o mesmo smbolo e para todos os estados em C a mquina transita
x
para o mesmo estado
x
ou estados do subconjunto C
s
Para o mesmo smbolo do alfabeto de entrada as transies produzem o
mesmo smbolo do alfabeto de sada
PLSM, ACP LFA0910 120
Exemplo de Converso de Moore em Mealy 1

0
0

1 1
0
0
1
0 1
PLSM, ACP LFA0910 121
Exemplo de Converso de Moore em Mealy 2


1/0

0/1
0/0

1/1 1/0
0/1
0/0
1/1
0/0 1/0
s
Os estados B e D so
equivalentes
x
Com o smbolo 0 a mquina
transita para o estado D
s
As transies produzem o
smbolo 1
x
Com o smbolo 1 a mquina
transita para o estado C
s
As transies produzem o
smbolo 0
s
Os estados C e E tambm so
equivalentes
PLSM, ACP LFA0910 122
Converso de Mealy em Moore 1
s
A funo de sada em Mealy uma : QA Z
s
A funo de sada em Moore uma : Q Z
s
O equivalente Moore de uma mquina de Mealy poder ter tantos estados
quantos os elementos de QZ
x
Nem todos os elementos so alcanveis
s
Poder ser necessrio escolher um estado inicial de entre os possveis,
{q
0
}Z
s
Todos os arcos do origem a um ou mais arcos
x
Todos com o mesmo destino
x
As origens consistem nos estados (q, x) alcanveis
PLSM, ACP LFA0910 123
Converso de Mealy em Moore 2
Formalmente
s
Seja M = (A, Q, q
0
, , Z, ) uma mquina de Mealy
s
A mquina de Moore equivalente M

= (A, Q

, q

0
,

, Z,

) dada por
x
Q ={(q, x) | pa (p, a) = q (p, a) = x}

/x

x
q

0
= (q
0
, x) x Z
x
Na funo de transio

((q, x), a) = ((q, a), (q, a))



a/x
,y1)/.
(B,x)/x
a
(A,yn)/.
a
PLSM, ACP LFA0910 124
Exemplo de Converso de Moore em Mealy 1

0/0

1/0
0/1
1/0
0/0
1/1
PLSM, ACP LFA0910 125
Exemplo de Converso de Moore em Mealy 2

0
0

1 1
0
0
1
0 1
s
O estado Y d origem a dois
estados, um por cada smbolo
produzido nos arcos que chegam
s
O mesmo se passa para o estado
Z
s
necessrio introduzir um estado
para o estado inicial
x
O smbolo produzido
irrelevante
PLSM, ACP LFA0910 126
Teorema da Repetio ou da Bombagem
PLSM, ACP LFA0910 127
Classe das Linguagens Regulares
s
As linguagens que se podem expressar com
x
Expresses regulares
x
Autmatos Finitos Deterministas
x
Autmatos Finitos No-Deterministas
x
Autmatos Finitos Generalistas
pertencem classe das linguagens regulares
s
Ser que todas as linguagens se podem expressar com qualquer dos
formalismos anteriores?
s
Quais os limites que estes formalismos impem?
s
Como determinar se uma linguagem ou no regular?
s
Qualquer linguagem nita uma linguagem regular
PLSM, ACP LFA0910 128
Introduo 1
s
Como se prova se uma linguagem innita ou no regular?
s
As vrias verses do Teorema da Bombagem baseiam-se nos factos
x
dos AFD terem um conjunto nito de estado
x
a linguagem innita ter palavras innitamente longas
x
como aceitar uma palavra innitamente longa com um conjunto nito de
estados
O autmato seguinte reconhece a linguagem innita sobre o alfabeto
A ={0, 1, 2} cujas palavras comeam por 0, terminam com 2 e tm um nmero
par de 1s

0
0,2

2

1
1
0,2
PLSM, ACP LFA0910 129
Introduo 2

0
0,2

2

1
1
0,2
s
O caminho percorrido pelo
autmato para reconhecer a
palavra 0112 contm um ciclo
x
O estado B revisitado
s
Qualquer palavra com um
comprimento superior a 4 implica
a revisita dos estados B e D

2
PLSM, ACP LFA0910 130
Introduo 3
s
Dado um autmato qualquer no possvel dizer qual o comprimento da
menor palavra que implica a revisita de um estado
s
Mas possvel dizer qual o comprimento mnimo que uma palavra deve ter
para se revisitar um estado utilizando o Princpio do Pombal
s
O Princpio do Pombal diz que se existem n locais para os pombos e n+1
pombos, ento existe um local que tem pelo menos 2 pombos
s
Se a palavra tem n smbolos
s
Se o autmato tem m estados
s
Se n m pelo Princpio do Pombal o autmato tem que revisitar pelo menos
um estado
s
Qualquer palavra com um comprimento igual ou superior ao nmero de
estados implica a revisita de estados
PLSM, ACP LFA0910 131
1
a
Verso do Teorema
Denio Teorema da Repetio (1
a
verso)
Se L uma linguagem innita e regular, existe um nmero p > 0 tal que, se
u uma palavra qualquer de L, com |u| p, ento pode-se escrever u = xyz,
satisfazendo as condies: |y| > 0 e x(y)
i
z L, para qualquer i 0
s
O teorema diz que para qualquer palavra de L de comprimento maior que p
existe um ciclo na sub-palavra y
s
O ciclo pode ser repetido vrias vezes i ={1, 2, . . .}
s
O ciclo pode no ser efectuado i = 0
s
O teorema pode ser melhorado tendo em conta o nmero de estados de um
autmato.
PLSM, ACP LFA0910 132
2
a
Verso do Teorema
s
Qualquer palavra com um comprimento igual ou superior ao nmero de
estados implica a revisita de estados
s
Os ciclos podem ocorrer em palavras de comprimento inferior ao nmero de
estados
Denio Teorema da Repetio (2
a
verso)
Se L uma linguagem innita e regular, existe um nmero p > 0 tal que, se
u uma palavra qualquer de L, com |u| p, ento pode-se escrever u = xyz,
satisfazendo as condies: |y| > 0, |xy| p e x(y)
i
z L, para qualquer i 0
s
O parmetro p representa o nmero de estados do autmato
s
A condio |u| p garante a revisita de pelo menos um estado
s
A condio xy p expressa o facto do ciclo ocorrer em palavras de
comprimento igual ou inferior ao nmero de estados
s
O ciclo ocorre na sub-palavra y
s
O ciclo pode ser repetido vrias vezes i ={1, 2, . . .}
s
O ciclo pode no ser efectuado i = 0
PLSM, ACP LFA0910 133
Como Usar o Teorema 1
O teorema diz que
s
se L uma linguagem innita e regular
s
ento

p>0

uL, |u|p

x,y,zA

, u=xyz, |y|>0, |xy|p


|

i0
xy
i
z L
s
O teorema uma implicao
s
Isto signica que o teorema no pode ser usado para demonstrar que uma
dada linguagem regular
s
Na realidade, A B no signica que B A
s
Pode, no entanto, ser usado para demonstrar que uma linguagem no
regular, porque se A B, ento B A
PLSM, ACP LFA0910 134
Como Usar o Teorema 2
O teorema usa-se para provar que uma linguagem no regular
s
Para todo o p maior que zero
s
Existe uma palavra u pertence a L de comprimento superior a p tal que
x
u seja decomposta em 3 sub-palavras x, y e z
x
y no a palavra vazia
x
O comprimento da palavra xy menor ou igual a p
x
Existe uma palavra xy
i
z que no pertence a L
s
A diculdade est na escolha da palavra u
s
necessrio considerar todas as decomposies de u em x, y e z que
satisfazem as condies do teorema
s
Normalmente a palavra u funo de p
PLSM, ACP LFA0910 135
Como No Usar o Teorema
s
Existem linguagens em que a parte direita verdadeira
s
Considere a linguagem
L
1
={w A

| #(a, w) = #(b, w)}


s
Seja p = 4 e considere-se u =abba
s
Se se partir u nos bocados x = , y =ab e z =ba, tem-se
|y| > 0, |xy| p e
i0
x(y)
i
z L
1
s
Quer isto dizer que L
1
regular? No:
x
o facto de se identicar um ciclo para um determinada palavra u no
signica que todas as palavras de comprimento superior ou igual a p
tenham um ciclo
x
mesmo que o ciclo existisse para todas as palavras de comprimento
superior ou igual a p, isso apenas signicaria que a parte direita da
equao anterior era verdadeira, no que a linguagem fosse regular
PLSM, ACP LFA0910 136
Utilizao das Operaes sobre Autmatos
s
possvel provar a no-regularidade recorrendo s operaes sobre
autmatos
x
Interseco, reunio, concatenao e diferena
s
A classe das linguagens regulares fechada sobre estes operadores
x
Se os operandos forem linguagens regulares ento o resultado uma
linguagem regular
x
Se um dos operandos no for uma linguagem regular ento resultado
no uma linguagem regular
s
Para provar que L
1
no regular a operao mais utilizada a interseco
x
Calcula-se L
2
= L
1
L
3
x
Intersecta-se com a linguagem L
3
que se sabe ser regular
x
A linguagem resultante L
2
sabe-se que no regular
x
A concluso que L
1
no regular
PLSM, ACP LFA0910 137
Exemplos 1
Das linguagens seguintes sobre o alfabeto {0, 1} quais so regulares?
L
1
={u | #(0, u) = #(1, u)}
L
2
={0
i
2
| i 0}
L
3
={0
i
1
i
0
i
| i 0}
L
4
={0
i
1
j
| i j 0}
L
5
={0
i
1
j
| 0 i < j}
PLSM, ACP LFA0910 138
Exemplos 2
Demonstrao da no-regularidade de L
1
L
1
={u | #(0, u) = #(1, u)}
s
Considere-se a palavra u =0
p
1
p
x
Note que a palavra escolhida tem um comprimento 2p, qualquer que seja
o p
x
Logo |u| p
s
O prexo de comprimento p de u s tem o smbolo a
s
Qualquer partio de u em bocados x, y e z, de modo que |y| > 0 e |xy| p
impe que y =a
k
, com 0 < k p
s
Mas neste caso x(y)
i
z s pertence a L
1
se i = 1
s
Conclui-se ento que no existe um p > 0 que torne a parte da direita da
equao verdadeira
s
Consequentemente a linguagem L
1
no regular
PLSM LFA0910 139
Autmatos de Pilha Deterministas
PLSM LFA0910 140
Motivao
s
Considere as linguagens sobre o alfabeto A ={0, 1, 2}
L
1
={0
i
1
i
| i > 0}
L
2
={u | cada 0 tem um 1 direita os 0 e 1 esto balanceados}
L
3
={0
i
1
j
| i > j > 0}
L
4
={u2u
R
| #(2, u) = 0}
L
5
={uu
R
| #(2, u) = 0}
L
6
={u | u =0
i
1
i
u =0
i
1
2i
}
s
As linguagens L
i
no so regulares
x
impossvel construir um AFD, AFND ou AFG que reconhea L
i
s
A incluso de memria sob a forma de uma pilha permite reconhecer L
i
PLSM LFA0910 141
Descrio Informal 1
pilha
Unidade de Controlo
sim/nao fita de entrada
s
Numa pilha podemos efectuar as operaes de
x
Inserir o smbolo no topo
x
Retirar o smbolo no topo
s
Em cada instante o Autmato de Pilha pode
x
Avanar a cabea de leitura consumindo um smbolo da palavra de
entrada
A leitura sequencial
x
Operar sobre a pilha
s
Inserir um smbolo
s
Retirar um smbolo
PLSM LFA0910 142
Descrio Informal 2
s
As transies dependem
x
do estado do autmato
x
do smbolo da palavra de entrada
x
do smbolo no topo da pilha
s
O resultado das transies
x
um novo estado
x
opcionalmente avanar a cabea de leitura
x
opcionalmente operar sobre a pilha
s
Usamos o smbolo $ nas
transies para os seguintes
casos:
x
A palavra de entrada pode j
ter sido consumida mas a pilha
tem smbolos
x
A pilha est vazia mas h
smbolos a consumir da
palavra de entrada
$
fita de entrada
0 0 0 1
pilha
$
y
x
PLSM LFA0910 143
Denio de APD
Denio Autmato de Pilha Determinista
Um Autmato de Pilha Determinista (APD) um tuplo (A, Z, Q, q
0
, ,C) com
s
A alfabeto de entrada
x
Implica o conjunto A
$
= A{$} utilizado na funo de transio
s
Z alfabeto da pilha
x
Implica o conjunto Z
$
= Z {$} utilizado na funo de transio
s
Q conjunto de estados
s
q
0
Q estado inicial
s
: QA
$
Z
$
Q{, +}{, pop, pushz} z Z
s
C condio de aceitao
s
$ um smbolo no pertencente aos alfabetos A e Z
s
O conjunto L ={, +}
representa as operaes da
cabea de leitura
x
no se move
x
+ avana uma posio
s
O conjunto P ={, pop, pushz} representa
as operaes sobre a pilha
x
a pilha mantm-se inalterada
x
pop retirar um smbolo
x
pusha inserir o smbolo a
PLSM LFA0910 144
Representao da Funo
s
O APD M = ({0, 1}, {0}, {A, B, C}, A, , {C}) reconhece a linguagem
{u | cada 0 tem um 1 direita os 0 e 1 esto balanceados}
sobre o alfabeto {0, 1}
x
equivalente linguagem que representa as palavras com parntesis
correctamente balanceados
0 $
A 0 A + push0 A + push0
A 1 A + pop B
A $ B C
s
A primeira linha indica o smbolo no topo da pilha
s
A primeira coluna indica o estado actual e o smbolo sobre a cabea de
leitura
s
H casas vazias e omissas
x
Representam conguraes que o Autmato no alcana
x
Representam o estado de aceitao
x
Representam estados de rejeio da palavra
PLSM LFA0910 145
Condio de Aceitao
s
Consideram-se duas condies de aceitao
x
O autmato est num estado de aceitao
x
O autmato est num estado de aceitao e a pilha est vazia
s
possvel transformar um APD com uma condio de aceitao noutro
equivalente com a outra condio de aceitao
x
O autmato resultante pode no ser determinista
PLSM LFA0910 146
Congurao de um APD
Denio Congurao de APD
Uma congurao de um APD um triplo (q, , [n, u]) com
s
q Q estado actual
s
u A

palavra na ta de entrada
s
Z

palavra presente na pilha


s
1 n |u| n representa o smbolo actual
posio da cabea de leitura na ta de entrada
s
Comparando com os autmatos nitos, a congurao tem que incluir o
estado da pilha
s
A congurao inicial de um APD (q
0
, , [1, u])
s
Ou do ponto de vista da funo de transio
x
A ta de entrada contm a palavra u$
x
A pilha contm a palavra $
s
Dadas duas conguraes c
1
e c
2
de um APD M, escrevemos c
1

M
c
2
se
com a funo de transio o autmato A transita da congurao c
1
para a
congurao c
2
PLSM LFA0910 147
Linguagem Reconhecida por APD
Denio Palavra Aceite por APD
Diz-se que um APD M = (A, Z, Q, q
0
, ,C) aceita a palavra u se existir uma
sequncia de conguraes c
0
, c
1
, . . . , c
n
que verica as condies
s
c
0
= (q
0
, , [1, u]) a sequncia comea na congurao inicial
s

i=1,...n
c
i

M
c
i1
o autmato transita entre cada congurao
s
c
n
= (q
n
, , [|u| +1, u]) q
n
C
x
a palavra na ta de entrada foi lida
x
o estado da congurao nal de aceitao
Caso contrrio o autmato rejeita a palavra
Denio Linguagem Reconhecida por APD
Seja o APD M = (A, Z, Q, q
0
, ,C), a linguagem reconhecida por A denota-se
L(M) e denida por
L(M) ={u A

| M aceita u}
PLSM LFA0910 148
Representao Grca de APD
s
Pode-se estender a notao usada nos autmatos nitos e representar a
funo
s
Cada arco direccionado entre os estados q
1
e q
2
etiquetado com um tuplo
A
$
Z
$
LP

0 0 / + 0
0 $ / + 0
1 0 / +

1 $ /
$ 0 /

$ $ /
PLSM LFA0910 149
Projecto de um APD
s
Se pretende detectar uma dada subpalavra, codic-la no autmato
s
Os estados indicam se
x
se pretende inserir smbolos na pilha, ou
x
retirar smbolos comparando-os com os smbolos da palavra na ta de
entrada
s
Projecte os autmato de pilha deterministas que reconheam as seguintes
linguagens sobre o alfabeto A ={0, 1, 2}
L
1
={0
i
1
i
| i > 0}
L
2
={u | cada 0 tem um 1 direita os 0 e 1 esto balanceados}
L
3
={0
i
1
j
| i > j > 0}
PLSM LFA0910 150
Autmatos de Pilha No-Deterministas
PLSM LFA0910 151
Motivao
s
Considere as linguagens sobre o alfabeto A ={0, 1, 2}
L
1
={u2u
R
| #(2, u) = 0}
L
2
={uu
R
| #(2, u) = 0}
L
3
={u | u =0
i
1
i
u =0
i
1
2i
}
s
As linguagens L
i
no so regulares
x
impossvel construir um AFD, AFND ou AFG que reconhea L
i
s
Ser que possvel construir um APD que reconhea L
2
e L
3
?
s
Relativamente a L
2
, um autmato de pilha no-determinista pode optar
x
entre consumir mais um smbolo ou
x
vericar se os smbolos formam o reverso da 1
a
parte
PLSM LFA0910 152
Denio Informal
s
Num autmato de pilha determinista a cada tuplo (a, z, q) (A, Z, Q)
corresponde um nico tuplo do conjunto {, +}{, pop, pusha}
s
Num Autmato de Pilha No Determinista (APND) a cada tuplo (a, z, q)
podem corresponder um ou mais tuplos do conjunto {, +}{, pop, pusha}
s
representa uma relao do conjunto AQZ {, +}{, pop, pusha}
s
Existe no-determinismo porque para uma dada congurao pode existir
mais do que uma transio
s
As denies de congurao, palavra aceite e linguagem reconhecida
relativas aos APD aplicam-se aos APND
PLSM LFA0910 153
Denio de APND
Denio Autmato de Pilha No-Determinista
Um Autmato de Pilha No-Determinista (APND) um tuplo (A, Z, Q, q
0
, ,C)
com
s
A alfabeto de entrada
x
Implica o conjunto A
$
= A{$} utilizado na funo de transio
s
Z alfabeto da pilha
x
Implica o conjunto Z
$
= Z {$} utilizado na funo de transio
s
Q conjunto de estados
s
q
0
Q estado inicial
s
QA
$
Z
$
Q{, +}{, pop, pushz} com z Z representa a relao
de transio
s
C condio de aceitao
s
Qualquer autmato de pilha determinista um APND
PLSM LFA0910 154
Representao da Relao
s
O APD M = ({0, 1}, {0, 1}, {A, B, C}, A, , {C}) reconhece a linguagem
L ={uu
R
} sobre o alfabeto {0, 1}
0 1 $
A 0 A + push0 B + pop A + push0 A + push0
A 1 A + push1 A + push1 B + pop A + push1
B 0 B + pop
B 1 B + pop
B $ C
x
A primeira linha indica o smbolo no topo da pilha
x
A primeira coluna indica o estado actual e o smbolo sobre a cabea de
leitura
s
Existe no determinismo porque existem casas com mais do que uma opo
x
Na casa A, 0, 0 o autmato pode optar entre empilhar o smbolo 0 ou
retirar o smbolo 0
x
Na casa A, 1, 1 o autmato pode optar entre empilhar o smbolo 1 ou
retirar o smbolo 1
PLSM LFA0910 155
No Equivalncia entre APD e APND
s
Existem linguagens reconhecidas por APND para as quais no possvel
construir um APD
s
Considere a linguagem
L
2
={uu
R
| #(2, u) = 0}
s
A rvore de percursos do
APND para reconhecer a
palavra 0000
x
Cada n contm a
congurao do
autmato:
s
estado
s
palavra na pilha
s
palavra por consumir na ta
de entrada
A $ 0000$
A 0$ 000$

A 00$ 00$

B $ 00$

A 000$ 0$

B 0$ 0$

A 0000$ $

B 00$ $

B $ $

s
Para palavras innitamente longas necessrio innitos estados para
caracterizar as palavras na pilha
PLSM LFA0910 156
Autmato de Pilha Generalista
s
Nos autmatos de pilha generalistas a relao de transio caracterizada
por
QAZ

QZ

x
O terceiro componente representa a palavra que desempilhada da pilha
x
O quinto componente representa a palavra a empilhar na pilha
x
No necessrio o smbolo especial $
s
Nas Gramticas Independentes de Contexto de particular interesse os
APG com
QA{}Z Z
2
QZ

x
possvel observar at dois smbolos presentes na pilha
PLSM LFA0910 157
Exemplos de APG
s
Qual a representao grca dos autmatos de pilha generalistas sobre o
alfabeto {0, 1, 2} que reconheam as seguintes linguagens:
L
1
={u2u
R
| #(2, u) = 0}
L
2
={uu
R
}
L
3
={u | (u =0
i
1
i
u =0
2i
1
i
) i > 0}
PLSM LFA0910 158
Gramticas
PLSM LFA0910 159
Introduo
s
Os Autmatos Finitos ou de Pilha focam o reconhecimento de palavras de
uma linguagem
s
Nas Gramticas pretende-se produzir ou gerar as palavras de uma
linguagem
s
Uma gramtica especica um conjunto de produes
x
Tambm se chamam regras de reescrita
PLSM LFA0910 160
Denio Geral
Denio Gramtica
Uma gramtica um tuplo (N, T, S, P) com
s
N conjunto de smbolos no terminais
s
T conjunto de smbolos terminais
x
Estes dois alfabetos so distintos NT = / 0
x
Nestes acetatos consideramos V = NT
s
S N smbolo inicial da gramtica
s
P V

V V

um conjunto de tuplos binrios de palavras


x
Cada tuplo (u, v) chama-se produo
x
Uma produo escreve-se sob a forma
u v
x
u a cabea da produo palavra de comprimento no nulo
x
v o corpo da produo pode ser a palavra vazia
PLSM LFA0910 161
Derivao
s
As produes de uma gramtica permitem obter as palavras representadas
por uma gramtica
Denio Derivao Directa
Dada uma produo u v de uma gramtica G e uma palavra x u w chama-se
derivao directa rescrita de x uw em x v w e escreve-se:
x uw
G
x v w
Denio Derivao
Uma derivao consiste numa sucesso de zero ou mais rescritas consecutivas
e escreve-se:
u

G
v
ou de modo equivalente:
u = u
0

G
u
1

G
. . .
G
u
n1

G
u
n
= v
onde n o comprimento da derivao
s
u
n
G
v representa uma derivao de comprimento n
s
u
+
G
v representa uma derivao de comprimento no nulo
PLSM LFA0910 162
Palavras Derivadas
s
O conjunto de palavras derivadas permite denir as palavras representadas
por uma gramtica
s
Estas palavras resultam da aplicao das produes at se obter uma
palavra contendo unicamente smbolos do alfabeto T
Denio Palavras Derivadas
Dada uma gramtica G = (T, N, S, P) e uma palavra u V

V o conjunto das
palavras derivadas a partir da palavra u representado por
D(u) = {v T

| u

G
v }
Denio Linguagem Gerada por uma Gramtica
Dada uma gramtica G = (T, N, S, P) a linguagem por ela gerada denida por
L(G) = D(S) = {v T

| S

G
v }
PLSM LFA0910 163
Simplicao Notacional
s
Na escrita de uma gramtica com mltiplas produes
A u
1
, A u
2
, . . . , A u
n
utiliza-se o operador | em
A u
1
| u
2
| . . . | u
n
PLSM LFA0910 164
Exemplos 1
s
Considere a seguinte gramtica
S aX | bX
X | aY | bY
Y | aZ | bZ
Z | a | b
x
Qual a derivao da palavra aab?
x
Qual a linguagem gerada por esta gramtica?
s
Considere a seguinte gramtica
S | aS | bS | cX
X aX | bX | cS
x
Qual a derivao da palavra abcaccac?
x
Qual a linguagem gerada por esta gramtica?
PLSM LFA0910 165
Exemplos 2
s
Considere a seguinte gramtica
S | aSa | bSb | cSc
x
Qual a derivao da palavra abba?
x
Qual a linguagem gerada por esta gramtica?
s
Considere a seguinte gramtica
S aSBA
S abA
AB BA
bB bb
aA aa
bA ba
Esta gramtica gera a linguagem {a
n
b
n
a
n
| n > 0}
PLSM LFA0910 166
Tipos de Gramticas
Conforme a forma das produes
s
Gramticas Regulares N T

(N{})
s
Gramticas Independentes de Contexto N (NT)

s
Gramticas Dependentes de Contexto V

V V

PLSM LFA0910 167


Smbolos Produtivos 1
s
Sobre os Smbolos No-Terminais de uma gramtica pretende-se
x
que produzam palavras
x
faam parte de uma derivao iniciada no smbolo inicial
Denio Smbolo Produtivo
Seja uma gramtica G = (T, N, S, P), um smbolo A N diz-se produtivo se gerar
uma linguagem no vazia
D(A) = / 0
Caso contrrio diz-se improdutivo D(A) = / 0
Denio Conjunto dos Smbolos Produtivos
O conjunto dos smbolos produtivos de uma gramtica G representado por
Pr ={A N | D(A) = / 0}
PLSM LFA0910 168
Smbolos Produtivos 2
s
O conjunto dos smbolos produtivos de uma gramtica pode ser construdo
iterativamente
s
Dada uma gramtica G = (T, N, S, P)
1. Comear com Pr
0
= / 0
2. Se A u P e u (Pr
i
T)

3. ento Pr
i+1
= Pr
i
{A} voltar a 2
Construa o conjunto dos smbolos produtivos da seguinte gramtica
S aW | bX
W aY X | X Z
X ZY | b
Y | cY
Z W Y Z | X Y Z
PLSM LFA0910 169
Smbolos Acessveis 1
Denio Smbolo Acessvel
Seja uma gramtica G = (T, N, S, P)
Um smbolo A V = NT diz-se acessvel
se existirem u, v V

tal que
S

G
uAv
Caso contrrio diz-se inacessvel
Denio Conjunto dos Smbolos Acessveis
O conjunto dos smbolos produtivos de uma gramtica G representado por
Ac ={A V | u, v V

G
uAv }
PLSM LFA0910 170
Smbolos Acessveis 2
s
O conjunto dos smbolos acessveis de uma gramtica pode ser construdo
iterativamente
s
Dada uma gramtica G = (T, N, S, P)
1. Comear com Ac
0
={S}
2. Se A Ac
i
e A uBv P
3. ento Ac
i+1
= Ac
i
{B} voltar a 2
Construa o conjunto dos smbolos acessveis da seguinte gramtica
S aW | bX
W cY | a
X aW | b
Y W X Y | Y
Z aW | d
PLSM LFA0910 171
Limpeza de uma Gramtica
s
Os smbolos improdutivos e os smbolos inacessveis formam o conjunto dos
smbolos inteis
s
A limpeza de uma gramtica consiste em eliminar os smbolos inteis
x
Primeiros os improdutivos depois os inteis
s
A gramtica obtida gera a mesma linguagem que a original
s
Uma gramtica sem smbolos inteis diz-se gramtica limpa ou gramtica
reduzida
Obtenha a gramtica limpa da seguinte
S aAb | bB
A cC | bB | a
B dD | b
C AC | BD | E D
D AD | BC | CE
E aA | bB | e
PLSM LFA0910 172
Gramticas Regulares
PLSM LFA0910 173
Introduo
s
Uma Gramtica Regular (GR) G = (N, T, S, P) caracteriza-se por as suas
produes serem da forma
x
X aY
x
X a
x
X
X,Y N e a T

s
A linguagem gerada por uma GR pertence classe das linguagens
regulares
s
possvel converter um Autmato Finito numa Gramtica Regular e
vice-versa
s
As GR so fechadas sob as operaes de reunio, concatenao, fecho,
interseco e complementao
PLSM LFA0910 174
Converso de um AF numa GR 1
s
Seja o Autmato Finito M = (A, Q, q
0
, , F)
s
A Gramtica Regular G = (N, T, S, P) equivalente a M obtm-se do seguinte
modo
x
T = A o conjunto dos smbolos terminais igual ao alfabeto
x
N = Q o conjunto dos smbolos no-terminais igual ao conjunto de
estados
x
S = q
0
o smbolo inicial igual ao estado inicial
x
P ={q
i
aq
j
| (q
i
, a) = q
j
} {q
k
| q
k
F}
s
As produes so obtidas a partir da funo de transio e do conjunto
de estados de aceitao

b
b
c
N = {V,W, X}
T = {a, b, c}
S = V
P =
_

_
V aV | bW | bX
W bX
X | cV
_

_
PLSM LFA0910 175
Converso de um AF numa GR 2
s
A converso de um Autmato Finito numa Gramtica Regular pode
introduzir smbolos inteis

b,c

a
c
a

b
abc
s
Este autmato reconhece as
palavras que no contm a
subpalavra ab
X | aY | bX | cX
Y | aY | bZ | cX
Z aZ | bZ | cZ
PLSM LFA0910 176
Converso de uma GR num AF 1
s
Seja a Gramtica Regular G = (N, T, S, P)
s
O Autmato Finito Generalista M = (A, Q, q
0
, , F) equivalente a G obtm-se
do seguinte modo
x
A = T o alfabeto igual ao conjunto dos smbolos terminais
x
Q = N O
s
A cada smbolo no terminal corresponde um estado
s
O conjunto O contm um novo estado q
F
se a gramtica contiver uma produo que verique
X u P com u T
+
x
q
0
= S o estado inicial igual ao smbolo inicial da gramtica
x
={(X, u,Y) | X uY P} {(Z, v, q
F
) | Z v Pv T
+
}
s
Num AFG as transies esto etiquetadas com palavras de A

x
F ={X | X P}O O o conjunto denido atrs
PLSM LFA0910 177
Converso de uma GR num AF 2
S aS | bS | cS | abX
X | aX | bX | cX
A = {a, b, c}
Q = {S, X}
q
0
= S
F = {X}
=
_

_
(S, a, S), (S, b, S),
(S, c, S), (S, ab, X),
(X, a, X), (X, b, X),
(X, c, X)
_

a,b,c

ab
a,b,c
PLSM LFA0910 178
Converso de uma GR numa ER 1
s
Dada uma gramtica regular limpa G = (N, T, S, P), nestes acetatos
assumimos que
x
uma produo X uY
s
representada por um triplo (X, u,Y)
x
uma produo X u
s
representada por um triplo (X, u, )
x
a varivel u do triplo pode ser uma expresso regular sob o alfabeto T
s
Seja E um smbolo no pertencente a N
x
O processo de remoo de todos os smbolos no-terminais excepto E
do conjunto de triplos
{(E, , S)}{(X, u,Y) | X uY P}{(X, u, ) | X u P}
permite obter uma expresso regular que representa a linguagem
produzida por G
PLSM LFA0910 179
Converso de uma GR numa ER 2
s
A eliminao do smbolo Y do conjunto de triplos consiste em identicar 3
tipos de triplos
1. Y s surge no corpo do triplo (X
i
, u
i j
,Y) simplicado
(X
i
, u
i
,Y) = (X
i
, u
i1
| . . . |u
i j
| . . . ,Y)
2. Y surge na cabea e corpo do triplo (Y, v
i
,Y) simplicado
(Y, v,Y) = (Y, v
1
| . . . |v
i
| . . . ,Y)
3. Y surge s na cabea do triplo (Y, w
i
, ) e (Y, w
i j
, Z
j
) simplicados
(Y, w, ) = (Y, w
1
| . . . |w
i
| . . . , )
(Y, w
j
, Z
j
) = (Y, w
1 j
| . . . |w
i j
| . . . , Z
j
)
PLSM LFA0910 180
Converso de uma GR numa ER 3
s
Sejam os 3 tipos de triplos simplicados:
(X
1
, u
1
,Y) (Y, w, )
.
.
. (Y, v,Y) (Y, w
1
, Z
1
)
.
.
.
(X
n
, u
n
,Y) (Y, w
m
, Z
m
)
x
A eliminao do smbolo Y resulta na substituio dos triplos atrs por
1. (X
i
, u
i
v

w , )
2. (X
i
, u
i
v

w
j
, Z
j
)
s
No nal obtm-se um nico triplo (E, e, em que e a expresso regular que
representa a linguagem produzida pela gramtica
PLSM LFA0910 181
Converso de uma ER numa GR
s
A converso de uma expresso regular consiste na aplicao
x
das regras de converso das expresses regulares simples e
x
das regras de operaes sobre as gramticas
s
Expresses regulares simples sob o alfabeto A
x
A expresso regular representada pela gramtica
N = {S}
T = A
P =
_
S
_
x
A expresso regular a representada pela gramtica
N = {S}
T = A
P =
_
S a
_
PLSM LFA0910 182
Operaes Sobre Gramticas Regulares 1
s
Considere as Gramticas Regulares G
1
= (N
1
, T
1
, S
1
, P
1
) e G
2
= (N
2
, T
2
, S
2
, P
2
)
x
Assume-se que
N
1
N
2
= / 0
T
1
T
2
= / 0
s
A gramtica G = (N, T, S, P) que produz a reunio das linguagens L(G
1
) e
L(G
2
) dada por
x
N = N
1
N
2
{S}
x
T = T
1
T
2
x
P ={S S
1
, S S
2
}P
1
P
2
s
S um novo smbolo no terminal que no pertence a N
1
N
2
s
A partir do novo smbolo inicial pode-se optar por um dos smbolos iniciais
das gramticas G
1
e G
2
PLSM LFA0910 183
Operaes Sobre Gramticas Regulares 2
s
Considere as Gramticas Regulares G
1
= (N
1
, T
1
, S
1
, P
1
) e G
2
= (N
2
, T
2
, S
2
, P
2
)
s
A gramtica G = (N, T, S, P) que produz a concatenao das linguagens
L(G
1
) e L(G
2
) dada por
x
S = S
1
x
N = N
1
N
2
{S}
x
T = T
1
T
2
x
P = {A uS
2
| u T
1

A u P
1
}
{B v | v T
1

N
1
B v P
1
}
P
2
s
Em todas as produes de G
1
cujo corpo no contm um smbolo
no-terminal, concatena-se o smbolo inicial da gramtica G
2
s
As produes de G
1
cujo corpo contm um smbolo no-terminal so
adicionadas sem alteraes
s
O smbolo inicial igual ao da gramtica G
1
PLSM LFA0910 184
Operaes Sobre Gramticas Regulares 3
s
Considere a Gramtica Regular G
1
= (N
1
, T
1
, S
1
, P
1
)
s
A gramtica G = (N, T, S, P) que produz o fecho de Kleene da linguagem
L(G
1
) dada por
x
N = N
1
{S}
x
T = T
1
x
P = {S }
{S S
1
}
{A uS| u T
1

A u P
1
}
{B v | v T
1

N
1
B v P
1
}
s
S um novo smbolo no terminal que no pertence a N
1
s
Em todas as produes de G
1
cujo corpo no contm um smbolo
no-terminal, concatena-se o novo smbolo inicial
s
As produes de G
1
cujo corpo contm um smbolo no-terminal so
adicionadas sem alteraes
PLSM LFA0910 185
Exemplos
s
Projecte uma gramtica sob o alfabeto {0, 1, 2} que produza palavras que
x
no contenham a subpalavra 01
x
contenham um nmero par de 0s
s
Converta a seguinte gramtica para um autmato nito
S 0 | 1X | 2Y
X 1S | 2Y
Y 221S | 0
PLSM LFA0910 186
Gramticas Independentes de Contexto
PLSM LFA0910 187
Introduo
s
Uma Gramtica Independente de Contexto (GIC) G = (N, T, S, P)
caracteriza-se por as suas produes serem da forma
X e
com X N e u V

nestes acetatos consideramos V = N T


s
As linguagens geradas por uma GIC ou reconhecidas por um autmatos de
pilha pertencem classe das Linguagens Independentes de Contexto
s
possvel converter um Autmato de Pilha numa Gramtica Independente
de Contexto e vice-versa
s
As GIC so fechadas sob as operaes de reunio, concatenao e fecho
s
A interseco e complementao de GIC pode resultar em gramticas
dependentes do contexto
PLSM LFA0910 188
Derivao Direita e Esquerda
s
A existncia de vrios smbolos no terminais no corpo de uma produo
permite
x
efectuar diferentes derivaes para obter a mesma palavra
s
comum reescrever ou o smbolo mais direita ou o mais esquerda
Denio Derivao Directa Direita
Dada uma produo A u de uma GIC G e uma palavra v Aw
com v V

e w T

chama-se derivao directa direita rescrita de v Aw em v uw e escreve-se:


v Aw
D

G
v uw
Denio Derivao Directa Esquerda
Dada uma produo A u de uma GIC G e uma palavra v Aw
com v T

e w V

chama-se derivao directa esquerda rescrita de v Aw em v uw e escreve-se:


v Aw
E

G
v uw
PLSM LFA0910 189
Exemplos de Derivao
s
Considere a linguagem denida sobre o alfabeto T ={0, 1}
L ={u T

| #(0, u) = #(1, u)}


e a gramtica que gera a linguagem
S 0B| 1A|
A 0| 0S| 1AA
B 1| 1S| 0BB
s
A palavra 001011 tem 9 derivaes possveis
1. S
G
0B
G
00AA
G
001SB
PLSM LFA0910 190
rvore de Derivao
s
O facto de uma palavra poder ter mltiplas derivaes pode introduzir
diferentes interpretaes
s
Uma rvore de derivao permite representar a derivao de uma palavra
produzida por uma GIC
s
Numa rvore de derivao
x
Os ns consistem em elementos de N
x
As folhas consistem em elementos de T
s
Na gramtica S S+S| SS| 0| 1
h duas interpretaes para a palavra 1+10

+

1



1 0

+

0
1 1
PLSM LFA0910 191
Converso de uma GIC num AP 1
s
As Gramticas Independentes de Contexto e os Autmatos de Pilha
reconhecem a mesma classe de linguagens
s
possvel converter uma GIC num AP e vice-versa
s
Um AP que reconhea as palavras de uma GIC tem que simular uma ou
mais derivaes directas
x
Podem existir vrias derivaes directas para o mesmo smbolo
x
O no determinismo do AP permite adivinhar qual a sequncia correcta
de derivaes directas
PLSM LFA0910 192
Converso de uma GIC num AP 2
s
O alfabeto da pilha do AP igual a NT
s
A pilha utilizada como zona de trabalho para derivar a palavra
x
O AP s tem acesso ao smbolo no topo da pilha
x
Na pilha mantida uma cpia parcial da palavra a derivar
x
O smbolo inicial da pilha S
s
Funcionamento geral
x
Se no topo da pilha est um smbolo no-terminal, o AP empilha o corpo
de uma produo cuja cabea seja esse smbolo
x
Se no topo da pilha est um smbolo terminal, o AP desempilha esse
smbolo se for igual ao smbolo na ta de entrada e avana a cabea de
leitura
PLSM LFA0910 193
Converso de uma GIC num AP 3
s
Seja a GIC G = (N, T, S, P), o AP equivalente M = (A, Z, Q, q
1
, , F)
x
A = T
x
Z = N T {$}
x
Q ={q
1
, q
3
}Q
2
3 classes de estados
x
4 tipos de transies
x
F ={q
2
}
s
A transio do estado inicial coloca a palavra S$ na
pilha
s
Se o smbolo A no topo da pilha no-terminal,
desempilhado e empilha-se a palavra u se A u for
uma produo da GIC
s
Se o smbolo x no topo da pilha terminal,
desempilhado se o smbolo na ta de entrada for
igual a x
s
Se o smbolo no topo da pilha for $, desempilhado
e transita para o estado de aceitao
q1
O2
. / S$
. A / u
x x /
q3
$ $ /
PLSM LFA0910 194
Converso de uma GIC num AP 4
s
Simulao da derivao A u
s
Se a palavra u tem n smbolos
so necessrios n estados extra
s
Se a gramtica tem m produes
cada uma com uma mdia de n
estados,
ento o AP tem em mdia 3+nm
estados
O2
O_1
. A /
O_2
. . / u1
O_3
. . / u2
O_n
. . / un
PLSM LFA0910 195
Operaes sobre GIC 1
s
Considere as GIC G
1
= (N
1
, T
1
, S
1
, P
1
) e G
2
= (N
2
, T
2
, S
2
, P
2
)
s
A gramtica G = (N, T, S, P) que produz a reunio das linguagens L(G
1
) e
L(G
2
) dada por
x
N = N
1
N
2
{S}
x
T = T
1
T
2
x
P ={S S
1
, S S
2
}P
1
P
2
s
A gramtica G = (N, T, S, P) que produz a concatenao das linguagens
L(G
1
) e L(G
2
) dada por
x
N = N
1
N
2
{S}
x
T = T
1
T
2
x
P ={S S
1
S
2
}P
1
P
2
s
A gramtica G = (N, T, S, P) que produz o fecho de Kleene da linguagem
L(G
1
) dada por
x
N = N
1
{S}
x
T = T
1
x
P ={S |S
1
S}P
1
}
PLSM LFA0910 196
Operaes sobre GIC 2
s
A interseco de GICs pode resultar numa gramtica dependente do
contexto
x
Sejam as linguagens
L
1
={a
i
b
i
c
j
}
L
2
={a
j
b
i
c
i
}
x
A interseco de L
1
e L
2
a linguagem dependente do contexto
L
3
={a
i
b
i
c
i
}
s
A complementao de GICs tambm pode resultar numa gramtica
dependente do contexto
x
L
1
L
2
= L
1
L
2
x
A unio de GICs sempre uma GIC
x
Logo a complementao de uma GIC pode no ser uma GIC
PLSM LFA0910 197
Comparao entre GIC e AP
s
As GIC so mais convenientes para especicar a sintaxe de uma linguagem
s
No entanto as GIC s produzem palavras, no as reconhece
s
Logo necessrio obter o AP equivalente
s
Quer-se um autmato determinista
s
Que terminem com rejeio ou aceitao (no entrem em ciclo)
s
Possam ser obtidos a partir da gramtica
PLSM LFA0910 198
Teorema da Bombagem para as GIC 1
s
O facto do conjunto dos smbolos
no-terminais ser nito implica a existncia
de repeties nas rvores de derivao
s
Seja p o nmero de smbolos no-terminais
s
Pelo Princpio do Pombal o que podemos
dizer acerca de uma rvore de derivao
com profundidade p+2?

a b
PLSM LFA0910 199
Teorema da Bombagem para as GIC 2
s
O smbolo R est repetido no
ramo
s
possvel dividir a palavra
em 5 subpalavras
s
A segunda e quarta palavra
podem ser repetidas e a
palavra pertence
linguagem

a b
S
R
x
R
v u y z
PLSM LFA0910 200
Teorema da Bombagem para as GIC 3
Denio Teorema da Bombagem
Se L uma linguagem innita e independente de contexto, existe um nmero
p > 0 tal que,
se w uma palavra de L com tamanho maior ou igual a p ento
w pode ser dividido em 5 subpalavras w = uvxyz satisfazendo as condies:
s
i 0, uv
i
xy
i
z L
s
|vy| > 0
s
|vxy| p
s
O teorema utiliza-se para demonstrar que uma linguagem no
independente de contexto
x
Logo no possvel obter uma gramtica independente de contexto que
a produza
PLSM LFA0910 201
Gramticas de Atributos
PLSM LFA0910 202
Introduo
s
A anlise sintctica requer a atribuio de um signicado s produes de
uma gramtica
s
Os atributos permitem atribuir um signicado aos smbolos
s
Um atributo pode ser
x
Palavra
x
Nmero
x
Tipo
x
Localizao de memria
s
A cada produo esto associadas regras semnticas
x
H regras semnticas que determinam os valores dos atributos
x
Podem ter efeitos secundrios
s
escrita de um valor
s
alterao de uma estrutura de dados
s
Cada smbolo no terminal tem associado um conjunto de atributos
PLSM LFA0910 203
Exemplo Calculadora
E T +E | T
T F T | F
F 1| 2| 3
Em cada n, o valor do atributo val
depende dos valores dos atributos
dos ns lhos
Palavra 1+23



2

3
.va = 7
T.va = 1
+
E.va = 6
F.va = 1
1
T.va = 6
F.va = 2

T.va = 3
2
F.va = 3
3
PLSM LFA0910 204
Exemplo Declarao de Variveis
D TL
T i| c
L LV | V
V a| b
s
Atributos
x
tipo Representa um tipo vlido
da linguagem
x
nome Representa um nome
vlido para um identicador
Palavra iab

a
b

tpo = L.tpo =
i
L.tpo = V.nome = a
V.nome = a
a
b
PLSM LFA0910 205
Denio de Atributo
s
Cada smbolo no terminal de uma GIC tem associado um conjunto de
atributos
Denio Atributos
Seja uma GIC G = (N, T, S, P) e um conjunto A de elementos ditos atributos
s
Para cada a A, o conjunto dos valores do atributo a representado por V
a
s
Para cada X N, o conjunto dos atributos do smbolo no terminal X
representado por A
X
=S
X
H
X
com
x
O conjunto S
X
chama-se os atributos sintetizados
x
O conjunto H
X
chama-se os atributos herdados
s
O smbolo inicial S no tem atributos herdados
s
O valor do atributo a do smbolo no terminal X representado por
X.a
PLSM LFA0910 206
Clculo do Valor de um Atributo
s
O clculo do valor de um atributo num n de uma rvore de derivao pode
depender
x
dos valores dos atributos nos ns lhos
x
dos valores dos atributos do n pai
Denio Valor de um Atributo
Seja uma GIC G = (N, T, S, P) e um conjunto A de elementos ditos atributos
s
Cada produo X u P tem associada um conjunto de funes (regras
semnticas) para o clculo dos valores dos atributos
b := f (c
1
, c
2
, . . . , c
n
)
s
c
1
, . . . c
n
so atributos dos smbolos que ocorrem na produo (cabea e
corpo)
s
b um atributo do smbolo X
PLSM LFA0910 207
Atributos Sintetizados
s
O valor de um atributo sintetizado de um smbolo num n de uma rvore de
derivao
x
depende unicamente dos valores dos atributos dos ns lhos
s
Numa rvore de derivao o clculo feito de baixo para cima
Denio Atributo Sintetizado
Um atributo a de uma produo X u diz-se sintetizado
se a for um atributo do smbolo X
E.va = 7
T.va = 1 + E.va = 6
F.va = 1
1
T.va = 6
F.va = 2 T.va = 3
2 F.va = 3
3
PLSM LFA0910 208
Atributos Herdados
s
O valor de um atributo herdado de um smbolo num n de uma rvore de
derivao
x
depende de valores de atributos do n pai
Denio Atributo Herdado
Um atributo a de uma produo X u diz-se herdado se a for o atributo de um
smbolo no corpo da produo

tpo = L.tpo =
i L.tpo = V.nome = a
V.nome = a
a
b
PLSM LFA0910 209
Exemplo Regras Semnticas Aritmtica
E T +E | T
T F T | F
F 1| 2| 3
Se uma produo contm mltiplas ocorrncias do mesmo smbolo no-terminal,
utilizam-se ndices para distinguir os valores dos atributos dessas ocorrncias
Produo Regra Semntica
E
1
T +E
2
E
1
.val := T.val +E
2
.val
E T E.val := T.val
T
1
F T
2
T
1
.val := F.val T
2
.val
T F T.val := F.val
F 1 F.val := 1
F 2 F.val := 2
F 3 F.val := 3
PLSM LFA0910 210
Exemplo Regras Semnticas Declarao Variveis
D TL
T i| c
L LV | V
V a| b
Produo Regra Semntica
D TL L.tipoh := T.tipo
T i T.tipo := int
T c T.tipo := char
L
1
L
2
V
L
2
.tipoh := L
1
.tipoh
insere(V.nome, L
1
.tipoh)
L V insere(V.nome, L.tipoh)
V a V.nome := a
V b V.nome := b
s
O atributo tipoh herdado
s
As regras semnticas podem conter chamadas de procedimentos
s
O procedimento insere() insere numa tabela de smbolos um tuplo
identicador tipo
PLSM LFA0910 211
Avaliao dos Valores
s
As funes de clculo do valor de um atributo (regras semnticas) impem
uma ordem no clculo dos valores
s
Um grafo de dependncia representa as dependncias entre atributos
s
O grafo de dependncia construdo a partir da rvore de derivao
Denio Grafo de Dependncia
Dada uma rvore de derivao D,
o algoritmo para obter o grafo de dependncia
1. Para cada n n D
(a) Para cada atributo a do smbolo X no n n
i. Criar um n (X, a, n) no grafo de dependncias
2. Para cada par de ns n
1
D e n
2
D
(a) Para cada regra semntica X.b := f (. . . ,Y
i
.c
i
, . . .) pertencente a n
1
para cada regra semntica Y
i
.c
i
:= g(. . .) pertencente a n
2
i. Criar um arco do n (Y
i
, c
i
, n
1
) ao n (Y
i
, c
i
, n
2
)
PLSM LFA0910 212
Exemplo Grafo Dependncias Aritmtica 1
Ev:=T1.v+E2.v
T1.v:=F1.v E2.v:=T2.v
F1.v := 1 T2.v:=F2.vT3.v
F2.v := 2 T3.v:=F3.v
F3.v := 3
PLSM LFA0910 213
Exemplo Grafo Dependncias Aritmtica 2
s
Ordem de execuo das regras semnticas
1. F
1
.v := 1 F
2
.v := 2 F
3
.v := 3
2. T
1
.v := F
1
.v T
3
.v := F
3
.v
3. T
2
.v := F
2
.v T
3
.v
4. E
2
.v := T
2
.v
5. E
1
.v := T
1
.v +E
2
.v
s
H regras que podem ser executadas em paralelo
PLSM LFA0910 214
Exemplo Grafo Dependncias Variveis 1
L1.tpoh :=T.tpo
T.tpo := nt
L2.tpoh := L1.tpoh
nsere( V2.nome , L1.tpoh)
nsere( V1.nome , L2.tpoh) V2.nome:=b
V1.nome:=a
PLSM LFA0910 215
Exemplo Grafo Dependncias Variveis 2
s
Ordem de execuo das regras semnticas
1. V
1
.nome := a V
2
.nome := b T.tipo := int
2. L
1
.tipoh := T.tipo
3. L
2
.tipoh := L
1
.tipoh insere(V
2
.nome, L
1
.tipoh)
4. insere(V
1
.nome, L
2
.tipoh)
s
H regras que podem ser executadas em paralelo
PLSM LFA0910 216
Anlise Sintctica Ascendente
Gramticas LR(0)
PLSM LFA0910 217
Introduo
s
Gramticas LR(k)
x
Os smbolos so processados da esquerda para a direita
x
A derivao obtida corresponde a uma derivao direita
x
Utiliza k smbolos por processar no processo de deciso
x
Utiliza as produes no sentido corpo cabea
s
Funcionamento do autmato de pilha
x
Deslocar um smbolo da palavra para a pilha
x
Reduzir uma sub palavra na pilha
utilizando uma produo no sentido corpo cabea
s
O autmato de pilha tem que ser determinstico
x
Em cada passo ou desloca um smbolo ou reduz uma sub palavra
x
Quando reduz uma sub palavra s pode aplicar uma produo
PLSM LFA0910 218
Exemplo 1
S E$
E E+T | T
T T
*
F | F
F 1| 2| 3
Reconhecimento da palavra 2+1
*
3
3 * 2 1 + $
fita de entrada pilha
3 * 2 1 + $
s possvel deslocar o smbolo 2 para a pilha
3 * 2 1 + $ 2
s
se se deslocasse o smbolo +
obtnhamos uma palavra 2+ que no
prexo de nenhum corpo de
nenhuma produo da gramtica
s
reduz-se 2 a F por aplicao da
produo F 2
PLSM LFA0910 219
Exemplo 2
S E$
E E+T | T
T T
*
F | F
F 1| 2| 3
Reconhecimento da palavra 2+1
*
3
3 * 2 1 + $ F
s
reduz-se F a T por aplicao da
produo T F
s
reduz-se T a E por aplicao da
produo E T
3 * 2 1 + $ E
s
desloca-se o smbolo + para a pilha
3 * 2 1 + $ E
+
s
desloca-se o smbolo 1 para a pilha
PLSM LFA0910 220
Exemplo 3
S E$
E E+T | T
T T
*
F | F
F 1| 2| 3
Reconhecimento da palavra 2+1
*
3
3 * 2 1 + $ E
+
1
s
reduz-se a sub palavra 1 no topo da pilha a T
aplicando as produes F 1 e T F
s
se aplicssemos a produo E E +T obtnhamos
por deslocamento do smbolo
*
uma sub palavra
que no prexo
3 * 2 1 + $ E
+
T
*
s
desloca-se os smbolos
*
e 3 para a pilha
s
reduz-se a sub palavra 3 a F
PLSM LFA0910 221
Exemplo 4
S E$
E E+T | T
T T
*
F | F
F 1| 2| 3
Reconhecimento da palavra 2+1
*
3
3 * 2 1 + $ E
+
T
*
F
s
reduz-se a sub palavra T
*
F a T
3 * 2 1 + $ E
+
T
s
reduz-se a sub palavra E+T a E
s
desloca-se o smbolo $ para a pilha
3 * 2 1 + $ E
$
s
reduz-se a sub palavra E$ a S
PLSM LFA0910 222
Exemplo 5
S E$
E E+T | T
T T
*
F | F
F 1| 2| 3
Reconhecimento da palavra 2+1
*
3
s
A pilha contm o smbolo inicial S
s
A cabea de leitura da ta de entrada est no m da palavra
s
A palavra foi reconhecida
s
A derivao direita obtida
S
G
E$
G
E+T
G
E+T
*
F
G
E+T
*
3

G
E+F
*
3
G
E+1
*
3
G
T+1
*
3
G
F+1
*
3

G
2+1
*
3
PLSM LFA0910 223
Forma Ponteada e Derivao Ponteada
s
A derivao obtida no exemplo pode ser descrita em termos de forma
ponteada e derivao ponteada
Denio Forma Ponteada
Seja uma GIC G = (T, N, S, P)
s
Uma forma ponteada uma palavra com um ponto no meio
u
com
x
(NT)

x
u T

s
A palavra representa a palavra na pilha
x
Representao parcial da rvore de derivao
s
A palavra u representa a palavra por ler na ta de trabalho
PLSM LFA0910 224
Derivao Ponteada
Denio Derivao Ponteada
Seja uma GIC G = (T, N, S, P)
s
Uma derivao ponteada uma derivao direita sob formas ponteadas
x
Expanso
A u u
se A uma produo da gramtica
x
Deslocamento
a u au
se a um smbolo terminal
com (NT)

e u T

s
A derivao ponteada representa os passos efectuados no exemplo
x
A expanso o inverso da reduo de uma sub palavra no topo da pilha
x
O deslocamento o inverso de empilhar o smbolo sob a cabea de
leitura da ta de entrada
PLSM LFA0910 225
Item e Item Completo
Denio Item
Um item uma produo com um ponto no meio do corpo
A u v
Denio Item Completo
Um item completo se o ponto ocorrer no m do corpo da produo
s
O item de uma produo A
A
s
Os itens da produo S E+F so
S E+F
S E +F
S E+ F
S E+F
s
O ltimo item completo
PLSM LFA0910 226
Prexo Vivel
Denio Prexo Vivel
Um prexo vivel uma palavra (NT)

tal que
S

u
com u T

s
Um prexo vivel representa uma possvel palavra na pilha
s
Um prexo vivel pode ser reduzido
s
A cada prexo vivel corresponde um conjunto de itens
x
S os itens completos podem ser usados na reduo de um prexo vivel
PLSM LFA0910 227
Item Vlido 1
Denio Item Vlido
Um item A diz-se vlido para o prexo vivel se
S

A v v

uv
com =
s
Considerando o Autmato de Pilha Determinista
x
O item A representa a transio da pilha

S
x
Se o item completo a 2
a
transio directa
s
a palavra no topo da pilha pode ser reduzida
x
Se o item A a
s
o smbolo terminal pode ser deslocado
s
o item A a vlido para a
s
Sabendo os itens vlidos para um dado prexo vivel conseguimos obter
uma derivao direita
PLSM LFA0910 228
Item Vlido 2
s
Exemplo: Considere a palavra 2+3
S

F +3 2 +3
x
F 2 um item vlido para o prexo vivel 2
s
O conjunto dos prexos viveis uma linguagem regular
x
Um Autmato Finito No-Determinista permite calcular os prexos viveis
x
O Autmato permite tambm calcular os itens vlidos de um prexo vivel
x
Os estados representam itens vlidos
x
O autmato uma combinao de AFND com Mquina de Moore
PLSM LFA0910 229
Conjunto dos Prexos Viveis
s
O conjunto dos prexos viveis uma linguagem regular
s
Seja uma GIC limpa G = (N, T, S, P)
s
A gramtica regular G
R
= (N
R
, T
R
, S
R
, P
R
) que gera os prexos viveis
x
T
R
= NT
x
As produes em P
R
so
s
S
R
a
1
a
2
. . . a
i
se S a
1
a
2
. . . a
i
. . . a
n
P e a
i+1
. . . a
n
T

s
S
R
a
1
a
2
. . . a
i
A
i
se S a
1
a
2
. . . a
i
. . . a
n
P e a
i+1
. . . a
n
T

e a
i
N
PLSM LFA0910 230
Autmato de Itens Vlidos
Denio Autmato de Itens Vlidos
Dada uma GIC G = (N, T, S, P) o AFND M = (A, Q, q
0
, , F) que reconhece os
prexos viveis de G
s
A = NT
s
Q o conjunto dos itens de G mais o estado q
0
s
F = Q
s
A relao de transio a unio de
x
{(q
0
, , S ) | S P}
x
{(A B, , B ) | B P}
x
{(A X, X, A X )}
s
Convertendo o AFND para um AFD, os estados representam o conjunto dos
itens vlidos para um dado prexo
x
Se o AFD aceita uma palavra (prexo vivel)
x
ento o estado nal representa
o conjunto dos itens vlidos do prexo vivel
PLSM LFA0910 231
Exemplo Autmato Itens Vlidos 1
s
Obtenha o Autmato de Itens Vlidos para a gramtica
S E$
E E+F | F
F 1| 2
s
Transies
x
de q
0
etiquetada com para S
x
de A B etiquetada com para B
x
de A X etiquetada com X para A X
PLSM LFA0910 232
Exemplo Autmato Itens Vlidos 2
q0 S.E$

E.E+F

SE.$
E
E.F

EE.+F
E

EE+.F
+
SE$.
$
F.1

F.2

EF.
F
EE+F.
F
F1.
1
F2.
2
PLSM LFA0910 233
Exemplo Autmato Itens Vlidos 3
q0
S.E$
E.E+F
E.F
F.1
F.2
I0
SE.$
EE.+F
I1
E
F2.
I5
2
F1.
I6
1
EF.
I7
F
SE$.
I2
$
EE+.F
F.1
F.2
I3
+
EE+F.
I4
F
2
1
PLSM LFA0910 234
Gramtica LR(0)
Denio Gramtica LR(0)
Uma gramtica G = (N, T, S, P) LR(0) se
s
O smbolo inicial S no aparece no corpo de nenhuma produo
s
Para qualquer prexo vivel de G
x
se A um item vlido de
x
ento nenhum
s
outro item completo
s
ou item com um smbolo terminal direita do ponto
x
um item vlido de
s
Se existissem dois itens completos haveria um conito reduo/reduo
s
Se existissem um item completo e um item A a haveria um conito
reduo/deslocamento
PLSM LFA0910 235
APD para LR(0) 1
s
Smbolos do alfabeto da pilha representam
x
i um conjunto de itens vlidos
x
X um smbolo do alfabeto N T
s
Se a pilha contm o prexo vivel X
1
X
2
X
n
x
o contedo da pilha I
0
X
1
i
1
X
2
i
2
X
n
i
n
com I
0
o estado inicial do Autmato de Itens Vlidos Determinista
s
Se
x
o smbolo no topo pilha representa um item completo A
x
a sub palavra no topo da pilha pode ser reduzida
s
A pilha passa de i
0
X
1
i
1
. . . X
j
i
j
. . . i
n
X
n
com = X
j+1
X
n
para i
0
X
1
i
1
. . . X
j
i
j
Ai
com i = (i
j
, A)
e a funo de transio do Autmato de Itens Vlidos
PLSM LFA0910 236
APD para LR(0) 2
s
Smbolos do alfabeto da pilha representam
x
i um conjunto de itens vlidos
x
X um smbolo do alfabeto N T
s
Se a pilha contm o prexo vivel X
1
X
2
X
n
x
o contedo da pilha I
0
X
1
i
1
X
2
i
2
X
n
i
n
com I
0
o estado inicial do Autmato de Itens Vlidos Determinista
s
Se
x
o smbolo no topo pilha s representa itens incompleto
x
a sub palavra no topo da pilha no pode ser reduzida
s
Poder ser feita uma reduo se se deslocar o smbolo a na ta de entrada
s
A pilha passa de i
0
X
1
i
1
. . . i
n
X
n
para i
0
X
1
i
1
. . . i
n
X
n
ia
com i = (i
n
, a)
e a funo de transio do Autmato de Itens Vlidos
s
Se (i
n
, a) no est denido
o APD rejeita a palavra
PLSM LFA0910 237
Funo Transio APD para LR(0) 1
Aco Reduo

P
I
c
I
c2
. . .
q
0
. R
1
c
pop R
c2
pop
R
1
c
. R
2
c
pop R
2
c
pop . . .
R
2
c
. R
3
c
pop . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
R
2n
c
. R
p
c
push
I
(I
c
, A) R
p
c
push
I
(I
c2
, A) . . .
R
p
c
. q
0
pushA . . . . . .
s

I
funo de transio do Autmato de Itens Vlidos
s
I
c
conjunto de itens com um nico item completo A
s
Para cada item completo com n smbolos no corpo
o APD tem
x
2n estados R
c
x
1 estado R
p
c
PLSM LFA0910 238
Funo Transio APD para LR(0) 2
Aco Deslocamento

P
I
i1
I
i2
. . . a . . .
q
0
a D
i1
pusha D
i2
pusha
D
i1
a q
0
+ push
I
(I
i1
, t)
s
Com
x

I
funo de transio do Autmato de Itens Vlidos
x
I
i1
I
i2
conjuntos de itens s com itens incompletos
x
O APD tem um estado D
i
para cada conjunto de itens I
i
x
a um smbolo terminal
s
Se
x

I
(I
i
, a) no est denido
x
ento
P
(D
i
, a, a) tambm no est denido
x
O APD rejeita a palavra
PLSM LFA0910 239
Tabela de Anlise Sintctica
s
A tabela de anlise sintctica resume o comportamento do APD
x
Linhas indexadas por conjuntos de itens vlidos
x
Uma coluna com a aco a efectuar
x
Colunas indexadas por smbolos terminais e no terminais
excepto o smbolo inicial
x
Casas das linhas de deslocamento contm o prximo conjunto de itens
vlidos
aco 1 2 + $ E F
I
0
deslocar I
6
I
5
I
1
I
7
I
1
deslocar I
3
I
2
I
2
aceitar
I
3
deslocar I
6
I
5
I
4
I
4
reduzir E E+F
I
5
reduzir F 2
I
6
reduzir F 1
I
7
reduzir E F
PLSM LFA0910 240
Anlise Sintctica Ascendente
Gramticas LR(1)
PLSM LFA0910 241
Introduo
s
Numa gramtica LR(0) o APD no utiliza o smbolo na ta de entrada para
decidir entre deslocar ou reduzir
s
A utilizao do prximo smbolo na ta de entrada permite reconhecer uma
classe maior de linguagens
s
Se
x
o autmato pode escolher entre as produes A B
x
o topo da pilha contm o smbolo c
x
numa derivao ponteada podemos ter A.cu mas nunca B.cv
s
Ento
x
o autmato pode reduzir por A
PLSM LFA0910 242
Conjunto dos Primeiros
Denio Conjunto dos Primeiros
Seja uma GIC G = (T, N, S, P)
s
O conjunto dos primeiros de composto pelos smbolos terminais que
ocorrem no incio de uma derivao a partir de

G
a
s
Representa-se rst()
s
Propriedades
x
rst() ={}
x
rst(a) ={a} com a T
x
rst(A) contm rst(
1
) rst(
2
) . . .
com A
i
P
x
Se A N e A

G

ento rst(A) contm rst()
PLSM LFA0910 243
Item LR(1)
Denio Item LR(1)
Um item
s
uma produo com um ponto no meio do corpo
s
e um conjunto de smbolos terminais
A , {a
1
, a
2
, . . . , a
n
}
Denio Item Completo LR(1)
Um item LR(1) completo se o ponto ocorrer no m do corpo da produo
PLSM LFA0910 244
Item LR(1) Vlido
Denio Item LR(1) Vlido
Um item A , {x} valido para um prexo vivel se
s
S

A v v

uv
com =
s
x rst(v$)
s
O smbolo x na ta de entrada permite decidir entre
x
reduzir com A
s
se A , L for um item completo vlido da palavra na pilha
s
e se x L
x
deslocar x para a pilha
s
se B y for um item vlido da palavra na pilha
s
e se x = y
PLSM LFA0910 245
Autmato de Itens Vlidos LR(1) 1
s
O conjunto dos prexos viveis calculado por um AFND
s
O autmato calcula tambm os itens vlidos de um prexo vivel
Denio Autmato de Itens Vlidos LR(1)
Dada uma GIC G = (N, T, S, P) o AFND M = (A, Q, q
0
, , F) que reconhece os
prexos viveis de G
s
A = NT
s
Q o conjunto dos itens de G mais o estado q
0
s
F = Q
PLSM LFA0910 246
Autmato de Itens Vlidos LR(1) 2
s
A relao de transio a unio de
x
transio do estado inicial q
0
etiquetada com
para S , {$}
com S P
x
transio de A B, {a
1
, . . . , a
n
}
etiquetada com
para B , L
com B P
e L = rst(a
1
) . . . rst(a
n
)
x
transio de A B, {a
1
, . . . , a
n
}
etiquetada com B
para A B , {a
1
, . . . , a
n
}
s
Smbolo $ no pertence a T
PLSM LFA0910 247
Exemplo de Autmato de Itens Vlidos LR(1) 1
S A
A 0B0| 2
B 1A1| 2
q0 S.A {$}

SA. {$}
A
A.0B0 {$}

A.2 {$}

A0.B0 {$}
0
A0B.0 {$}
B
B.2 {0}

B.1A1 {0}

A0B0. {$}
0
A2. {$}
2
B.2 {0}
2
B1.A1 {0}
1
B1A.1 {0}
A
A.0B0 {1}

A.2 {1}

B1A1. {0}
1
A0B0. {1} A0B.0 {1}
0
A0.B0 {1}

B 0
A2. {1}
2
PLSM LFA0910 248
Exemplo de Autmato de Itens Vlidos LR(1) 2
q0
S.A {$}
A.0B0 {$}
A.2 {$}
I0
A0.B0 {$}
B.1A1 {0}
B.2 {0}
I1
0
SA. {$}
I2
A
A2. {$}
I3
2
B1.A1 {0}
A.0B0 {1}
A.2 {1}
I4
1
B2. {0}
I5
2
A0B.0 {$}
I6
B
A0.B0 {1}
B.1A1 {0}
B.2 {0}
I7
0
B1A.1 {0}
I8
A
A2. {1}
I9
2
1
2
A0B.0 {1}
I12
B
A0B0. {$}
I10
0
B1A1. {0}
I11
1
A0B0. {1}
I13
0
PLSM LFA0910 249
Gramtica LR(1)
Denio Gramtica LR(1)
Uma gramtica G = (N, T, S, P) LR(1) se
s
O smbolo inicial S no aparece no corpo de nenhuma produo
s
Para qualquer conjunto I de itens vlidos
x
se A , {a
1
, . . . , a
n
} pertence a I
x
ento
s
nenhum a
i
surge imediatamente direito do ponto de outro item de I
s
se B , {b
1
, . . . , b
k
} outro item completo de I
ento a
i
= b
j
s
A existncia de vrios itens completos introduz no-determinismo
x
O bison indica conito reduo-reduo
s
A existncia de um a
i
direita do ponto introduz no-determinismo
x
O bison indica conito reduo-deslocamento
PLSM LFA0910 250
APD para LR(1)
s
Aces do Autmato de Pilha que reconhece uma linguagem LR(1)
s
O smbolo no topo da pilha contm
x
Item completo A , {a
1
, . . . , a
n
}
e A = S
s
reduz-se com A
se o smbolo na ta de entrada a
i
x
Item completo S , {$}
s
reduz-se com S
e aceita-se se o smbolo na ta de entrada $
x
Item A a, L
e a o smbolo na ta de entrada
s
Desloca-se o smbolo para a pilha
PLSM LFA0910 251
Tabela de Anlise Sintctica
s
A tabela de anlise sintctica resume o comportamento do APD
x
Linhas indexadas por conjuntos de itens vlidos
x
Colunas indexadas por smbolos terminais e smbolos no-terminais
x
Casas das colunas de smbolos terminais contm uma aco
x
Casas das colunas de smbolos no terminais contm o conjunto de itens
vlidos a empilhar
PLSM LFA0910 252
Exemplo Tabela Anlise Sintctica
0 1 2 $ A B
I
0
deslocar I
1
deslocar I
3
I
2
I
1
deslocar I
4
deslocar I
5
I
6
I
2
aceitar
I
3
reduzir
I
4
deslocar I
7
deslocar I
9
I
8
I
5
reduzir
I
6
deslocar I
10
I
7
deslocar I
4
deslocar I
5
I
12
I
8
deslocar I
11
I
9
reduzir
I
10
reduzir
I
11
reduzir
I
12
deslocar I
13
I
13
reduzir
PLSM LFA0910 253
Anlise Sintctica Descendente
Gramticas LL(1)
PLSM LFA0910 254
Introduo
s
Gramticas LL(1)
x
Os smbolos so processados da esquerda para
a direita
x
A derivao obtida corresponde a uma derivao
esquerda
x
Utiliza 1 smbolo por processar no processo de
deciso
x
Utiliza as produes no sentido cabea corpo
s
Funcionamento do autmato de pilha
x
Se smbolo no topo da pilha igual ao smbolo na
ta de entrada
desempilhar e avanar cabea de leitura
x
Se smbolo no topo da pilha no terminal
expandir utilizando uma produo no sentido
cabea corpo
s
O autmato de pilha tem que ser determinstico
x
Produo a utilizar na expanso deve ser nica
q1
O2
. / S$
. A / u
x x /
q3
$ $ /
PLSM LFA0910 255
Conjunto dos Primeiros
Denio Conjunto dos Primeiros
Seja uma GIC G = (T, N, S, P)
s
O conjunto dos primeiros de composto pelos smbolos terminais que
ocorrem no incio de uma derivao a partir de
{a T |

G
a}
s
Representa-se rst()
s
Propriedades
x
rst() ={}
x
rst(a) ={a} com a T
x
rst(A) = rst(
1
) rst(
2
) . . .
com A
i
P
x
rst(X
1
X
2
X
n
) =
_
rst(X
1
) rst(X
2
X
n
) se X
1

G

rst(X
1
) caso contrrio
PLSM LFA0910 256
Conjunto dos Seguintes
Denio Conjunto dos Seguintes
Seja uma GIC G = (N, T, S, P)
s
O conjunto dos seguintes do smbolo no terminal A composto pelos
smbolos terminais que ocorrem aps A numa derivao a partir de S
{a T | S

G
Aa}
s
Representa-se por follow(A)
Propriedades
s
$ follow(S)
s
Se A B P ento rst() follow(B)
s
Se
x
A B P
x

G

s
ento follow(A) follow(B)
PLSM LFA0910 257
Conjunto dos Directores
s
Engloba a noo de conjunto dos primeiros e conjunto dos seguintes
s
Conjunto dos directores
x
contm o conjunto dos primeiros
x
se um smbolo no-terminal deriva tambm contm o conjunto dos
seguintes
s
Cada produo tem um conjunto de directores
s
Os conjuntos de directores das produes de um smbolo no-terminal
devem ser disjuntos
Denio Directores de A
O conjunto dos smbolos directores de A
dir(A, ) =
_
rst() follow(A) se

G

rst() caso contrrio
PLSM LFA0910 258
Gramtica LL(1)
Denio Gramtica LL(1)
Seja uma GIC G = (T, N, S, P)
Uma gramtica diz-se LL(1) se
s
Estiver limpa
s
Para cada par de produes A e A
x
dir(A, ) dir(A, ) = / 0
x
no se verica

G
e

G

s
A condio dir(A, ) dir(A, ) = / 0 garante o determinismo do autmato de
pilha
s
Por cada smbolo no-terminal na pilha e smbolo terminal na ta de entrada
s existe uma produo a usar na expanso
PLSM LFA0910 259
Grafo dos Primeiros
Denio Grafo dos Primeiros
Seja uma GIC G = (T, N, S, P)
Composio do Grafo dos Primeiros
s
Vrtices smbolos T N
s
Arcos
x
de A para X
1
se A X
1
X
2
X
n
P
x
de A para Y se
s
A Y P
s

G

s
a pertence aos primeiros de B se existe um caminho de B at a
s
Arcos partem de smbolos no-terminais
PLSM LFA0910 260
Grafo dos Seguintes
Denio Grafo dos Seguintes
Seja uma GIC G = (T, N, S, P)
Composio do Grafo dos Seguintes
s
Vrtices smbolos T N
s
Arcos
x
de S para $ com $ / T
x
de B para rst() se
s
A B P
s
B N
x
de B para A se
s
A B P
s

G

s
B N
s
a pertence aos seguintes de B se existe um caminho de B at a
s
Arcos partem de smbolos no-terminais
PLSM LFA0910 261
Exemplo Grafos dos Primeiros e dos Seguintes
S A4B4
A CB| 0A1
B 3B|
C 2C|
Grafo dos Primeiros

0
3 2
1
s
Smbolo terminal 1 no pertence a
nenhum conjunto
Grafo dos Seguintes

$

1 4

3
0 2
s
Smbolos terminais 0 e 2 no
pertencem a nenhum conjunto
PLSM LFA0910 262
Exemplo Conjunto Directores
S A4B4
A CB| 0A1
B 3B|
C 2C|
Produo Directores
S AB4 {0, 2, 3, 4}
A CB {2, 3}{1, 3, 4} CB

G

A 0A1 {0}
B 3B {3}
B {}{1, 4}
C 2C {2}
C {}{1, 3, 4}
PLSM LFA0910 263
Exemplo Notao Ps-xa
S E
E EE+| EE-| 1| 2
Produo Directores
S E {1, 2}
E EE+ {1, 2}
E EE- {1, 2}
E 1 {1}
E 2 {2}
Grafo primeiros

1 2
- +
Grafo seguintes

- + 1 2
s
H smbolos comuns nos directores das produes de E
PLSM LFA0910 264
Eliminao da Recursividade Esquerda
s
Uma gramtica Recursiva Esquerda se
x
tiver um smbolo no-terminal A
x
admite uma derivao A

G
A
s
Algoritmos de anlise sintctica que constroem a rvore de derivao de
cima para baixo no funcionam se a gramtica for recursiva direita
s
Eliminao da recursividade esquerda imediata se a gramtica contiver
uma produo A A
s
As produes seguintes so equivalentes
A A
A
A B
B | B
B um novo smbolo no-terminal
PLSM LFA0910 265
Factorizao
s
til para eliminar algumas situaes de no-determinismo no autmato de
pilha equivalente
s
Neste exemplo o AP no sabe qual das produes deve aplicar
A if c then i
A if c then i else i
s
Pode-se adiar a deciso sobre que produo aplicar
s
A factorizao esquerda um processo iterativo
Para cada produo com u =
A
1
| . . . |
n
|
Substituir por
A B|
B
1
| . . . |
n
B um novo smbolo no-terminal
PLSM LFA0910 266
Exemplo Factorizao e Eliminao Recursividade
S E
E EE+| EE-| 1| 2
Factorizando
S E
E EEO| 1| 2
O +| -
Produo Directores
E EEO {1, 2}
E 1 {1}
E 2 {2}
Eliminao da recursividade esquerda
S E
E 1R| 2R
R | EOR
O +| -
Produo Directores
R {}
R EOR {1, 2}
PLSM LFA0910 267
Tabela de Anlise Sintctica
s
Resume o comportamento do Autmato de Pilha
x
Quando o smbolo no topo da pilha no-terminal
s
Contm palavra a utilizar na expanso do smbolo
Denio Tabela de Anlise Sintctica
Seja uma GIC G = (T, N, S, P)
Tabela de anlise sintctica resume conjuntos directores de G
s
Linhas indexadas por smbolos no-terminais
s
Colunas indexadas por smbolos terminais e smbolo $
x
$ / T
s
Casa (A, b) preenchida por se
x
A P
x
b dir(A, ) OU dir(A, ) ={}b / dir(A, )
s
Gramtica LL(1) se as casas tiverem uma palavra no mximo
s
Casas vazias representam situao de erro
PLSM LFA0910 268
Exemplo Tabela de Anlise Sintctica Ps-xa
S E
E 1R| 2R
R | EOR
O +| -
Grafo primeiros

1 2
- +
Grafo seguintes
-
+
$
1

2
Produo Directores
S E {1, 2}
E 1R {1}
E 2R {2}
R {}{-, +, $}
R EOR {1, 2}
O + {+}
O - {-}
1 2 - + $
S E E
E 1R 2R
R EOR EOR
O - +
PLSM LFA0910 269
Exemplo Reconhecimento
Reconhecimento da palavra 12+
Pilha Fita
S$ 12+$ expanso
E$ 12+$ expanso
1R$ 12+$
R$ 2+$ expanso
EOR$ 2+$ expanso
2ROR$ 2+$
ROR$ +$ expanso
OR$ +$ expanso
+R$ +$
R$ $ expanso
$ $
1 2 - +
S E E
E 1R 2R
R EOR EOR
O - +
S E
E 1R| 2R
R | EOR
O +| -
PLSM LFA0910 270
Exemplo Factorizao
S E$
E TU
U +TU |
T FG
G
*
FG|
F (E)| 1
PLSM LFA0910 271
Mquinas de Turing
Computao
PLSM LFA0910 272
Modelos Computacionais
unidade
controlo
q
0/1
0 1 0 1
fita de entrada
Autmato Finito
unidade
controlo
q
0/1
0 1 0 1
fita de entrada
1
0
1
pilha
Autmato de Pilha
unidade
controlo
q
0 1 1 0
fita de entrada fita de sada
0 1
Mquina de Moore ou de Mealy
PLSM LFA0910 273
Modelos Computacionais
Autmato Finito (A, Q, q
0
, , F)
Autmato de Pilha (A, Q, q
0
, ,C, Z)
Mquina de Moore (A, Q, q
0
, , Z, )
Mquina de Mealy (A, Q, q
0
, , Z, )
Gramticas (T, N, S, P)
PLSM LFA0910 274
Tipos de Problemas
Palavras representam instncia de um problema
Autmato Finito f : A

{0, 1}
Autmato de Pilha f : A

{0, 1}
Mquina de Moore f : A

Mquina de Mealy f : A

PLSM LFA0910 275


Memria
Autmato Finito Q
Autmato de Pilha Q, pilha
Mquina de Moore Q
Mquina de Mealy Q
s
Q memria nita
s
pilha memria innita mas LIFO
PLSM LFA0910 276
Aplicaes
s
Autmato Finito
x
Pesquisa de padres
x
Anlise lexical
x
Editores de texto
s
Mquinas de Moore e de Mealy
x
Cifragem e criptograa
x
Interface grca
x
Agente reactivo
s
Autmato de Pilha
x
Anlise sintctica
x
Palndroma, capicua
s
Gramticas
x
Enumeram solues de
problemas
agente reactivo
PLSM LFA0910 277
Outras Aplicaes? Que Modelos?
s
Declarao predicados em Mercury
:- pred pai(string, string).
:- mode pai(in, out) is nondet.
:- mode pai(out, in) is semidet.
pai("Joo", "Maria").
pai("Joo", "Miguel").
s
Agente com memria
PLSM LFA0910 278
Que Modelos? Que Caractersticas
s
Pilha com ta de sada
s
N pilhas
s
Fita de entrada com acesso aleatrio
s
Mais caractersticas maior poder computacional?
s
H um limite
s
Mais caractersticas maior convenincia
PLSM LFA0910 279
Modelos Computacionais
unidade
controlo
q
0/1
0 1 0 1
fita de entrada
Autmato Finito
unidade
controlo
q
0/1
0 1 0 1
fita de entrada
1
0
1
pilha
Autmato de Pilha
unidade
controlo
q
0 1 1 0
fita de entrada fita de sada
0 1
Mquina de Moore ou de Mealy
controlo
unidade
0 1 0 1
fita de trabalho
Mquina de Turing
PLSM LFA0910 280
Mquina de Turing
s
Teoria da Computao
x
Limites da computao
x
Problemas no decidveis
x
Problemas intratveis
s
Teoria da Complexidade
x
Complexidade espacial
x
Complexidade temporal
x
Problemas intratveis
PLSM LFA0910 281
Uma Denio de Mquina de Turing
s
A Alfabeto codica instncia de
um problema
x
A alfabeto da ta de
trabalho
x
Smbolo representa casa
vazia
s
Q Conjunto de estados
s
q
0
Q Estado inicial
s
Funo de transio
controlo
unidade
0 1 0 1
fita de trabalho
QA QA {, , }
PLSM LFA0910 282
Computao com Mquina de Turing
s
Mquina de Turing
x
(A, Q, q
0
, )
x
: QA QA {, , }
s
Congurao
x
q estado
x
i posio da cabea
x
u palavra na ta de trabalho
s
Computao termina quando
x
no est denida para uma congurao
s
Resultado
x
palavra na ta de trabalho
s
Mquina de Turing pode no terminar
PLSM LFA0910 283
Variantes Mltiplas Fitas de Trabalho
controlo
unidade
0 1 0 1
x y x x
a b b c
controlo
unidade
a b b c
0 1 0 1
x
x
s
Alfabeto codica
x
Alfabetos originais
x
Posies das cabeas
s
Estado regista operaes nas tas originais
PLSM LFA0910 284
Variantes Enumerador
s
Imprime as palavras de uma linguagem
s
Linguagem innita no pra
controlo
unidade
1 0 0
0 1 0 1 1 1 0
PLSM LFA0910 285
Variantes No-Determinismo
s
Relao de transio
QA QA {, , }
s
Numero mximo de transies
p = |Q| |A | |{, , }|
= 3|Q| |A |
controlo
unidade
0 1 0 1
8 2 p
0 1 1 1
s
Fitas
1. Palavra a processar, ta de entrada s de leitura
2. Palavras {1, 2, . . . , p, 11, 12, . . . , 1p, 21, . . . , pp, 111, . . .}
3. Simulao de um o de execuo
PLSM LFA0910 286
Outros Modelos Computacionais
s
Mquina de Registos Ilimitados
s
Gramticas Dependentes de
Contexto
s
Funes Recursivas
s
Clculo
s
Equivalncia demonstra-se
atravs da simulao
s
Representao de uma instncia
de um modelo
Nmero de Godel
PLSM LFA0910 287
Mquina de Registos Ilimitados Denio
s
Memria
x
Registo contem nmero natural
R
1
R
2
R
3
r
1
r
2
r
3
. . .
s
Instrues
x
Zero n
R
n
0
x
Sucessor n
R
n
r
n
+1
x
Transfere n m
R
m
R
n
x
Salto n m q
PC
_
_
_
q se R
n
= R
m
PC+1 se R
n
= R
m
PLSM LFA0910 288
Mquina de Registos Ilimitados Computao
s
Programa
x
Lista de valores iniciais registos
x
Lista de instrues
s
Computao termina se PC maior
que ltima instruo
s
Resultado da computao
x
Valor no registo R
1
R
1
R
2
R
3
x y 0 . . .
1: Salto 2 3 5
2: Sucessor 1
3: Sucessor 3
4: Salto 1 1 1
s
Instrues
x
Sucessor n
R
n
r
n
+1
x
Salto n m q
PC
_
q se R
n
= R
m
PC+1 se R
n
= R
m
PLSM LFA0910 289
Simulao MRI por Mquina de Turing
controlo
unidade
3 2 7
0
1 0 0
J 3 2 5 S 1 S 3 J 1 1 1
PLSM LFA0910 290
Mquinas de Turing
Decibilidade
PLSM LFA0910 291
Problemas e Problemas
s
Problemas decidveis, dados M
1
, M
2
, G e u
x
M
1
um AFD e M
1
aceita u
x
M
1
um AFND e M
1
aceita u
x
M
1
um APD e M
1
aceita u
x
G uma GIC e G gera u
x
M
1
um AFD e L(M
1
) = / 0
x
M
1
e M
2
so AFDs e L(M
1
) = L(M
2
)
PLSM LFA0910 292
O Meu Innito Maior Que o Teu
s
Qual o maior conjunto?
x
N
x
P ={p : p par}
x
Z
x
N
2
x
Q
x
A

x
R
A B
f
.
.
.
.
.
.
.
.
.
s
Mesmo nmero de elementos se
f for bijectiva
PLSM LFA0910 293
R o Maior
1 0.12345...
2 0.32340...
3 0.55555...
4 0.12121...
.
.
.
.
.
.
s
Novo nmero
0.2363...
s
No est na tabela
PLSM LFA0910 294
Nmero de Godel de uma MRI
Zero n a = n 4a
Sucessor n b = n 4b+1
Transfere n m c = f (n, m) 4c +2
Salto n m q d = f (n, f (m, q)) 4d +3
s
Funo bijectiva entre conjuntos instrues MRI e N
s
Funo bijectiva entre programa MRI e conjunto N
PLSM LFA0910 295
Problemas Indecidveis
s
Problema da Aceitao
M uma mquina de Turing e u uma palavra
Ser que M aceita u
s
Problema da Paragem Halting Problem
M uma mquina de Turing e u uma palavra
Ser que M pra com u?
PLSM LFA0910 296
Problema da Aceitao
{(M, u) | M aceita u}
A(M, u) =
_
aceita se M aceita u
rejeita caso contrrio
s
Argumentos
x
M mquina
x
u palavra
s
Mquina O
x
Argumento M uma mquina
x
Corre A com argumentos
(M, M)
x
Resultado: oposto da execuo
A(M, M)
Qual o resultado de O(O)?
PLSM LFA0910 297
Problema da Aceitao Indecidvel
argumentos
M
1
M
2
M
3
. . . O . . .
M
1
aceita aceita rejeita aceita
M
2
aceita aceita rejeita . . . rejeita . . .
M
3
rejeita rejeita rejeita aceita
.
.
.
.
.
.
.
.
.
O rejeita rejeita aceita ?
.
.
.
.
.
.
.
.
.
Resultado da execuo de A com argumentos M
i
e M
j
PLSM LFA0910 298
Problema da Paragem
{(M, u) | M pra com u}
H(M, u) =
_
aceita se M pra com u
rejeita caso contrrio
s
Argumentos
x
M mquina
x
u palavra
s
Argumentos de S
x
M uma mquina
x
u uma palavra
s
Mquina S
x
Corre H(M, u)
x
Se H rejeita, resultado rejeita
x
Se H aceita, corre M(u)
x
Se M aceita, resultado aceita
Se M rejeita, resultado rejeita
S decide o problema da aceitao
Contradio

Anda mungkin juga menyukai