Vous êtes sur la page 1sur 39

Compiladores

Conceitos Básicos

Professor: Cristiano Rodrigo Azevedo

Email: cristiano.azevedo@unoesc.edu.br
Sistema de estados finitos

 É uma máquina abstrata representada por:


 modelo matemático de um sistema com entradas e
saídas discretas.
 pode assumir um número pré-definido de estados.
 Cada estado resume somente informações do estado
passado para determinar as ações da próxima entrada.
Definição de Autômato Finito

 Interruptor
 Um interruptor comum tem dois estados possíveis:
ligado e desligado.
 Sobre esse interruptor podem ser realizadas duas
ações: ligar e desligar.
 O funcionamento deste interruptor pode ser descrito pelo
autómato finito seguinte:
Definição de Autômato Finito

Ligar

Iniciar
Desligado Ligado

Desligar
Exemplo de sistema de estados
finitos
 Um exemplo clássico e simples é o elevador.
 Trata-se de um sistema que não memoriza as requisições
anteriores.
 Cada “estado” sumariza as informações “andar corrente” e
“direção de movimento”.
 As entradas para o sistema são requisições pendentes.
 Exemplos, analisadores léxicos e alguns processadores de
texto, memorizam apenas a estrutura do prefixo das
palavras
Teoria dos Autômatos

 Autômatos finitos (AF):


 modelo restrito para o computador
 são dispositivos de reconhecimento de linguagens
 tem capacidade finita fixa de informação
 sem memória auxiliar
 sem saída de dados
 Pode-se dizer que é uma máquina abstrata que reconhece
linguagens.
 Supondo-se uma linguagem L e fornecendo ao AF uma
sequência de caracteres w, ele responderá se w  L ou w
 L.
Teoria dos Autômatos

Um autômato finito possui:


 Fita de entrada – armazena os símbolos da
cadeia de entrada;
 Controle finito - extrai símbolos da fita de
entrada através de um sensor de leitura;
 Função de transição – decide qual deverá ser o
próximo estado do autômato, com base no
símbolo lido e no estado anterior;
 Número finito de estados.
A Fita

 É finita a esquerda e a direita, dividida em


células onde cada uma armazena um símbolo.
 Não é possível gravar sobre a fita e não existe
memória auxiliar
 Inicialmente a cadeia a ser processada ocupa
toda fita
Unidade de controle

 Possui um número finito de estados pré-definido.


 A unidade lê um símbolo da fita de cada vez e
move a cabeça para a direita
 Inicialmente a cabeça é posicionada mais a
esquerda da fita.
 Importante – O autômato Finito não possui
memória de trabalho.
Autômatos finitos equivalentes

 Dois autômatos finitos M1 e M2 são ditos equivalente se, e


somente se:
 ACEITAM(M1) = ACEITAM(M2)

 Uma linguagem aceita por um autômato finito


determinístico é uma linguagem regular
Teoria dos Autômatos

Graficamente um AF pode ser representado por

fita com a cadeia w de entrada

a a b b

Cabeça
de leitura
Início do processo
Controle
de reconhecimento
Finito
pelo estado inicial qo
Definição de Autômato Finito

Um autômato finito reconhece uma


linguagem regular!

 A utilização do termo “determinístico” para designar esse


tipo de autômato finito decorre do fato de que, enquanto
houver símbolos na fita de entrada, será sempre possível
determinar o estado seguinte a ser assumido pelo
autômato, o qual será único em todas as situações.
Definição de Autômato Finito
Determinístico
 Autômato finito M sobre um alfabeto Σ é uma quíntupla
(Q, Σ, δ, q0, F), onde:
1. Q é o conjunto finito de estados

2. Σ é o alfabeto dos símbolos da linguagem


3. δ : Q x Σ →Q é a função de transição de estados
4. q0 é o estado inicial
5. F é o conjunto de estados finais
 δ é uma função parcial, pois não precisa estar definida
para todos os pares Q x Σ Interesse: há equivalência entre
AF e ER
Definição de Autômato Finito
Determinístico
 A máquina de estados de um autômato finito, também
denominada controle finito, é definida pelo conjunto de
estados Q e pela função de transição δ, que associa pares
ordenados do tipo:
 estado corrente
 entrada corrente
 Com um novo estado a ser assumido pelo autômato
quando da aplicação da transição.
Definição de Autômato Finito
Determinístico
 A função de transição δ pode ser, no caso dos autômatos
finitos determinísticos, uma função total, ou seja, uma
função que é definida para todos os elementos de Q×Σ, ou
ainda uma função parcial.
 Se total, isso implica a especificação de transições com
cada um dos possíveis símbolos de entrada σ ∈ Σ para
cada um dos possíveis estados q ∈ Q do autômato finito.
 Assim, se |Σ| = m e |Q| = n, então o autômato finito
determinístico possuirá, exatamente, m ∗ n transições
distintas.
Definição de Autômato Finito
Determinístico
 As transições de um autômato finito podem ser denotadas
através de expressões do tipo:
 (p,σ) → q, com p,q ∈ Q, σ ∈ Σ.
 Uma alternativa, pode-se explicitar a função δ,
representando uma transição na forma δ(p,σ) = q
Definição de Autômato Finito
Determinístico

 A configuração de um autômato finito é definida pelo seu


estado corrente e pela parte da cadeia de entrada ainda
não analisada (incluindo o símbolo apontado pelo cursor).

 A configuração inicial de um autômato finito é aquela em


