Você está na página 1de 24

Linguagens Formais

Expresses Regulares Prof. Valdemar Neto

Adaptado do Material do Professor Gustavo Teodoro Laureano

Reviso Aula Passada

Conceitos bsicos

Alfabetos Palavras/Cadeias Linguagens

O que um alfabeto? O que so palavras/cadeias? O que uma linguagem?

Reviso dos Conceitos Bsicos

Alfabeto: definido como um conjunto finito de smbolos.

={0,1} ={a, b, c, ..., z } ={if, then, else, while}

Smbolo: uma entidade abstrata que no precisa ser definida. Eles devem ser ordenveis. Portanto podem ser comparados quanto sua igualdade.

a<b<c<<z 0<1<2<<9

Reviso dos Conceitos Bsicos

Cadeia: uma cadeia sobre um alfabeto qualquer , uma seqncia finita de smbolos desse alfabeto.

Sentenas sobre ={a, b} : a, b, aa, ab, abb, aab, bbb,

Tamanho da Cadeia: a quantidade de smbolos que formam a cadeia.

Se w = abc, |w| = 3

Potncia: dada a cadeia w.

Se w = ab, w 3 = ababab

Concatenao: se w e z so cadeias, a concatenao wz formada pela escrita da primeira cadeia w, seguida da segunda cadeia z, justapostas.

Se w = ab e z = bc, wz = abbc

Reviso dos Conceitos Bsicos

Cadeia vazia: uma cadeia vazia representada por um smbolo nulo, que corresponde uma cadeia especial de comprimento igual a zero.

representa uma cadeia vazia. Se w = , ento |w|= 0.

Fechamento Estrela: ou Fecho Kleene, o conjunto de todas as cadeias de qualquer comprimento sobre um alfabeto.

Dado ={a, b}, * = 0 U 1 U 2 U U n = { , a, b, aa, bb, aab, abb, aabb, bbaa, ... } onde 0 =

Fechamento Positivo: + = * -

Linguagens Formais

O que uma linguagem formal?

um conjunto de palavras sobre um alfabeto . Uma linguagem L um subconjunto de *. L *.

Exemplo:

O conjunto de cadeias ou palavras vlidas para a lngua portuguesa um subconjunto de {a, b, c, d, z}+.

Linguagens Formais

Uma linguagem formal pode ser um conjunto do tipo:

L = { w * | w tem a propriedade P } L = { w * | w sempre termina com a } Se ={a,b}, ento L = {a, aa, aaa, aba, aaaba, bba, ba, bbba, ... } L = { w * | |w| = 2 } Se ={a,b}, ento L = {aa, bb, ab, ba}

Linguagens Formais

Dada uma determinada linguagem:

Qual seria a definio matemtica dessa linguagem? Ela formal? Sobre qual alfabeto ela est definida? Ela finita ou infinita? Como representar essa linguagem?

Representaes das Linguagens

Estudo das formas de representao dessas linguagens. O problema da representao est relacionada com o fato da linguagem ser finita ou infinita.
Linguagem Finita: pode ser enumervel.

Conjunto do nmeros pares maior que 0 e menor que 10. L = {2, 4, 6, 8}

Linguagem Infinita: no pode ser enumervel. Necessita de uma representao finita que a define.

Conjunto dos nmeros inteiros pares L = {2, 4, 6, 8, 10, 12, ...}

Representaes das Linguagens


As representaes so classificadas como: Reconhecedor: um dispositivo formal usado para verificar se uma determinada cadeia pertence ou no uma linguagem.

Exemplo: Expresses Regulares, Autmatos Finitos.

Gerador: um dispositivo formal de gerao onde as sentenas de uma linguagem podem ser sitematicamente geradas.

Exemplo: Gramticas Gerativas

Linguagens Formais Regulares

Linguagens Formais:

So linguagens que podem ser representadas de maneira finita e precisa, atravs de sistemas com sustentao matemtica.

Linguagens Regulares:

Trata-se do conjunto de linguagens formais bastante simples e com propriedades bem definidas. Essas linguagens podem ser definidas pelo que chamamos de Expresses Regulares.

Expresses Regulares
Definio:

Seja um alfabeto . As expresses regulares sobre esse alfabeto denotam conjuntos (Linguagens) como segue:

uma expresso que denota o conjunto vazio. uma expresso que denota o conjunto {} Para cada smbolo do alfabeto , representa uma expresso regular que gera o conjunto {}. Se r e s so expresses regulares que denotam os conjuntos R e S respectivamente

(r ou s) equivale ao conjunto R U S rs r* equivale ao conjunto RS equivale ao conjunto R*

Operaes de Expresses Regulares

