Você está na página 1de 48

Linguagens Formais e Autmatos 02/2015

LFA Aula 02

Linguagens regulares -
introduo

28/09/2015 Celso Olivete Jnior

olivete@fct.unesp.br

1
Linguagens Formais e Autmatos 02/2015

Na aula passada...

Viso geral
Linguagens regulares
expresses regulares

autmatos finitos

gramticas regulares

Celso Olivete Jnior 2


Linguagens Formais e Autmatos 02/2015

Classificao das Linguagens segundo Hierarquia de


Chomsky e seus reconhecedores

Mquina de Turing

Mquina de Turing com fita


limitada

Autmato pilha
Gramticas livre de contexto

Menor Autmatos finitos


Expresses regulares
complexidade
Gramticas regulares
Maior
complexidade Celso Olivete Jnior 3
Linguagens Formais e Autmatos 02/2015

Na aula de hoje...

Linguagens regulares: Expresses regulares

Referncia bibliogrfica
HOPCROFT, J. E.; ULLMAN, J. D.; MOTWANI,
R. Introduo Teoria de Autmatos, Linguagens e
Computao. Editora Campus, 2002 Captulos 1 e 3

Celso Olivete Jnior 4


Linguagens Formais e Autmatos 02/2015

Roteiro

Definies prvias: alfabeto, strings e


linguagem

Expresses regulares

Celso Olivete Jnior 5


Linguagens Formais e Autmatos 02/2015

Roteiro

Definies prvias
prvias:: alfabeto, strings e
linguagem

Expresses regulares

Celso Olivete Jnior 6


Linguagens Formais e Autmatos 02/2015

Definies prvias
Alfabeto ou Vocabulrio: Conjunto finito no vazio de smbolos.
Smbolo um elemento qualquer de um alfabeto. Representado por
Ex: = {a,b} alfabeto formado pelas letras a e b
= {0,1,2,3,4,5,6,7,8,9} alfabeto formado pelos dgitos de 0 a 9

Cadeia, String ou Palavra: Concatenao finita de smbolos de um


alfabeto. Define-se como cadeia vazia ou nula uma cadeia que no
contm nenhum smbolo.
Ex: aab string sobre o alfabeto = {a,b}
123094 string sobre o alfabeto = {0,1,2...,9}
ou representam uma cadeia vazia

Celso Olivete Jnior 7


Linguagens Formais e Autmatos 02/2015

Definies prvias
Comprimento de uma string: Nmero de smbolos de uma cadeia.
Ex: = |aab| = 3
= |123094|=6
= ||=0

Concatenao de string: Define-se a concatenao z de uma


cadeia x com uma cadeia y, como sendo a concatenao dos
smbolos de ambas as cadeias, formando a cadeia xy. |z| = |x| +
|y|
Ex: x = abaa; y = ba z = abaaba
x = ba; y= z = ba
Celso Olivete Jnior 8
Linguagens Formais e Autmatos 02/2015
Definies prvias
Produto de alfabetos: o produto cartesiano de alfabetos.
Ex: V1 = {a,b} V2 = {1, 2, 3} V1.V2 = V1xV2 =
{a1, a2, a3, b1, b2, b3}
Observe que V1.V2 V2.V1

Exponenciao de alfabetos: So todas as cadeias de


comprimento n sobre V (Vn). V0={}, V1=V, Vn=Vn-1.V
Ex: V = {0, 1}
V3 = V2.V = (V.V).V = {00, 01, 10, 11}.{0, 1} = {000, 001, 010, 011, 100,
101, 110, 111}

Celso Olivete Jnior 9


Linguagens Formais e Autmatos 02/2015

Definies prvias
Fechamento (Clausura) de um Alfabeto: Seja A um
alfabeto, ento o fechamento de A definido como
A* = A0 A1 A2 ... An ...

Portanto A* = conjunto das cadeias de qualquer


comprimento sobre o alfabeto a (inclusive nenhum).
Ex: A = {1}
A* = {, 1, 11, 111, ...}
Fechamento Positivo de A: A+ = A* - {}
Celso Olivete Jnior 10
Linguagens Formais e Autmatos 02/2015

Definies prvias
Prefixo de uma palavra qualquer sequncia
inicial de smbolos de uma palavra
Sufixo qualquer sequncia final de smbolos
de uma palavra
Relativamente palavra abcb, tem-se que:
, a, ab, abc, abcb so os prefixos
, b, cb, bcb, abcb so os respectivos sufixos
Celso Olivete Jnior 11
Linguagens Formais e Autmatos 02/2015

Definies prvias

Subpalavra de uma palavra qualquer


sequncia de smbolos contgua da palavra

Qualquer prefixo ou sufixo de uma palavra


uma subpalavra