que o estado corrente é q0 (estado inicial) e o cursor de
leitura se encontra posicionado sobre o símbolo mais à
esquerda da cadeia de entrada.
Definição de Autômato Finito
Determinístico
 Uma configuração final é aquela em que o cursor aponta
para a posição imediatamente além do último símbolo da
cadeia (indicando com isso já ter ocorrido a leitura do
último símbolo da cadeia de entrada), e o estado corrente
pertence ao conjunto F de estados finais, especificado para
o autômato.
 Note que ambas as condições devem ser simultaneamente
verificadas para permitir a caracterização de uma
configuração como sendo, respectivamente, inicial ou final.
Definição de Autômato Finito
Determinístico
 Quando ocorre o esgotamento da cadeia de entrada, deve-
se analisar o tipo do estado corrente do autômato.
 Estado final: diz-se que o autômato reconheceu, ou
aceitou, a cadeia de entrada.
 Estado não-final: diz-se que a cadeia de entrada foi
rejeitada pelo autômato, logo a cadeia analisada não
pertence à linguagem por ele definida.
Precedência dos operadores

1. Símbolo ( * ) – Fecho recursivo e transitivo (maior)

2. Símbolo ( . ) – Concatenação
3. Símbolo ( ∪ ) – União (menor)
Linguagem reconhecida

 A linguagem L definida por um autômato finito M é o


conjunto de todas as cadeias ( w ) sobre o alfabeto Σ que
levam M da sua configuração inicial para alguma
configuração final através da aplicação sucessiva de
transições definidas pela função δ.
 Denota-se como:

L(M) = {w ∈ Σ∗| (q0,w) ⊢∗ (qF,ε), qF ∈ F}


Exemplo de autômato finito
Determinístico

Tabela de estados
0
Estado Atual  0 1 q0 q1
Estado 0
q0 q1 q2
Inicial
q1 q0 q2 1 1
Estado
Final
q2 q2 q2 q2
0,1
Exercício 1

 Construir a tabela de estados e o AFD que


reconhece a linguagem a*.

Estado Atual  a a
Estado inicial q0 q0
Estado final q0 q0 q0
Exercício 2

 Construir a tabela de estados e o AFD que


reconhece a linguagem aa*.

Estado Atual  a
Estado inicial q0 q1
Estado final q1 q1 a a

qo q1
Exercício 3

 Construir a tabela de estados e o AFD que


reconhece a linguagem (abb*a)*

Estado Atual  a b
Estado
q0 q1 𝜀 a
inicial
q1 𝜀 q2
q2 q0 q2 qo b q1

Estado final q0 q1 𝜀 b
a
q2
Exercício 4

 Construir um AFD que reconheça a palavra-chave web


 O AFN abaixo reconhece a palavra-chave web
Exercício 4 – solução

 Construir um AFD que reconheça a palavra-chave web


 O AFN abaixo reconhece a palavra-chave web

w e b
q0 q1 q2 q3
Exercício 5

Construir a tabela de estados e o AFD que reconheça uma


quantidade ímpares de 1s, tendo como alfabeto {0,1}.

Cadeias reconhecidas:
a. 1
b. 001
c. 010101
d. 10101
e. 010010 Não reconhecida
Exercício 5 – solução

Construir a tabela de estados e o AFD que reconheça uma


quantidade ímpares de 1s, tendo como alfabeto {0,1}.

Cadeias reconhecidas: Estado 0 1


Atual 
a. 1 Estado
q0 q0 q1
inicial
b. 001 Estado
q1 q1 q0
final
c. 010101
0 0
d. 10101
Não
1
e. 010010 reconhecida q0 q1
1
Exercício 6

Construa a função do AFD M que reconheça uma quantidade


impares de 1s, tendo como alfabeto {0,1}.

0 0

1
q0 q1
1
Exercício 6 – solução

Construa a função do AFD M que reconheça uma quantidade


impares de 1s, tendo como alfabeto {0,1}.

M = (Q, ∑, , q0, F)
0 0 Q = {q0, q1 }
∑ = { 0, 1 }
1
q0 = q0
q0 q1 F = { q1 }
1 δ : Q x Σ →Q
(q0,0)=q0, (q0,1)=q1
(q1,0)=q1, (q1,1)=q0
Exercício 7
 Construa um AFD M que reconheça qualquer w que
termine com 10, tendo como ∑ {0,1}.
Exercício 7 – solução
 Construa um AFD M que reconheça qualquer w que
termine com 10, tendo como ∑ {0,1}.
0

1
0 q1 q3
1
q0 0
1 0
0
q2 q5

1 1 0
1

q4
Exercício 8

 Construa um AFD M que reconheça qualquer w com


números pares de zeros (0) e uns (1), tendo como ∑ {0,1}.
Exercício 8 – solução

 Construa um AFD M que reconheça qualquer w com


números pares de zeros (0) e uns (1), tendo como ∑ {0,1}.
1
q0 q1
1
0 0 0 0
1
q2 q3
1
Exercício 9

 Construa um AFD M que reconheça qualquer w que se


tiver (0), deva ser em par de zeros (0), tendo como ∑ {0,1}.
Exercício 9 – solução

 Construa um AFD M que reconheça qualquer w que se


tiver (0), deva ser em par de zeros (0), tendo como ∑ {0,1}.
1

1
q1
q0

0 0
0 0 1

q2 1 q3
Exercício 10

 Construir um AFD M para reconhecer as cadeias formadas


por um número arbitrário de repetições de 1 a 3 a's
seguidos pelo mesmo número de b's.
 Exemplo da L(M) = (ab|aabb|aaabbb)*
Exercício 10 – solução

Vous aimerez peut-être aussi