SlideShare uma empresa Scribd logo
1 de 84
Baixar para ler offline
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
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
Ling Form. Aut.
Automato finito
Automato finito
Dr. E. S. Pereira 3
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Ling Form. Aut.
Automato finito
Automato finito
Porta autom´atica
Dr. E. S. Pereira 24
Ling Form. Aut.
Diagrama de Estado
Diagrama de Estado
Dr. E. S. Pereira 25
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
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
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
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
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
Ling Form. Aut.
Diagrama de Estado
Automato finito
Projetando Automatos
Atribui um estado a cada possibilidade
Dr. E. S. Pereira 31
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
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
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
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
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
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
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
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
Ling Form. Aut.
Exerc´ıcios
Exerc´ıcios
Dr. E. S. Pereira 40
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
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
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
Ling Form. Aut.
Express˜oes Regulares
Express˜oes Regulares
Dr. E. S. Pereira 44
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
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
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
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
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
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
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
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
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
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
Ling Form. Aut.
Express˜oes Regulares
Express˜oes Regulares
Express˜oes Regulares
Seja Σ = {a,b}
Dr. E. S. Pereira 55
Ling Form. Aut.
Express˜oes Regulares
Express˜oes Regulares
Express˜oes Regulares
Seja Σ = {a,b}
Dr. E. S. Pereira 56
Ling Form. Aut.
Express˜oes Regulares
Operac¸ ˜oes em Linguagens
Operac¸ ˜oes em Linguagens
Dr. E. S. Pereira 57
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
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
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
Ling Form. Aut.
Express˜oes Regulares
Definic¸ ˜oes Regulares
Definic¸ ˜oes Regulares
Definic¸ ˜oes Regulares
N´umeros sem sinal em pascal 5289 39.37 6.33E4 1.898E −4
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
Dr. E. S. Pereira 61
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
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
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
Ling Form. Aut.
ER em Python - Vis˜ao Geral
ER em Python - Vis˜ao Geral
Dr. E. S. Pereira 65
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
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
Ling Form. Aut.
ER em Python - Vis˜ao Geral
Sintaxe em Python
Sintaxe em Python
Dr. E. S. Pereira 68
Ling Form. Aut.
ER em Python - Vis˜ao Geral
Sintaxe em Python
Sintaxe em Python
Dr. E. S. Pereira 69
Ling Form. Aut.
ER em Python - Vis˜ao Geral
Sintaxe em Python
Sintaxe em Python
Dr. E. S. Pereira 70
Ling Form. Aut.
ER em Python - Vis˜ao Geral
Sintaxe em Python
Sintaxe em Python
Dr. E. S. Pereira 71
Ling Form. Aut.
ER em Python - Vis˜ao Geral
Sintaxe em Python
Sintaxe em Python
Dr. E. S. Pereira 72
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
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
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
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
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
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
Ling Form. Aut.
Exerc´ıcios
Exerc´ıcios
Dr. E. S. Pereira 79
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
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
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
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
Ling Form. Aut.
Exerc´ıcios
FIM
FIM
MUITO OBRIGADO.
Dr. E. S. Pereira 84

Mais conteúdo relacionado

Mais procurados

Laboratório de Programação II: Uso do ponteiro void *
Laboratório de Programação II: Uso do ponteiro void *Laboratório de Programação II: Uso do ponteiro void *
Laboratório de Programação II: Uso do ponteiro void *Alex Camargo
 
Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006Luís Fernando Richter
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CC++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CDimitris Psounis
 
Ebook logica-de-programacao-para-iniciantes
Ebook logica-de-programacao-para-iniciantesEbook logica-de-programacao-para-iniciantes
Ebook logica-de-programacao-para-iniciantesMarcio Lima
 
Análise Orientada a Objetos - Diagrama de Sequencia
Análise Orientada a Objetos - Diagrama de SequenciaAnálise Orientada a Objetos - Diagrama de Sequencia
Análise Orientada a Objetos - Diagrama de SequenciaCursoSENAC
 
Diagrama de Perfil e Estruturas Compostas
Diagrama de Perfil e Estruturas CompostasDiagrama de Perfil e Estruturas Compostas
Diagrama de Perfil e Estruturas CompostasOctviodeOliveiraJorg
 
ΠΛΗ10 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 1
ΠΛΗ10 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 1ΠΛΗ10 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 1
ΠΛΗ10 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 1Dimitris Psounis
 
Recursividade em linguagem C
Recursividade em linguagem CRecursividade em linguagem C
Recursividade em linguagem CLeonardo Lima
 
Desenvolvimento Mobile
Desenvolvimento MobileDesenvolvimento Mobile
Desenvolvimento MobileElton Minetto
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.1
ΠΛΗ10 ΜΑΘΗΜΑ 2.1 ΠΛΗ10 ΜΑΘΗΜΑ 2.1
ΠΛΗ10 ΜΑΘΗΜΑ 2.1 Dimitris Psounis
 