Celso Olivete Jnior 12


Linguagens Formais e Autmatos 02/2015

Definies prvias: relembrando...

Linguagem formal: uma coleo de cadeias


de smbolos, de comprimento finito. Estas
cadeias so denominadas sentenas da
linguagem, e so formadas pela justaposio
de elementos individuais, os smbolos ou
tomos da linguagem.

Celso Olivete Jnior 13


Linguagens Formais e Autmatos 02/2015

Linguagem formal
Ex: {ab, bc}
linguagem formada pelas cadeias ab ou bc)
{abn,anb; n>=0}
linguagem formada por todas as cadeias
que comeam com "a" seguido de um nmero
qualquer de "b"'s ou comeam com um nmero
qualquer de "a"'s seguidos de um "b", por
exemplo ab, abb, aab, aaab, ...)
Celso Olivete Jnior 14
Linguagens Formais e Autmatos 02/2015

Problemas
Na teoria de LFA, um problema a questo
de decidir se determinado string um
elemento de uma linguagem
Se um alfabeto e L uma linguagem
sobre , ento o problema :
dado um string w em *, definir se w est ou
no em L.
Celso Olivete Jnior 15
Linguagens Formais e Autmatos 02/2015

Problemas dado um string w em *,


definir se w est ou no
Exemplo: em L.

Linguagem L: consiste em um nmero


igual de 0s e 1s
string w = 01110 w no elemento de L

string w = 0110 w elemento de L

Celso Olivete Jnior 16


Linguagens Formais e Autmatos 02/2015

Formas de definir uma linguagem


1. Por meio da descrio do conjunto finito
ou infinito de cadeias (Formalismo
Descritivo)
Ex: Linguagem dos nmeros pares;
L={ 0n 1n | n >=1}
2. por meio de uma Gramtica/Expresso
Regular que a gere (Formalismo Gerativo)
Celso Olivete Jnior 17
Linguagens Formais e Autmatos 02/2015

Formas de definir uma linguagem

1. Por meio da descrio do conjunto finito ou


infinito de cadeias (Formalismo Descritivo)

Ex: Linguagem com quantidade par de


elementos;

L={ 0n 1n | n >=1}

2. por meio de uma Gramtica/Expresso


Regular que a gere (Formalismo Gerativo)
Celso Olivete Jnior 18
Linguagens Formais e Autmatos 02/2015

Definindo uma linguagem


definida usando um formador de conjuntos ou
Formalismo Descritivo:
{ w | algo sobre w }
Essa expresso lida como o conjunto de palavras w
tais que (seja o que for dito sobre w direita da barra
vertical). Exemplos:
{w | w consiste em um nmero igual de 0s e 1s}
{w | w um nmero inteiro binrio primo}
{w | w um programa em C sintaticamente correto}
Celso Olivete Jnior 19
Linguagens Formais e Autmatos 02/2015

Definindo uma linguagem


Tambm comum substituir w por alguma expresso com
parmetros e descrever os strings na linguagem
declarando condies sobre os parmetros. Exemplo:
{0n1n | n 1}.
o conjunto de 0 elevado a n 1 elevado a n tal que n maior
ou igual a 1;
essa linguagem consiste nos strings {01, 0011, 000111, ...}.

Celso Olivete Jnior 20


Linguagens Formais e Autmatos 02/2015

Definindo uma linguagem: outro exemplo


{0i1j | 0 i j}.

Essa linguagem consiste em strings com


alguns 0s (possivelmente nenhum) seguidos
por um nmero igual ou superior de 1s.

Celso Olivete Jnior 21


Linguagens Formais e Autmatos 02/2015

Formas de definir uma linguagem


1. Por meio da descrio do conjunto finito
ou infinito de cadeias (Formalismo
Descritivo)
Ex: Linguagem dos nmeros pares;
L={ 0n 1n | n >=1}
2. por meio de uma Gramtica/Expresso
Regular que a gere (Formalismo Gerativo)
Celso Olivete Jnior 22
Linguagens Formais e Autmatos 02/2015

Roteiro

Definies prvias: alfabeto, strings e


linguagem

Expresses regulares e linguagens

Celso Olivete Jnior 23


Linguagens Formais e Autmatos 02/2015

Expresses regulares
uma das formas de definir uma linguagem regular

podem ser consideradas uma linguagem de


programao
aplicao de pesquisas em textos

descrever componentes de software

esto relacionadas com as gramticas regulares


(definio/gerao de sentenas) e com os
autmatos finitos (aceitao de sentenas).
Celso Olivete Jnior 24
Linguagens Formais e Autmatos 02/2015

Expresses regulares

servem como uma linguagem de entrada


para muitos sistemas de processamento de
strings. Exemplos:

Celso Olivete Jnior 25


