You are on page 1of 23

- Unidade 1 -

Linguagens Formais e Autmatos


UNIFAS Feira de Santana Curso de Sistemas de Informao Linguagens Formais e Autmatos Prof. Otaclio Jos Pereira

Objetivos

Ao final da unidade, espera-se que o aluno esteja apto a


Compreender alguns conceitos que fundamentam o assunto de Linguagens de Programao Entender os mecanismos que descrevem e permitem reconhecer estruturas vlidas em linguagens, tais como, autmatos finitos

Roteiro
Contexto Conceitos
Alfabeto Palavra Conjunto de todas as palavras e Linguagens Gramtica

Autmatos Finitos Expresses Regulares

Contexto
Retomando a aula passada de planejamento da disciplina
Objetivos
Construir um compilador para uma linguagem Compreender o processo de compilao de uma linguagem para melhorar a desenvoltura perante ambientes e linguagens

Alguns tpicos importantes


Compreenso de linguagens e compiladores em geral Anlise Lxica Anlise Sinttica Anlise Semntica Gerao de Cdigo e Manipulao de erros

Nosso foco agora


Tratar de assuntos que so suporte a compreenso geral de linguagens e para a anlise lxica.

Linguagem
Uma definio geral, baseada no dicionrio Aurlio, fala o seguinte sobre linguagem
Uma linguagem o uso da palavra articulada ou escrita como meio de expresso e comunicao entre pessoas

Raciocnio de partida
Para uma linguagem de programao (no to aberta como uma comunicao entre pessoas) ser empregado um formalismo que permite uma melhor fundamentao para o tema

Alfabeto
Alfabeto
um conjunto finito de smbolos
Exemplo
Consunto A = { a, b, c } As letras, dgitos, caracteres especiais e espao em branco, todos estes smbolos usados no Pascal

Perceba que o conjunto deve ser finito. O conjunto dos nmeros naturais por exemplo no poderia ser considerado um alfabeto O alfabeto costuma ser representado por

Palavra
Tambm tratada como cadeia de caracteres ou sentena

Uma palavra, cadeia de caracteres ou sentena, definida sobre um alfabeto, um conjunto de smbolos justapostos
Exemplo
Para o alfabeto : { a, b} , abab uma palavra...

Palavra
Prefixo, sufixo e subpalavra
Qualquer sequencia contgua, no incio, no fim ou em qualquer parte da palavra, respectivamente

Palavras em linguagens de programao


Considerando uma linguagem de programao, todos os programas que podem ser gerados na linguagem, podem ser considerados palavras, isto , um conjunto de smbolos justapostos.

Conjunto de todas as palavras


Dado um alfabeto , o conjunto de todas as palavras que pode ser definidas a partir do alfabeto e simbolizado por *

O smbolo siginifica palavra vazia, isto , sem nenhum caractere.


O conjunto de todas as palavras oferece um nmero grande (e talvez sem sentido) de todas as palavras que podem ser expressas usando-se o alfabeto em questo. Definies sobre linguagem formal e gramtica so necessrias

Linguagem Formal
Uma linguagem formal L um subconjunto de palavras sobre o alfabeto .
L est contido em * Exemplo
O conjunto dos palndromos (palavras que so as mesmas se lidas normalmente ou de traz para frente) definida sobre = { a, b} uma linguagem L = { , a , b, aa, bb, aba, bab, ... }

Gramtica
Conforme comentamos em raciocnio anterior, o conjunto de todas as palavras torna o leque de possibilidades muito amplo e talvez sem sentido. Isso no muito adequado. Para definir de forma finita linguagens infinitas usa-se um formalismo que a gramtica. Gramtica
Conjunto de regras que quando aplicadas gera palavras vlidas ou permite reconhecer palavras vlidas

Definio de Gramtica
Uma gramtica pode ser definida pela tupla
(V, T, P, S)

Onde
V : Conjunto finito de smbolos T : conjunto finito de smbolos terminais P : (V U T ) -> (V U T)
Conjunto de relaes de smbolos para smbolos, que permite substituir um smbolo por outro

S : elemento distinguido de V que o elemento inicial para o processo de derivao

Definio de Gramtica
Exemplo:
Uma gramtica para definir os nmeros naturais

V = { N,D } T = { 0,1,2,3, ..., 9 } P = { N -> D; N -> DN ; D -> 0 | 1 | ... | 9 } S=N Lendo informalmente,
Base: Todo dgito nmero natural Recurso: Se N natural, a concatenao de dgito e natural tambm Natural

Definio de Gramtica
Derivao
possvel reconhecer o nmero 243 como um nmero natural com base na gramtica definida. Smbolo de partida ( N ) Relao usada
N DN 2N 2DN 24N 24D 243 N -> DN D -> 2 N -> DN D -> 4 N -> D D -> 3

Com a sequencia de derivao com relaes expressas na gramtica, conseguiu-se encontrar o nmero 243

Necessidade de Reconhecer Estruturas


Com o exemplo usado de uma gramtica, percebeu-se que um ponto chave no processo de compilao
Vimos um exemplo pelo uso de uma gramtica

Neste contexto, outros mecanismos so


Autmatos Finitos
Expresses regulares

Autmatos
Um formalismo que permite expressar linguagens ou suas partes
No caso de autmatos, considerado um formalismo operacional, dado os conceitos de mquina e outros elementos que explicam este mecanismo

Um autmato finito um sistemas de estados finitos


Exemplo de sistema de estados finitos
Elevador Estados de tela de sistema (Inser. , Alterao, Cons. e Excl.) Forte relao com Diagrama de Estados da UML

Autmatos
Autmatos
um Sistema de Estados Finitos

Representa um modelo computacional do tipo sequencial muito comum em diversos estudos de computao, no nosso caso aplicado a linguagens e compiladores
Considerado um formalismo operacional reconhecedor

Autmatos
Como um formalismo operacional reconhecedor, um autmato pode ser visto como uma mquina constituda de 3 partes
a) Fita : dispositivo com a informao a processar b) Unidade de Controle, que trata
Estado corrente da mquina Leitor/Cabeote Movimenta-se para a direita

c) Programa: que promove as transies de estados.


Com base no estado corrente e smbolo lido, deriva o prximo smbolo Est implementada na unidade de controle

Autmatos
A definio de um autmato finito segue o seguinte formalismo

M = ( , Q, , q0, F ) onde:
Q q0 F : Alfabeto : Conjunto de estados : Programa, que trata as transies : Estado inicial : Estados finais

Autmatos
Exemplo Imagine um autmato para reconhecer palavras que possuam as subpalavras aa e bb
M = ( , Q, , q0, F ) M=( { a, b} , { q0, q1, q2, qf } , 1, q0, { qf } )
1 q0 q1 q2 qf a q1 qf q1 qf b q2 q2 qf qf

Expresses Regulares
um formalismo denatocional para descrever uma linguagem regular
Operaes bsicas:
Unio Concatenao Concatenao de mesmo smbolo ( r + s) rs r*

Exemplos
aa ba* (a + b)* (a + b)*aa(a + b)* a*ba*ba* (a + b)*(aa + bb) Somente a palavra aa Palavras iniciadas com b e seguidas de a Qualquer palavra com a ou b Palavras que tenham uma subpalavra aa Palavras que tenham dois bs Palavras que terminam com aa ou bb

Exerccios

Vide lista de exerccios

Reviso
Tpicos abordados
Definies iniciais de linguagem Alfabeto Palavra Conjunto de Todas as Palavras Linguagem formal Gramtica Autmatos Finitos Expresses Regulares

You might also like