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
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
}
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)
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, ) = q
x
(q, av) =
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
= 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
AFND : L(M
) = L(M)
s
Se 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) =
qq
{(q, a)} fechado em
s
M e M
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 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
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
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
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
palavra na ta de entrada
s
Z
| 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
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
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
e w T
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
G
v uw
PLSM LFA0910 189
Exemplos de Derivao
s
Considere a linguagem denida sobre o alfabeto T ={0, 1}
L ={u T
+
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
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