Linguagens Formais e Autmatos 02/2015

Expresses regulares
comando de pesquisa grep do unix
O comando grep vai procurar um arquivo,
texto ou qualquer outra entrada e retornar
quaisquer linhas que contenham a string
especificada. Digamos que voc precisa procurar
dentro de um arquivo de log por todos os erros
que tenham a ver com o mysql.
grep mysql arquivo-de-log.log
Celso Olivete Jnior 26
Linguagens Formais e Autmatos 02/2015

Expresses regulares

como parte de um componente do


compilador
especificar:
forma de um identificador

[a-z|A-Z|_][a-z|A-Z|_|0-9]*

de um nmero inteiro com ou sem sinal

...

Celso Olivete Jnior 27


Linguagens Formais e Autmatos 02/2015

Os operadores de expresses regulares (ERs)


Como j foi dito, as ERs denotam linguagens
regulares. Exemplo:

01* + 10*: linguagem (L) que consiste em todas as


strings que comeam com um 0 seguido por qualquer
quantidade de nmero 1 (inclusive nenhum) OU
comeam com um 1 seguido por qualquer quantidade
de 0
Celso Olivete Jnior 28
Linguagens Formais e Autmatos 02/2015

Os operadores de expresses regulares

Os tipos de operadores sobre as ERs so:


Unio

Concatenao

Fechamento

Celso Olivete Jnior 29


Linguagens Formais e Autmatos 02/2015

Os operadores de expresses regulares

Operador unio
Denotado por +, ou |

L + M (Linguagem L unio com a Linguagem M).


Corresponde a:
Conjunto de strings que esto em L ou M, ou em
AMBAS.
Exemplo: L={001, 10, 111} e M={, 001}.
}.
L + M = {, 001, 10, 111}
Celso Olivete Jnior 30
Linguagens Formais e Autmatos 02/2015

Os operadores de expresses regulares


Operador concatenao
Denotado por . (ponto) ou sem nenhum
operador
L.M ou LM (Linguagem L concatenada com
Linguagem M). Corresponde a:
Conjunto de strings que podem ser formados
tomando-se qualquer string em L e concatenando-se
com qualquer string em M .
Celso Olivete Jnior 31
Linguagens Formais e Autmatos 02/2015

Os operadores de expresses regulares

Operador concatenao
Conjunto de strings que podem ser formados
tomando-se qualquer string em L e
concatenando-se com qualquer string em M .
Exemplo: L={001, 10, 111} e M={, 001}.
LM = {001, 10, 111, 001001, 10001, 111001}.

Os 3 primeiros smbolos de LM o resultado da concatenao de cada

sequncia de L com .
Celso Olivete Jnior 32
Linguagens Formais e Autmatos 02/2015

Os operadores de expresses regulares


Operador fechamento (ou estrela, ou
fechamento de Kleene)
Denotado por * (asterisco)
L* (Fechamento sobre a Linguagem L).
Corresponde a:
Conjunto de todos strings que podem ser formados
tomando-se qualquer nmero de strings de L
(inclusive nenhum), possivelmente com repeties.
Celso Olivete Jnior 33
Linguagens Formais e Autmatos 02/2015

Os operadores de expresses regulares

Operador fechamento (ou estrela, ou


fechamento de Kleene)

Exemplo: L={0,11}

L* = {011, 11110, ... }


Observe que L infinito

Celso Olivete Jnior 34


Linguagens Formais e Autmatos 02/2015

Construindo expresses regulares


necessrio algum mtodo para agrupar os
operadores com seus operandos, tais como
parnteses.

Por exemplo, a lgebra aritmtica comea com


constantes como inteiros e nmeros reais, alm de
variveis, e elabora expresses mais complexas com
operadores aritmticos como + e *

Celso Olivete Jnior 35


Linguagens Formais e Autmatos 02/2015

Construindo expresses regulares


A lgebra de ERs segue esse padro usa constantes e
variveis que denotam linguagens e operadores para as 3
operaes (+ unio, . concatenao e * fechamento)

A base para esta definio consiste em:


1. as constantes e (vazio) so ERs, denotando as
linguagens L() = {} e L() = {}
2. se a qualquer smbolo, ento a uma ER, denotando a
linguagem L(a) = {a}
3. L (letra maiscula e itlico) representa qualquer linguagem
Celso Olivete Jnior 36
Linguagens Formais e Autmatos 02/2015

Construindo expresses regulares


1. Se E e F so ERs, ento E + F uma ER denotando a
unio de L(E) e L(F)

L(E+F) = L(E) + L(F)

2. Se E e F so ERs, ento EF uma ER denotando a


concatenao de L(E) e L(F)

L(EF) = L(E)L(F)

Celso Olivete Jnior 37


