160 likes | 235 Views
I - Noções dum compilador. DEI. Linguagens formais Autómatos finitos Expressões regulares Bibliografia aconselhada: Apontamentos. Jorge Morais. LFA 1999/2000 - 1. Monóide. DEI. Grupóide: Par (A, . ), onde A é um conjunto, e . Representa uma operação binária em A. Semigrupo:
E N D
I - Noções dum compilador DEI • Linguagens formais • Autómatos finitos • Expressões regulares • Bibliografia aconselhada: • Apontamentos Jorge Morais LFA 1999/2000 - 1
Monóide DEI • Grupóide: • Par (A, . ), onde A é um conjunto, e . Representa uma operação binária em A. • Semigrupo: • Grupóide em que . é associativa, isto é,a (b c) = (a b) c • Monóide: • Semigrupo com elemento neutro e:aA : a e = e a = a Jorge Morais LFA 1999/2000 - 2
Palavras DEI • Alfabeto: • conjunto finito • Palavra (sequência finita de elementos de ) • é a palavra vazia • a1 a2 ... an (ai ) representa uma palavra não vazia • Convenção: an = a a ... a (n vezes, n>0); a0 = Jorge Morais LFA 1999/2000 - 3
Palavras (cont.) DEI • Comprimento duma palavra • |a1 a2 ... an| = n • || = 0 • Conteúdo duma palavra: • cont(a1 a2 ... an) = {a1, a2, ..., an} • cont() = Jorge Morais LFA 1999/2000 - 4
Monóide livre DEI • * - Monóide livre em • * (conjunto das palavras em ) • Concatenação (operação binária associativa) • (a1 a2 ... an)(an+1 an+2 ... an+k)=a1 a2...an an+1 an+2...an+k • (elemento neutro) • (a1 a2 ... an) = (a1 a2 ... an) = a1 a2 ... an • + = * \{} - Semigrupo livre em Jorge Morais LFA 1999/2000 - 5
Prefixo, sufixo, factor DEI • Sejam u, v * • u é prefixo de v v = uw w * • u é sufixo de v v = wu w * • u é factor de v v = wuz w,z * Jorge Morais LFA 1999/2000 - 6
Autómato finito DEI • Um autómato é um vector (S, , i, F, ): • S - conjunto finito de estados • - alfabeto • i S - estado inicial • F S - conjunto de estados finais • : S x S (função parcial) - conjunto de transições Jorge Morais LFA 1999/2000 - 7
Representação gráfica DEI Jorge Morais LFA 1999/2000 - 8
Tipos de autómatos DEI • Seja A=(S, , i, F, ) um autómato finito. • A diz-se autómato finito determinístico se, perante um símbolo x de , puder transitar, no máximo, para um único estado, isto é: • ( (s, x, s’) (s, x, s’’) ) s’ = s’’ • Caso contrário, A diz-se não determinístico • A diz-se autómato finito se é possível transitar de estado sem usar nenhum símbolo de , isto é: • S x ({}) x S Jorge Morais LFA 1999/2000 - 9
Caminho e rótulo DEI • Seja A=(S, , i, F, ) um autómato finito. • Um caminho não trivial é uma sequência (s0, a1, s1), (s1, a2, s2), ..., (sn-1, an, sn) onde (si-1, ai, si) • Um caminho trivial é uma tripla da forma (s, , s), com s S • O rótulo do caminho é a1 a2 ... an Jorge Morais LFA 1999/2000 - 10
Linguagem reconhecida DEI • Seja A=(S, , i, F, ) um autómato finito. • Um caminho diz-se bem sucedido se começa num estado inicial e termina num estado final • Linguagem reconhecida por A: • L(A) = {u * : u é o rótulo de um caminho bem sucedido em A} Jorge Morais LFA 1999/2000 - 11
Exemplo de autómato DEI • A=(S, , i, F, ) • = {0, 1} • S = {i,f} • F={f} • = {(i,0,i), (i,1,i), (i,0,f)} • Este autómato finito (não determinístico) reconhece todas as sequências terminadas em 0 (números binários pares) Jorge Morais LFA 1999/2000 - 12
Exemplo de autómato (cont.) DEI • A=(S, , i, F, ) • = {0, 1} • S = {i,f} • F={f} • = {(i,0,f), (i,1,i), (f,0,f), (f,1,i)} • Este autómato finito também reconhece todas as sequências terminadas em 0, mas é determinístico Jorge Morais LFA 1999/2000 - 13
Expressões regulares DEI • Uma expressão regular E representa um subconjunto de * que designamos por c(E) • Sendo L * uma linguagem. As seguintes condições são equivalentes: • L é reconhecida por um autómato finito • L é reconhecida por um autómato finito determinístico • L é reconhecida por um autómato finito • L é reconhecida por uma expressão regular Jorge Morais LFA 1999/2000 - 14
Expressões regulares (cont.) DEI • Uma expressão regular tem uma das seguintes formas: • c() = • c() = {} • a c(a) = {a} • Sendo E1 e E2 expressões regulares: • E1 + E2 c(E1 + E2) = c(E1) c(E2) • E1 E2 c(E1 E2) = c(E1) c(E2) • E1* c(E1*) = {a1 a2 ... an : n 0, a1, a2, ..., an E1} Jorge Morais LFA 1999/2000 - 15
Exemplo de expressões regulares DEI • Considerando = {0, 1} • (0 + 1)* 0 - sequências terminadas em 0 • 0* (100*)* (1 + ) - sequências em que não aparecem 1’s consecutivos • (0 + 1)* 101 (0 + 1)* - sequência que contem o factor 101 • 10 (0 + 1)* - sequência com prefixo 10 Jorge Morais LFA 1999/2000 - 16