Alternncia/Escolha: dada duas expresses regulares M e N, o operador de alternncia | gera uma nova expresso regular M | N. Dessa forma, se uma cadeia est na linguagem M | N, a cadeia pertence linguagem M ou linguagem N.

Obs.: Em algumas bibliografias, o smbolo que denota alternncia/escolha o smbolo de unio (U).

Concatenao: dada duas expresses regulares M e N, o operador de concatenao . gera uma nova expresso regular M.N . Dessa forma, uma string est na linguagem M.N, se a string pertence concatenao de duas strings a e b, desde que a pertena linguagem M, e b pertena linguagem N.

Operaes de Expresses Regulares

Repetio: dada uma expresso regular M,

Fechamento Estrela dado por M*. Uma string est em M* se ela for uma concatenao de zero ou mais strings de M. Fechamento Positivo dado por M+. Uma string est em M+ se ela for uma concatenao de uma ou mais strings de M.

Precedncia de Operadores: Uso de parnteses

Dada a expresso regular: a | b* Como ela deve ser interpretada? (a | b)* ou a | (b)* ?

As repeties possuem precedncia maior. De forma que * recebe precedncia maior que | .

Operaes de Expresses Regulares

Dada a expresso regular: a | b*

Ela deve ser interpretada como: a | (b)*

Dada a expresso regular: a | bc*

Ela deve ser interpretada como: a | (b (c)*)

Dada a expresso regular: ab | c*d

Ela deve ser interpretada como: (ab) | ( (c)* d )

Nomes para Expresses Regulares

Frequentemente, til simplificar a notao com nomes para ERs muito longas.

Ex.: Expresso regular para expressar nmeros com no mnimo um dgito. a) (0 | 1 | 2 | | 9) (0 | 1 | | 9)*

Ou ainda: (0 | 1 | 2 | | 9)+

b) Denotemos dgito como dgito = (0 | 1 | | 9).

Logo: dgito+ expressa a linguagem que queremos.

Intervalos

Outra forma de expressar uma alternncia de caracteres muito grande. Ex.:

Caracteres de a a z: [a-z] Caracteres em caixa alta: [A-Z]

Como construir expresses a partir de especificaes?

Primeira forma: tentar expressar um nmero razovel de cadeias que pertenam linguagem e tentar encontrar o padro. (Documente isso na sua avaliao escrita e exerccios!!) Ex.: Cadeias que contm no mximo um b sobre o alfabeto ={a, b,c} Algumas cadeias que pertencem linguagem:

a, aa, ac, aac, abc, aaabc, c, b. (Dficil? Separe por comprimento da cadeia): Comprimento 0: Comprimento 1: a, b, c Comprimento 2: aa, ab, ba, ac, ca, cc, bc, cb. Comprimento 3: aaa, aab,

O que se pode pensar : se tem no mximo 1 b, ento pode no ter bs. Logo, sua expresso deveria contemplar casos em que h b e casos em que no h. Logo:

r1= (a | c)* | (a|c)*b(a|c)* => r1= (a|c)*( | b(a|c)*) => r1= (a|c)*( | b)(a|c)*

Exemplos

Considere o alfabeto ={a, b, c} a = {a} a* = {, a, aa, aaa, } ab* = {a, ab, abb, abbb, ...} (a | c)* = {, a, c, aa, ac, aac, cc, ccca, aaccc, }

Exemplos

Conjunto de todas as cadeias sobre o alfabeto ={a, b, c} que contenha somente um b.

( a | c ) * b ( a | c)* = {b, abc, abac, abaca, baaac, aaccbac, }

Conjunto de todas as cadeias que possuem no mximo um b.

( a | c ) * | ( a | c ) * b ( a | c )* (a|c)*(b|)(a|c)*

OBS: A mesma linguagem pode ser representada por muitas expresses regulares diferentes.

Exemplos

Conjunto de todas as cadeias sobre o alfabeto ={a, b}

( a | b )* ( a* b* )* ( a* b* )+ Por qu?

Conjunto de todas as cadeias sobre o alfabeto ={a, b, c}

( a | b | c )*

Exemplos

Conjunto de todas as cadeias constitudas da concatenao de pares de a's e b's.

( aa | bb )*

aa(b)*c | aaac | ( a|c )* representa a linguagem que a unio de 3 outras linguagens:

Todas as cadeias comeando com a duplo seguido por qualquer quantidade de b's seguido por c. A linguagem cadeia aaac. Todas as cadeias constitudas de a's e c's.

Exemplos

Conjunto de todas as cadeias constitudas da concatenao de pares de a's e b's. (do slide anterior)

( aabb)*

(aa | bb)* deveria ser entendida como o conjunto de todas as cadeias constitudas de um nmero arbitrrio de pares de a's e b's.

Exerccios

Você também pode gostar