Linguagens Formais e Autmatos 02/2015

Construindo expresses regulares

3. Se E uma ER, ento E* uma ER


denotando o fechamento de L(E)

L(E*) = (L(E))*
4. Se E uma ER, ento (E) uma ER
denotando a mesma linguagem que E

L((E)) = L(E)
Celso Olivete Jnior 38
Linguagens Formais e Autmatos 02/2015

Exemplos de expresses regulares


Exemplos
ER formada por 01 ER = 01

ER para strings que so ER = (01)*


formadas por zero ou mais diferente de 01*
ocorrncias de 01

ER formada por 0s e 1s (01)* + (10)* + 0(10)* + 1(01)*


alternados resultando, por exemplo, na sequncia
010101 + 101010+01010+10101

Obs: cuidado com o uso dos parnteses!!

Celso Olivete Jnior 39


Linguagens Formais e Autmatos 02/2015

Exemplos de expresses regulares

Exemplos
ER para strings que so ER = 01*
formadas por zero seguido por
qualquer ocorrncia de 1
(inclusive nenhuma)
ER formada por todas as ER = (a+b)*aa(a+b)*
palavras sobre (a,b) contendo
aa como subpalavra

Celso Olivete Jnior 40


Linguagens Formais e Autmatos 02/2015

Expresses regulares: precedncia de


operadores essencial na omisso de
parnteses

Ordem de precedncia em ERs


1 O operador fechamento (*) o de precedncia mais alta

2 Em seguida, o operador de concatenao (.)


3 Por ltimo, todas as operaes de unio (+)

Celso Olivete Jnior 41


Linguagens Formais e Autmatos 02/2015
Expresses regulares: precedncia de operadores
Exemplo: ER = 01* + 1
agrupada como (0 (1*)) + 1.

Agrupando...
1 O operador fechamento realizado primeiro

2 Em seguida, o operador de concatenao 0 e (1*)


0(1*)
3 Por ltimo, o operador de unio (+)

Linguagem gerada todos os strings formados por 0 seguido


por qualquer nmero de 1s (inclusive nenhum) OU 1

L = {1, 0, 01, 011,...}

Celso Olivete Jnior 42


Linguagens Formais e Autmatos 02/2015

Expresses regulares: exemplo de aplicao


como componente lxico
Identificadores da linguagem Pascal que so compostos por letras
(a.-zA-Z) ou underline(_) seguido por qualquer combinao de letras,
underline ou dgitos (0...9)

Supondo que:
letras so representadas por L
underline por _
e os dgitos por D

ER = L|_ (L|_|D)*

Celso Olivete Jnior 43


Linguagens Formais e Autmatos 02/2015

REGEXP simulador de expresses regulares


http://tools.lymas.com.br/regexp_br.php#

Consideraes

ER deve ser escrita


iniciando com ^
ER deve ser finalizada
com $

Manual
http://www.gnu.org/s/libtool/manual/emacs/Regexps.html

Celso Olivete Jnior 44


Linguagens Formais e Autmatos 02/2015

REGEXP simulador de expresses regulares


ER=(a+b)*c
deve ser escrita da seguinte forma
^[a+b]*c$

Celso Olivete Jnior 45


Linguagens Formais e Autmatos 02/2015

REGEXP simulador de expresses regulares


ER que reconhece identificadores de uma
linguagem de programao deve ser escrita
da seguinte forma
^[a-z_][0-9a-z_]*$

Celso Olivete Jnior 46


Linguagens Formais e Autmatos 02/2015

Exerccios
1. Descreva as linguagens denotadas pelas ERs abaixo sobre o alfabeto
= {0,1}.
a- 0 + 10*
b- (0 + 1)0*
c- (0011)*
d- (0 + 1)* 1(0 + 1)*
e- 0*11*0
f- 0(0 + 1)*0
g- ( + 0) ( + 1)
h- (000* + 1)*
i- ( 0* + 0*11 (1 + 00*11)*) ( + 00* )
Celso Olivete Jnior 47
Linguagens Formais e Autmatos 02/2015
Exerccios
2. Sobre o ={a,b}, defina expresses regulares que representam as linguagens
cujas sentenas esto descritas a seguir:
Possuem comprimento maior ou igual a 3;
Possuem comprimento menor ou igual a 3;
Possuem comprimento diferente de 3;
Possuem comprimento par;
Possuem comprimento mpar;
Possuem comprimento mltiplo de 4.

3. Fazer o conjunto de exerccios da seo 3.1 do livro do HOPCROFT, pginas


96 e 97.
4. Ler a descrio do Projeto que est no site, definir a dupla e comear a
implementao.
Obs: as resolues dos exerccios 1, 2 e 3 devero ser entregues at o dia
01/12.

Celso Olivete Jnior 48