Networking Essentials 2.0 Module2.pptx
Networking Essentials 2.0 Module2.pptxNetworking Essentials 2.0 Module2.pptx
Networking Essentials 2.0 Module2.pptxTETALAVENKATASIVARED1
 
Auditoria de sistemas de informação
Auditoria de sistemas de informaçãoAuditoria de sistemas de informação
Auditoria de sistemas de informaçãoSilvino Neto
 
Software Architecture Design for Begginers
Software Architecture Design for BegginersSoftware Architecture Design for Begginers
Software Architecture Design for BegginersChinh Ngo Nguyen
 
Introdução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosNécio de Lima Veras
 
Especificação de requisitos
Especificação de requisitosEspecificação de requisitos
Especificação de requisitosFernando Palma
 

Mais procurados (20)

Laboratório de Programação II: Uso do ponteiro void *
Laboratório de Programação II: Uso do ponteiro void *Laboratório de Programação II: Uso do ponteiro void *
Laboratório de Programação II: Uso do ponteiro void *
 
Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CC++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
 
Ebook logica-de-programacao-para-iniciantes
Ebook logica-de-programacao-para-iniciantesEbook logica-de-programacao-para-iniciantes
Ebook logica-de-programacao-para-iniciantes
 
Análise Orientada a Objetos - Diagrama de Sequencia
Análise Orientada a Objetos - Diagrama de SequenciaAnálise Orientada a Objetos - Diagrama de Sequencia
Análise Orientada a Objetos - Diagrama de Sequencia
 
Diagrama de Classes
Diagrama de ClassesDiagrama de Classes
Diagrama de Classes
 
Diagrama de Perfil e Estruturas Compostas
Diagrama de Perfil e Estruturas CompostasDiagrama de Perfil e Estruturas Compostas
Diagrama de Perfil e Estruturas Compostas
 
ΠΛΗ10 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 1
ΠΛΗ10 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 1ΠΛΗ10 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 1
ΠΛΗ10 ΤΥΠΟΛΟΓΙΟ ΕΝΟΤΗΤΑΣ 1
 
Chap3 RE elicitation
Chap3 RE elicitationChap3 RE elicitation
Chap3 RE elicitation
 
Recursividade em linguagem C
Recursividade em linguagem CRecursividade em linguagem C
Recursividade em linguagem C
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.2
ΠΛΗ10 ΜΑΘΗΜΑ 2.2ΠΛΗ10 ΜΑΘΗΜΑ 2.2
ΠΛΗ10 ΜΑΘΗΜΑ 2.2
 
Desenvolvimento Mobile
Desenvolvimento MobileDesenvolvimento Mobile
Desenvolvimento Mobile
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.1
ΠΛΗ10 ΜΑΘΗΜΑ 2.1 ΠΛΗ10 ΜΑΘΗΜΑ 2.1
ΠΛΗ10 ΜΑΘΗΜΑ 2.1
 
Networking Essentials 2.0 Module2.pptx
Networking Essentials 2.0 Module2.pptxNetworking Essentials 2.0 Module2.pptx
Networking Essentials 2.0 Module2.pptx
 
Análise de Algoritmos
Análise de AlgoritmosAnálise de Algoritmos
Análise de Algoritmos
 
Auditoria de sistemas de informação
Auditoria de sistemas de informaçãoAuditoria de sistemas de informação
Auditoria de sistemas de informação
 
Software Architecture Design for Begginers
Software Architecture Design for BegginersSoftware Architecture Design for Begginers
Software Architecture Design for Begginers
 
Estrutura de dados - Filas
Estrutura de dados - FilasEstrutura de dados - Filas
Estrutura de dados - Filas
 
Introdução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmos
 
Especificação de requisitos
Especificação de requisitosEspecificação de requisitos
Especificação de requisitos
 

Mais de Eduardo S. Pereira

Lista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Lista de Exercícios de Probabilidade e Estatística do Segundo BimestreLista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Lista de Exercícios de Probabilidade e Estatística do Segundo BimestreEduardo S. Pereira
 
Aula 10 Probabilidade e Estatística
Aula 10 Probabilidade e EstatísticaAula 10 Probabilidade e Estatística
Aula 10 Probabilidade e EstatísticaEduardo S. Pereira
 
Aula de Probabilidade e Estatítisca Revisão
Aula de Probabilidade e Estatítisca RevisãoAula de Probabilidade e Estatítisca Revisão
Aula de Probabilidade e Estatítisca RevisãoEduardo S. Pereira
 
