O documento apresenta um resumo sobre automatos finitos e suas aplicações. Ele discute:
1) Automatos finitos como modelos computacionais simples para dispositivos com memória limitada como portas automáticas e lavadoras de roupa;
2) Diagramas de estado para representar as transições possíveis de acordo com cada entrada em um automato finito;
3) Um simulador em Python de um automato finito determinístico.
1. Ling Form. Aut.
Automatos Finitos e Express˜oes Regulares com
Aplicac¸ ˜ao em Python
Dr. Eduardo S. Pereira.
@duducosmos/ pereira.somoza@gmail.com
https://github.com/duducosmos
12 de marc¸o de 2019
Dr. E. S. Pereira 1
2. Ling Form. Aut.
Sum´ario
1 Automato finito
2 Diagramas de Estados
3 Exerc´ıcios
4 Express˜oes Regulares
Definic¸ ˜oes Regulares
Simplificac¸ ˜oes Notacionais
5 ER em Python - Vis˜ao Geral
6 Exerc´ıcios
Dr. E. S. Pereira 2
4. Ling Form. Aut.
Automato finito
Automato finito
Automato finito
´E o modelo computacional mais simples - M´aquina de estado
finito.
S˜ao modelos para computadores com mem´oria limitada;
Dispositivos eletromecˆanicos: Lavadouras de roupa, rel´ogios
digitais, calculadoras.
Dr. E. S. Pereira 4
5. Ling Form. Aut.
Automato finito
Automato finito
Automato finito
´E o modelo computacional mais simples - M´aquina de estado
finito.
S˜ao modelos para computadores com mem´oria limitada;
Dispositivos eletromecˆanicos: Lavadouras de roupa, rel´ogios
digitais, calculadoras.
Dr. E. S. Pereira 5
6. Ling Form. Aut.
Automato finito
Automato finito
Automato finito
´E o modelo computacional mais simples - M´aquina de estado
finito.
S˜ao modelos para computadores com mem´oria limitada;
Dispositivos eletromecˆanicos: Lavadouras de roupa, rel´ogios
digitais, calculadoras.
Dr. E. S. Pereira 6
7. Ling Form. Aut.
Automato finito
Automato finito
Porta autom´atica
Tapete na frente e atr´as que detectam a presenc¸a de pessoas.
Abre a porta e `a mant´em aberta at´e que a pessoa se afaste.
O controlador pode estar em dois estados: Aberto, Fechado
Passa de um estado para outro dependo da entrada que recebe
Dr. E. S. Pereira 7
8. Ling Form. Aut.
Automato finito
Automato finito
Porta autom´atica
Tapete na frente e atr´as que detectam a presenc¸a de pessoas.
Abre a porta e `a mant´em aberta at´e que a pessoa se afaste.
O controlador pode estar em dois estados: Aberto, Fechado
Passa de um estado para outro dependo da entrada que recebe
Dr. E. S. Pereira 8
9. Ling Form. Aut.
Automato finito
Automato finito
Porta autom´atica
Tapete na frente e atr´as que detectam a presenc¸a de pessoas.
Abre a porta e `a mant´em aberta at´e que a pessoa se afaste.
O controlador pode estar em dois estados: Aberto, Fechado
Passa de um estado para outro dependo da entrada que recebe
Dr. E. S. Pereira 9
10. Ling Form. Aut.
Automato finito
Automato finito
Porta autom´atica
Tapete na frente e atr´as que detectam a presenc¸a de pessoas.
Abre a porta e `a mant´em aberta at´e que a pessoa se afaste.
O controlador pode estar em dois estados: Aberto, Fechado
Passa de um estado para outro dependo da entrada que recebe
Dr. E. S. Pereira 10
11. Ling Form. Aut.
Automato finito
Automato finito
Porta autom´atica
No caso da porta, tˆem-se quatro estados diferentes:
1. Frente: Pessoa no tapete da frente.
2. Retaguarda: Pessoa no tapete de dentro.
3. Ambos: Pessoas nos dois tapetes.
4. Nenhum: N˜ao tem ningu´em no tapete.
Para cada estimulo o controlador vai responder de uma forma
diferente, mudando de um estado para outro.
Dr. E. S. Pereira 11
12. Ling Form. Aut.
Automato finito
Automato finito
Porta autom´atica
No caso da porta, tˆem-se quatro estados diferentes:
1. Frente: Pessoa no tapete da frente.
2. Retaguarda: Pessoa no tapete de dentro.
3. Ambos: Pessoas nos dois tapetes.
4. Nenhum: N˜ao tem ningu´em no tapete.
Para cada estimulo o controlador vai responder de uma forma
diferente, mudando de um estado para outro.
Dr. E. S. Pereira 12
13. Ling Form. Aut.
Automato finito
Automato finito
Porta autom´atica
No caso da porta, tˆem-se quatro estados diferentes:
1. Frente: Pessoa no tapete da frente.
2. Retaguarda: Pessoa no tapete de dentro.
3. Ambos: Pessoas nos dois tapetes.
4. Nenhum: N˜ao tem ningu´em no tapete.
Para cada estimulo o controlador vai responder de uma forma
diferente, mudando de um estado para outro.
Dr. E. S. Pereira 13
14. Ling Form. Aut.
Automato finito
Automato finito
Porta autom´atica
No caso da porta, tˆem-se quatro estados diferentes:
1. Frente: Pessoa no tapete da frente.
2. Retaguarda: Pessoa no tapete de dentro.
3. Ambos: Pessoas nos dois tapetes.
4. Nenhum: N˜ao tem ningu´em no tapete.
Para cada estimulo o controlador vai responder de uma forma
diferente, mudando de um estado para outro.
Dr. E. S. Pereira 14
15. Ling Form. Aut.
Automato finito
Automato finito
Porta autom´atica
No caso da porta, tˆem-se quatro estados diferentes:
1. Frente: Pessoa no tapete da frente.
2. Retaguarda: Pessoa no tapete de dentro.
3. Ambos: Pessoas nos dois tapetes.
4. Nenhum: N˜ao tem ningu´em no tapete.
Para cada estimulo o controlador vai responder de uma forma
diferente, mudando de um estado para outro.
Dr. E. S. Pereira 15
16. Ling Form. Aut.
Automato finito
Automato finito
Porta autom´atica
Diagrama de estado: Representa as poss´ıveis transic¸ ˜oes de
acordo com cada entrada.
Para a sequˆencia: frente, retaguarda, nenhum, frente, ambos.
1. Fechado (in´ıcio) → Aberto;
2. Aberto → Aberto;
3. Aberto → Fechado;
4. Fechado → Aberto;
5. Aberto → Aberto;
Dr. E. S. Pereira 16
17. Ling Form. Aut.
Automato finito
Automato finito
Porta autom´atica
Diagrama de estado: Representa as poss´ıveis transic¸ ˜oes de
acordo com cada entrada.
Para a sequˆencia: frente, retaguarda, nenhum, frente, ambos.
1. Fechado (in´ıcio) → Aberto;
2. Aberto → Aberto;
3. Aberto → Fechado;
4. Fechado → Aberto;
5. Aberto → Aberto;
Dr. E. S. Pereira 17
18. Ling Form. Aut.
Automato finito
Automato finito
Porta autom´atica
Diagrama de estado: Representa as poss´ıveis transic¸ ˜oes de
acordo com cada entrada.
Para a sequˆencia: frente, retaguarda, nenhum, frente, ambos.
1. Fechado (in´ıcio) → Aberto;
2. Aberto → Aberto;
3. Aberto → Fechado;
4. Fechado → Aberto;
5. Aberto → Aberto;
Dr. E. S. Pereira 18
19. Ling Form. Aut.
Automato finito
Automato finito
Porta autom´atica
Diagrama de estado: Representa as poss´ıveis transic¸ ˜oes de
acordo com cada entrada.
Para a sequˆencia: frente, retaguarda, nenhum, frente, ambos.
1. Fechado (in´ıcio) → Aberto;
2. Aberto → Aberto;
3. Aberto → Fechado;
4. Fechado → Aberto;
5. Aberto → Aberto;
Dr. E. S. Pereira 19
20. Ling Form. Aut.
Automato finito
Automato finito
Porta autom´atica
Diagrama de estado: Representa as poss´ıveis transic¸ ˜oes de
acordo com cada entrada.
Para a sequˆencia: frente, retaguarda, nenhum, frente, ambos.
1. Fechado (in´ıcio) → Aberto;
2. Aberto → Aberto;
3. Aberto → Fechado;
4. Fechado → Aberto;
5. Aberto → Aberto;
Dr. E. S. Pereira 20
21. Ling Form. Aut.
Automato finito
Automato finito
Porta autom´atica
Diagrama de estado: Representa as poss´ıveis transic¸ ˜oes de
acordo com cada entrada.
Para a sequˆencia: frente, retaguarda, nenhum, frente, ambos.
1. Fechado (in´ıcio) → Aberto;
2. Aberto → Aberto;
3. Aberto → Fechado;
4. Fechado → Aberto;
5. Aberto → Aberto;
Dr. E. S. Pereira 21
22. Ling Form. Aut.
Automato finito
Automato finito
Porta autom´atica
Diagrama de estado: Representa as poss´ıveis transic¸ ˜oes de
acordo com cada entrada.
Para a sequˆencia: frente, retaguarda, nenhum, frente, ambos.
1. Fechado (in´ıcio) → Aberto;
2. Aberto → Aberto;
3. Aberto → Fechado;
4. Fechado → Aberto;
5. Aberto → Aberto;
Dr. E. S. Pereira 22
23. Ling Form. Aut.
Automato finito
Automato finito
Porta autom´atica
Diagrama de estado: Representa as poss´ıveis transic¸ ˜oes de
acordo com cada entrada.
Para a sequˆencia: frente, retaguarda, nenhum, frente, ambos.
1. Fechado (in´ıcio) → Aberto;
2. Aberto → Aberto;
3. Aberto → Fechado;
4. Fechado → Aberto;
5. Aberto → Aberto;
Dr. E. S. Pereira 23
26. Ling Form. Aut.
Diagrama de Estado
Automato finito
Autˆomato M
δ 0 1
q1 q1 q2
q2 q3 q2
q3 q1 q2
Dr. E. S. Pereira 26
27. Ling Form. Aut.
Diagrama de Estado
Automato finito
Autˆomato M
δ 0 1
q1 q1 q2
q2 q3 q2
q3 q1 q2
Dr. E. S. Pereira 27
28. Ling Form. Aut.
Diagrama de Estado
Automato finito
Definic¸ ˜ao formal
Um Automato finito ´e uma 5-tupla (Q,Σ,δ,q0,F) com
1. Q ´e o conjunto de finito de estados;
2. Σ ´e um conjunto finito chamado de alfabeto.
3. δ : Q×Γ → Q ´e a func¸ ˜ao de transic¸ ˜ao;
4. q0 ∈ Q ´e o estado inicial.
5. F ⊆ Q ´e o conjunto de estados aceitos ou estados finais;
Dr. E. S. Pereira 28
29. Ling Form. Aut.
Diagrama de Estado
Automato finito
Simulador em Python de um Automato Finito Determin´ıstico
# / usr / bin / env python
#−∗− coding : UTF−8 −∗−
def aceitePalavra(dfa , q0, F, palavra):
estado = q0
for caracter in palavra:
estado = dfa[estado][caracter]
return estado in F
Dr. E. S. Pereira 29
30. Ling Form. Aut.
Diagrama de Estado
Automato finito
Simulador em Python de um Automato Finito Determin´ıstico
dfa ={’q1’:{ ’0’:’q1’, ’1’:’q2’},
’q2’:{ ’1’:’q2’, ’0’:’q3’},
’q3’:{’0’:’q2’, ’1’:’q2’}
}
print(aceitePalavra(dfa , ’q1’, {’q2’}, ’010101010101’))
Dr. E. S. Pereira 30
31. Ling Form. Aut.
Diagrama de Estado
Automato finito
Projetando Automatos
Atribui um estado a cada possibilidade
Dr. E. S. Pereira 31
32. Ling Form. Aut.
Diagrama de Estado
Automato finito
Projetando Automatos
Atribui transic¸ ˜oes vendo como ir de uma possibilidade para outra.
Dr. E. S. Pereira 32
33. Ling Form. Aut.
Diagrama de Estado
Automato finito
Projetando Automatos
Atribui o estado inicial como aquele correspondendo `a
possibilidade de ter visto 0 s´ımbolos (cadeia vazia ε).
Coloque com estado de aceitac¸ ˜ao aquele correspondendo a
possibilidade nas quais vocˆe deseja aceitar a cadeia de entrada.
(qimpar) ´e um estado de aceitac¸ ˜ao pois vocˆe deseja aceitar
quando tiver encontrado n´umero impar de 1s.
Dr. E. S. Pereira 33
34. Ling Form. Aut.
Diagrama de Estado
Automato finito
Projetando Automatos
Atribui o estado inicial como aquele correspondendo `a
possibilidade de ter visto 0 s´ımbolos (cadeia vazia ε).
Coloque com estado de aceitac¸ ˜ao aquele correspondendo a
possibilidade nas quais vocˆe deseja aceitar a cadeia de entrada.
(qimpar) ´e um estado de aceitac¸ ˜ao pois vocˆe deseja aceitar
quando tiver encontrado n´umero impar de 1s.
Dr. E. S. Pereira 34
35. Ling Form. Aut.
Diagrama de Estado
Automato finito
Projetando Automatos
Atribui o estado inicial como aquele correspondendo `a
possibilidade de ter visto 0 s´ımbolos (cadeia vazia ε).
Coloque com estado de aceitac¸ ˜ao aquele correspondendo a
possibilidade nas quais vocˆe deseja aceitar a cadeia de entrada.
(qimpar) ´e um estado de aceitac¸ ˜ao pois vocˆe deseja aceitar
quando tiver encontrado n´umero impar de 1s.
Dr. E. S. Pereira 35
36. Ling Form. Aut.
Diagrama de Estado
Automato finito
Projetando Automatos
Imagine-se como uma m´aquina;
tem n´umero finito de estados
Considere o alfabeto {0,1}. E a linguagem tem cadeias com
n´umeros ´ımpar de 1s.
As possibilidade de entrada s˜ao: par at´e o momento; ´ımpar at´e o
momento.
Dr. E. S. Pereira 36
37. Ling Form. Aut.
Diagrama de Estado
Automato finito
Projetando Automatos
Imagine-se como uma m´aquina;
tem n´umero finito de estados
Considere o alfabeto {0,1}. E a linguagem tem cadeias com
n´umeros ´ımpar de 1s.
As possibilidade de entrada s˜ao: par at´e o momento; ´ımpar at´e o
momento.
Dr. E. S. Pereira 37
38. Ling Form. Aut.
Diagrama de Estado
Automato finito
Projetando Automatos
Imagine-se como uma m´aquina;
tem n´umero finito de estados
Considere o alfabeto {0,1}. E a linguagem tem cadeias com
n´umeros ´ımpar de 1s.
As possibilidade de entrada s˜ao: par at´e o momento; ´ımpar at´e o
momento.
Dr. E. S. Pereira 38
39. Ling Form. Aut.
Diagrama de Estado
Automato finito
Projetando Automatos
Imagine-se como uma m´aquina;
tem n´umero finito de estados
Considere o alfabeto {0,1}. E a linguagem tem cadeias com
n´umeros ´ımpar de 1s.
As possibilidade de entrada s˜ao: par at´e o momento; ´ımpar at´e o
momento.
Dr. E. S. Pereira 39
41. Ling Form. Aut.
Exerc´ıcios
Automato finito
1 Considere as duas AFD’s a seguir:
Figura: M1
Figura: M2
a) Qual o estado Inicial?.
b) Qual ´e o conjunto de estados de aceitac¸ ˜ao?
c) Por qual sequˆencia de estados a m´aquina passa para a entrada
aabb?
d) A m´aquina aceita aabb?
e) A m´aquina aceita a cadeia ε?
Dr. E. S. Pereira 41
42. Ling Form. Aut.
Exerc´ıcios
Exerc´ıcios
2 Dˆe a definic¸ ˜ao formal das m´aquinas M1 e M2 desenhadas no
Exerc´ıcio anterior.
3 A descric¸ ˜ao formal de uma ADF M ´e
({q1,q2,q3,q4,q5},{u,d},δ,q3,{q3}), com δ sendo dado pela
tabela a seguir. Dˆe o diagrama de estados dessa m´aquina.
u d
q1 q1 q2
q2 q1 q3
q3 q2 q4
q4 q3 q5
q5 q4 q5
Dr. E. S. Pereira 42
43. Ling Form. Aut.
Exerc´ıcios
Exerc´ıcios
4 Dˆe diagramas de estado de AFDs que reconhecem as
linguagens a seguir. Em todos os casos o alfabeto ´e {0,1}.
a {w | w comec¸a com 1 e termina com um 0}
b {w | w cont´em pelo menos trˆes 1 }
Dr. E. S. Pereira 43
45. Ling Form. Aut.
Express˜oes Regulares
Express˜oes Regulares
Express˜oes Regulares
letra(letra| d´ıgito)∗
Cada express˜ao regular r denota uma linguagem L(r)
Dr. E. S. Pereira 45
46. Ling Form. Aut.
Express˜oes Regulares
Express˜oes Regulares
Express˜oes Regulares
letra(letra| d´ıgito)∗
Cada express˜ao regular r denota uma linguagem L(r)
Dr. E. S. Pereira 46
47. Ling Form. Aut.
Express˜oes Regulares
Express˜oes Regulares
Express˜oes Regulares
Regras que definem as express˜oes regulares sobre um alfabeto
Σ.
1. ε ´e uma express˜ao regular denotando {ε}, o conjunto de cadeias
vazias.
2. Se a ´e um s´ımbolo em Σ, ent˜ao a ´e uma express˜ao regular que
denota {a}
3. Suponhamos que r e s sejam express˜oes regulares denotando as
linguagens L(r) e L(s).
a) (r) | (s) ´e uma express˜ao regular denotando L(r)∪L(s)
b) (r)(s) ´e uma express˜ao regular denotando L(r)L(s)
c) (r)∗ ´e uma express˜ao regular denotando (L(r))∗
d) (r) ´e uma express˜ao regular denotando L(r)2
Dr. E. S. Pereira 47
48. Ling Form. Aut.
Express˜oes Regulares
Express˜oes Regulares
Express˜oes Regulares
Regras que definem as express˜oes regulares sobre um alfabeto
Σ.
1. ε ´e uma express˜ao regular denotando {ε}, o conjunto de cadeias
vazias.
2. Se a ´e um s´ımbolo em Σ, ent˜ao a ´e uma express˜ao regular que
denota {a}
3. Suponhamos que r e s sejam express˜oes regulares denotando as
linguagens L(r) e L(s).
a) (r) | (s) ´e uma express˜ao regular denotando L(r)∪L(s)
b) (r)(s) ´e uma express˜ao regular denotando L(r)L(s)
c) (r)∗ ´e uma express˜ao regular denotando (L(r))∗
d) (r) ´e uma express˜ao regular denotando L(r)2
Dr. E. S. Pereira 48
49. Ling Form. Aut.
Express˜oes Regulares
Express˜oes Regulares
Express˜oes Regulares
Regras que definem as express˜oes regulares sobre um alfabeto
Σ.
1. ε ´e uma express˜ao regular denotando {ε}, o conjunto de cadeias
vazias.
2. Se a ´e um s´ımbolo em Σ, ent˜ao a ´e uma express˜ao regular que
denota {a}
3. Suponhamos que r e s sejam express˜oes regulares denotando as
linguagens L(r) e L(s).
a) (r) | (s) ´e uma express˜ao regular denotando L(r)∪L(s)
b) (r)(s) ´e uma express˜ao regular denotando L(r)L(s)
c) (r)∗ ´e uma express˜ao regular denotando (L(r))∗
d) (r) ´e uma express˜ao regular denotando L(r)2
Dr. E. S. Pereira 49
50. Ling Form. Aut.
Express˜oes Regulares
Express˜oes Regulares
Express˜oes Regulares
Regras que definem as express˜oes regulares sobre um alfabeto
Σ.
1. ε ´e uma express˜ao regular denotando {ε}, o conjunto de cadeias
vazias.
2. Se a ´e um s´ımbolo em Σ, ent˜ao a ´e uma express˜ao regular que
denota {a}
3. Suponhamos que r e s sejam express˜oes regulares denotando as
linguagens L(r) e L(s).
a) (r) | (s) ´e uma express˜ao regular denotando L(r)∪L(s)
b) (r)(s) ´e uma express˜ao regular denotando L(r)L(s)
c) (r)∗ ´e uma express˜ao regular denotando (L(r))∗
d) (r) ´e uma express˜ao regular denotando L(r)2
Dr. E. S. Pereira 50
51. Ling Form. Aut.
Express˜oes Regulares
Express˜oes Regulares
Express˜oes Regulares
Regras que definem as express˜oes regulares sobre um alfabeto
Σ.
1. ε ´e uma express˜ao regular denotando {ε}, o conjunto de cadeias
vazias.
2. Se a ´e um s´ımbolo em Σ, ent˜ao a ´e uma express˜ao regular que
denota {a}
3. Suponhamos que r e s sejam express˜oes regulares denotando as
linguagens L(r) e L(s).
a) (r) | (s) ´e uma express˜ao regular denotando L(r)∪L(s)
b) (r)(s) ´e uma express˜ao regular denotando L(r)L(s)
c) (r)∗ ´e uma express˜ao regular denotando (L(r))∗
d) (r) ´e uma express˜ao regular denotando L(r)2
Dr. E. S. Pereira 51
52. Ling Form. Aut.
Express˜oes Regulares
Express˜oes Regulares
Express˜oes Regulares
Regras que definem as express˜oes regulares sobre um alfabeto
Σ.
1. ε ´e uma express˜ao regular denotando {ε}, o conjunto de cadeias
vazias.
2. Se a ´e um s´ımbolo em Σ, ent˜ao a ´e uma express˜ao regular que
denota {a}
3. Suponhamos que r e s sejam express˜oes regulares denotando as
linguagens L(r) e L(s).
a) (r) | (s) ´e uma express˜ao regular denotando L(r)∪L(s)
b) (r)(s) ´e uma express˜ao regular denotando L(r)L(s)
c) (r)∗ ´e uma express˜ao regular denotando (L(r))∗
d) (r) ´e uma express˜ao regular denotando L(r)2
Dr. E. S. Pereira 52
53. Ling Form. Aut.
Express˜oes Regulares
Express˜oes Regulares
Express˜oes Regulares
Regras que definem as express˜oes regulares sobre um alfabeto
Σ.
1. ε ´e uma express˜ao regular denotando {ε}, o conjunto de cadeias
vazias.
2. Se a ´e um s´ımbolo em Σ, ent˜ao a ´e uma express˜ao regular que
denota {a}
3. Suponhamos que r e s sejam express˜oes regulares denotando as
linguagens L(r) e L(s).
a) (r) | (s) ´e uma express˜ao regular denotando L(r)∪L(s)
b) (r)(s) ´e uma express˜ao regular denotando L(r)L(s)
c) (r)∗ ´e uma express˜ao regular denotando (L(r))∗
d) (r) ´e uma express˜ao regular denotando L(r)2
Dr. E. S. Pereira 53
54. Ling Form. Aut.
Express˜oes Regulares
Express˜oes Regulares
Express˜oes Regulares
Regras que definem as express˜oes regulares sobre um alfabeto
Σ.
1. ε ´e uma express˜ao regular denotando {ε}, o conjunto de cadeias
vazias.
2. Se a ´e um s´ımbolo em Σ, ent˜ao a ´e uma express˜ao regular que
denota {a}
3. Suponhamos que r e s sejam express˜oes regulares denotando as
linguagens L(r) e L(s).
a) (r) | (s) ´e uma express˜ao regular denotando L(r)∪L(s)
b) (r)(s) ´e uma express˜ao regular denotando L(r)L(s)
c) (r)∗ ´e uma express˜ao regular denotando (L(r))∗
d) (r) ´e uma express˜ao regular denotando L(r)2
Dr. E. S. Pereira 54
55. Ling Form. Aut.
Express˜oes Regulares
Express˜oes Regulares
Express˜oes Regulares
Seja Σ = {a,b}
Dr. E. S. Pereira 55
56. Ling Form. Aut.
Express˜oes Regulares
Express˜oes Regulares
Express˜oes Regulares
Seja Σ = {a,b}
Dr. E. S. Pereira 56
57. Ling Form. Aut.
Express˜oes Regulares
Operac¸ ˜oes em Linguagens
Operac¸ ˜oes em Linguagens
Dr. E. S. Pereira 57
58. Ling Form. Aut.
Express˜oes Regulares
Definic¸ ˜oes Regulares
Definic¸ ˜oes Regulares
Definic¸ ˜oes Regulares
Nomes ou definic¸ ˜oes dadas a express˜oes regulares.
d1 → r1
d2 → r2
d3 → r3
d4 → r4
... dn → rn
Cada di ´e um nome distinto para cada ri
Dr. E. S. Pereira 58
59. Ling Form. Aut.
Express˜oes Regulares
Definic¸ ˜oes Regulares
Definic¸ ˜oes Regulares
Definic¸ ˜oes Regulares
Nomes ou definic¸ ˜oes dadas a express˜oes regulares.
d1 → r1
d2 → r2
d3 → r3
d4 → r4
... dn → rn
Cada di ´e um nome distinto para cada ri
Dr. E. S. Pereira 59
60. Ling Form. Aut.
Express˜oes Regulares
Definic¸ ˜oes Regulares
Definic¸ ˜oes Regulares
Definic¸ ˜oes Regulares
O conjunto de identificadores em Pascal ´e o conjunto de letras e
d´ıgitos comec¸ando por uma letra.
letra → A | B... | Z | a | b | ... | z
d´ıgito → 0 | 1 | ... | 9
id → letra | (letra | d´ıgito)∗
Dr. E. S. Pereira 60
62. Ling Form. Aut.
Express˜oes Regulares
Simplificac¸ ˜oes Notacionais
Simplificac¸ ˜oes Notacionais
Definic¸ ˜oes Regulares
Operador unit´ario p´os-fixo + - Uma ou mais ocorrˆencias de
Operador p´os-fixo ? indica zero ou mais ocorrˆencias. r? ´e uma
simplificac¸ ˜ao para r | ε
d´ıgito → 0 | 1 | ... | 9
d´ıgito → d´ıgito+
frac¸ ˜ao opcional → (.d´ıgito)?
expoente opcional → (E(+ | −)? d´ıgito)?
num → d´ıgito frac¸ ˜ao opcional
expoente opcional
Classes de caracteres. [abc] indica a | b | c. [a−z] indica
a | b | ... | z. Cadeias gerais: [A−Za−z][A−Za−z0−9]∗
Dr. E. S. Pereira 62
63. Ling Form. Aut.
Express˜oes Regulares
Simplificac¸ ˜oes Notacionais
Simplificac¸ ˜oes Notacionais
Definic¸ ˜oes Regulares
Operador unit´ario p´os-fixo + - Uma ou mais ocorrˆencias de
Operador p´os-fixo ? indica zero ou mais ocorrˆencias. r? ´e uma
simplificac¸ ˜ao para r | ε
d´ıgito → 0 | 1 | ... | 9
d´ıgito → d´ıgito+
frac¸ ˜ao opcional → (.d´ıgito)?
expoente opcional → (E(+ | −)? d´ıgito)?
num → d´ıgito frac¸ ˜ao opcional
expoente opcional
Classes de caracteres. [abc] indica a | b | c. [a−z] indica
a | b | ... | z. Cadeias gerais: [A−Za−z][A−Za−z0−9]∗
Dr. E. S. Pereira 63
64. Ling Form. Aut.
Express˜oes Regulares
Simplificac¸ ˜oes Notacionais
Simplificac¸ ˜oes Notacionais
Definic¸ ˜oes Regulares
Operador unit´ario p´os-fixo + - Uma ou mais ocorrˆencias de
Operador p´os-fixo ? indica zero ou mais ocorrˆencias. r? ´e uma
simplificac¸ ˜ao para r | ε
d´ıgito → 0 | 1 | ... | 9
d´ıgito → d´ıgito+
frac¸ ˜ao opcional → (.d´ıgito)?
expoente opcional → (E(+ | −)? d´ıgito)?
num → d´ıgito frac¸ ˜ao opcional
expoente opcional
Classes de caracteres. [abc] indica a | b | c. [a−z] indica
a | b | ... | z. Cadeias gerais: [A−Za−z][A−Za−z0−9]∗
Dr. E. S. Pereira 64
65. Ling Form. Aut.
ER em Python - Vis˜ao Geral
ER em Python - Vis˜ao Geral
Dr. E. S. Pereira 65
66. Ling Form. Aut.
ER em Python - Vis˜ao Geral
Modulo re
Modulo re
O m´odulo re tem um m´etodo chamado search que recebe um
padr˜ao, em express˜ao regular, e a string a ser analisada. Se a
busca for bem sucedia, search retorna um objeto, do contr´ario
retorna None.
Dr. E. S. Pereira 66
67. Ling Form. Aut.
ER em Python - Vis˜ao Geral
Modulo re
Modulo re
# / usr / bin / env python
#−∗− coding : UTF−8 −∗−
import re
texto = "piiig"
exr = "iii"
match = re.search(exr , texto)
if match is not None:
print("Encotrado", match.group())
Dr. E. S. Pereira 67
68. Ling Form. Aut.
ER em Python - Vis˜ao Geral
Sintaxe em Python
Sintaxe em Python
Dr. E. S. Pereira 68
69. Ling Form. Aut.
ER em Python - Vis˜ao Geral
Sintaxe em Python
Sintaxe em Python
Dr. E. S. Pereira 69
70. Ling Form. Aut.
ER em Python - Vis˜ao Geral
Sintaxe em Python
Sintaxe em Python
Dr. E. S. Pereira 70
71. Ling Form. Aut.
ER em Python - Vis˜ao Geral
Sintaxe em Python
Sintaxe em Python
Dr. E. S. Pereira 71
72. Ling Form. Aut.
ER em Python - Vis˜ao Geral
Sintaxe em Python
Sintaxe em Python
Dr. E. S. Pereira 72
73. Ling Form. Aut.
ER em Python - Vis˜ao Geral
Modulo re
Modulo re
# / usr / bin / env python
#−∗− coding : UTF−8 −∗−
import re
texto = "p123g"
exr = "ddd"
match = re.search(exr , texto)
if match is not None:
print("Encotrado", match.group())
# ”123”
texto = "@@abcd!!!"
exr = "www"
match = re.search(exr , texto)
if match is not None:
print("Encotrado", match.group())
# ”abc”
Dr. E. S. Pereira 73
74. Ling Form. Aut.
ER em Python - Vis˜ao Geral
Modulo re
Modulo re
# / usr / bin / env python
#−∗− coding : UTF−8 −∗−
import re
texto = "purple alice -b@google.com monkey dishwasher"
exr = "w+@w+"
match = re.search(exr , texto)
if match is not None:
print("Encotrado", match.group())
# ”b@google”
Dr. E. S. Pereira 74
75. Ling Form. Aut.
ER em Python - Vis˜ao Geral
Modulo re
Modulo re
# / usr / bin / env python
#−∗− coding : UTF−8 −∗−
import re
texto = "purple alice -b@google.com monkey dishwasher"
exr = r’[w.-]+@[w.-]+’
match = re.search(exr , texto)
if match is not None:
print("Encotrado", match.group())
# ’ a l ic e −b@google . com ’
Dr. E. S. Pereira 75
76. Ling Form. Aut.
ER em Python - Vis˜ao Geral
Modulo re
Modulo re
# / usr / bin / env python
#−∗− coding : UTF−8 −∗−
import re
tweet = "Veja o video em http://www..."
myRE = ’((www.[ˆs]+)|(https ?://[ˆs]+))’
tweet = re.sub(myRE , ’ ’, tweet)
print(tweet)
# ’ Veja o video em ’
Dr. E. S. Pereira 76
77. Ling Form. Aut.
ER em Python - Vis˜ao Geral
Modulo re
findall() - Encontra todas as relac¸ ˜oes e as retorna na forma de um lista
de string, em que cada string representa um correlac¸ ˜ao.
Modulo re
# / usr / bin / env python
#−∗− coding : UTF−8 −∗−
import re
str = ’ ’ ’ purple alice@google . com ,
blah monkey bob@abc . com blah dishwasher ’ ’ ’
myER = r’[w.-]+@[w.-]+’
emails = re.findall(myER , str) ##
for email in emails:
print(email)
# [ ’ alice@google . com ’ , ’bob@abc . com ’]
Dr. E. S. Pereira 77
78. Ling Form. Aut.
ER em Python - Vis˜ao Geral
Modulo re
Modulo re
# / usr / bin / env python
#−∗− coding : UTF−8 −∗−
import re
f = open(’test.txt’, ’r’)
strings = re.findall(r’some pattern’, f.read())
Dr. E. S. Pereira 78
80. Ling Form. Aut.
Exerc´ıcios
Exerc´ıcios - 1
1 Descreva informalmente (por palavras) as linguagens
representadas pelas seguintes express˜oes
a. 0(0 | 1)∗0
b. (0 | 1)∗
c. (0 | 1)∗0(0 | 1)(0 | 1)
d. 0∗10∗10∗10∗
2 Escreva uma express˜ao regular para as seguintes linguagens:
a. String em a,b,c,d em que o primeiro ”b”´e precedido de um ”a”
b. Todas as strings que contˆem as cinco vogais por ordem alfab´etica
consecutiva.
Dr. E. S. Pereira 80
81. Ling Form. Aut.
Exerc´ıcios
Exerc´ıcios - 1
3 As quantidades monet´arias s˜ao expressas de diferentes formas.
Escreva as express˜oes regulares que permitam fazer o
reconhecimento das moedas apresentados na tabela 3
Moeda Exemplo
Euro e12,23; e1,00;2,35EUR;
L £12.50; £22.12; £22.99
D´olar $5.00;$0.30;
Escudo 12$50; 25$00;150$00;0$50
Dr. E. S. Pereira 81
82. Ling Form. Aut.
Exerc´ıcios
Exerc´ıcios - 1
4 Considere o alfabeto Σ = {0,1}, represente as seguintes
linguagens utilizando express˜oes regulares:
a L(A) = {u ∈ Σ∗ | u tem um n´umero par de 1’s}
b L(A) = {u ∈ Σ∗ | u ´e vazio ou tem d´ıgitos todos iguais, sendo de
comprimento para as sequˆencias 0’s e ´ımpar as sequˆencias de
1’s}
Dr. E. S. Pereira 82
83. Ling Form. Aut.
Exerc´ıcios
Exerc´ıcios - 1
4 Considere o alfabeto Σ = {A,B,C..,Z,a,b,c,...,z}, represente
as seguintes linguagens utilizando express˜oes regulares:
a L(A) = {u ∈ Σ∗ | u tem sempre pelo menos dois a’s juntos}
b L(A) = {u ∈ Σ∗ | u comec¸a por um car´acter min´usculo e tem no
m´aximo duas mai´usculas}
c L(A) = {u ∈ Σ∗ | u comec¸a por uma mai´uscula.}
Dr. E. S. Pereira 83