Atividade prática Probabilidade e Estatística
Atividade prática Probabilidade e EstatísticaAtividade prática Probabilidade e Estatística
Atividade prática Probabilidade e EstatísticaEduardo S. Pereira
 
Probabilidade e Estatítica Lista de Exercícios 1
Probabilidade e Estatítica Lista de Exercícios 1Probabilidade e Estatítica Lista de Exercícios 1
Probabilidade e Estatítica Lista de Exercícios 1Eduardo S. Pereira
 
Probabilidade e Estatística Tabelas de Frequência
Probabilidade e Estatística Tabelas de FrequênciaProbabilidade e Estatística Tabelas de Frequência
Probabilidade e Estatística Tabelas de FrequênciaEduardo S. Pereira
 
Probabilidade e Estatística Boxplot
Probabilidade e Estatística BoxplotProbabilidade e Estatística Boxplot
Probabilidade e Estatística BoxplotEduardo S. Pereira
 
Primeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de DadosPrimeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de DadosEduardo S. Pereira
 
Aula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de DadosAula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de DadosEduardo S. Pereira
 

Mais de Eduardo S. Pereira (20)

Lista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Lista de Exercícios de Probabilidade e Estatística do Segundo BimestreLista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Lista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
 
Aula 10 Probabilidade e Estatística
Aula 10 Probabilidade e EstatísticaAula 10 Probabilidade e Estatística
Aula 10 Probabilidade e Estatística
 
Aula de Probabilidade e Estatítisca Revisão
Aula de Probabilidade e Estatítisca RevisãoAula de Probabilidade e Estatítisca Revisão
Aula de Probabilidade e Estatítisca Revisão
 
Atividade prática Probabilidade e Estatística
Atividade prática Probabilidade e EstatísticaAtividade prática Probabilidade e Estatística
Atividade prática Probabilidade e Estatística
 
Probabilidade e Estatítica Lista de Exercícios 1
Probabilidade e Estatítica Lista de Exercícios 1Probabilidade e Estatítica Lista de Exercícios 1
Probabilidade e Estatítica Lista de Exercícios 1
 
Probabilidade e Estatística Tabelas de Frequência
Probabilidade e Estatística Tabelas de FrequênciaProbabilidade e Estatística Tabelas de Frequência
Probabilidade e Estatística Tabelas de Frequência
 
Probabilidade e Estatística Boxplot
Probabilidade e Estatística BoxplotProbabilidade e Estatística Boxplot
Probabilidade e Estatística Boxplot
 
Aula 11 Modelagem de Dados
Aula 11 Modelagem de DadosAula 11 Modelagem de Dados
Aula 11 Modelagem de Dados
 
Aula 10 Modelagem de Dados
Aula 10 Modelagem de DadosAula 10 Modelagem de Dados
Aula 10 Modelagem de Dados
 
Aula 9 Modelagem de Dados
Aula 9 Modelagem de DadosAula 9 Modelagem de Dados
Aula 9 Modelagem de Dados
 
Aula 7 Modelagem de Dados
Aula 7 Modelagem de DadosAula 7 Modelagem de Dados
Aula 7 Modelagem de Dados
 
Aula 8 Modelagem de Dados
Aula 8 Modelagem de DadosAula 8 Modelagem de Dados
Aula 8 Modelagem de Dados
 
Primeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de DadosPrimeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de Dados
 
Aula 06 Modelagem de Dados
Aula 06 Modelagem de DadosAula 06 Modelagem de Dados
Aula 06 Modelagem de Dados
 
Aula05
Aula05Aula05
Aula05
 
Aula04
Aula04Aula04
Aula04
 
Aula03
Aula03Aula03
Aula03
 
Aula02
Aula02Aula02
Aula02
 
Aula01
Aula01Aula01
Aula01
 
Aula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de DadosAula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de Dados
 

Linguagens Formais e Autômatos

  • 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
  • 3. Ling Form. Aut. Automato finito Automato finito Dr. E. S. Pereira 3
  • 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
  • 24. Ling Form. Aut. Automato finito Automato finito Porta autom´atica Dr. E. S. Pereira 24
  • 25. Ling Form. Aut. Diagrama de Estado Diagrama de Estado Dr. E. S. Pereira 25
  • 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
  • 44. Ling Form. Aut. Express˜oes Regulares Express˜oes Regulares Dr. E. S. Pereira 44
  • 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
  • 61. Ling Form. Aut. Express˜oes Regulares Definic¸ ˜oes Regulares Definic¸ ˜oes Regulares Definic¸ ˜oes Regulares N´umeros sem sinal em pascal 5289 39.37 6.33E4 1.898E −4 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 Dr. E. S. Pereira 61
  • 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
  • 84. Ling Form. Aut. Exerc´ıcios FIM FIM MUITO OBRIGADO. Dr. E. S. Pereira 84