II Anlise lxica Converso de expresses regulares em

  • Slides: 22
Download presentation
II – Análise léxica • Conversão de expressões regulares em autómatos finitos determinísticos mínimos

II – Análise léxica • Conversão de expressões regulares em autómatos finitos determinísticos mínimos • Bibliografia aconselhada: – Aho, Sethi e Ullman – secções 3. 6, 3. 7 e 3. 9 – Crespo – subsecções 3. 1. 2, 3. 1. 3 e 3. 1. 4 – Appel – secção 2. 4 Jorge Morais LFA 1999/2000 -

Expressão regular autómato finito determinístico mínimo • Conversão expressão regular autómato finito (Construção de

Expressão regular autómato finito determinístico mínimo • Conversão expressão regular autómato finito (Construção de Thompson) • Conversão autómato finito determinístico (construção de subconjuntos) • Conversão autómato finito determinístico com estados supérfluos autómato finito determinístico mínimo Jorge Morais LFA 1999/2000 -

ER AF : Jorge Morais LFA 1999/2000 -

ER AF : Jorge Morais LFA 1999/2000 -

ER AF : a Jorge Morais LFA 1999/2000 -

ER AF : a Jorge Morais LFA 1999/2000 -

ER AF : E 1 + E 2 Jorge Morais LFA 1999/2000 -

ER AF : E 1 + E 2 Jorge Morais LFA 1999/2000 -

ER AF : E 1 E 2 Jorge Morais LFA 1999/2000 -

ER AF : E 1 E 2 Jorge Morais LFA 1999/2000 -

ER AF : Jorge Morais * E 1 LFA 1999/2000 -

ER AF : Jorge Morais * E 1 LFA 1999/2000 -

Propriedades do autómato final • O autómato criado tem no máximo duas vezes o

Propriedades do autómato final • O autómato criado tem no máximo duas vezes o número de símbolos da expressão regular • Existem um estado inicial e um final sem transições • Para cada estado, ou existe uma transição com um símbolo de ou existem duas transições com Jorge Morais LFA 1999/2000 -

Exemplo: Jorge Morais * (0+1) (1+000) LFA 1999/2000 -

Exemplo: Jorge Morais * (0+1) (1+000) LFA 1999/2000 -

AF AFD • fecho- (s): conjunto de estados alcançáveis a partir do estado s

AF AFD • fecho- (s): conjunto de estados alcançáveis a partir do estado s com transições de • fecho- (T): conjunto de estados alcançáveis a partir de estados s T com transições de • mover(T, a): conjunto de estado para os quais existe uma transição a partir de estados s T com o símbolo a Jorge Morais LFA 1999/2000 -

Construção de subconjuntos • fecho- (i) é o primeiro estado não marcado • enquanto

Construção de subconjuntos • fecho- (i) é o primeiro estado não marcado • enquanto houver estados T não marcados – marcar T – para cada símbolo a • U = fecho- (mover(T, a)) • se U não pertence ao conjunto de estados – inserir U não marcado • adicionar transição (T, a, U) Jorge Morais LFA 1999/2000 -

Exemplo: * (0+1) (1+000) • fecho- (0) = {0, 1, 2, 4, 7, 8,

Exemplo: * (0+1) (1+000) • fecho- (0) = {0, 1, 2, 4, 7, 8, 10} = A • fecho- (mover(A, 0)) = fecho- ({3, 11}) = {1, 2, 3, 4, 6, 7, 8, 10, 11} • fecho- (mover(A, 1)) = fecho- ({5, 9}) = {1, 2, 4, 5, 6, 7, 8, 9, 10, 14} = C • fecho- (mover(B, 0)) = fecho- ({3, 11, 12}) = {1, 2, 3, 4, 6, 7, 8, 10, 11, 12} = D • fecho- (mover(B, 1)) = fecho- ({5, 9}) = C Jorge Morais LFA 1999/2000 -

Exemplo (cont. ) • fecho- (mover(C, 0)) = fecho- ({3, 11}) = B •

Exemplo (cont. ) • fecho- (mover(C, 0)) = fecho- ({3, 11}) = B • fecho- (mover(C, 1)) = fecho- ({5, 9}) = C • fecho- (mover(D, 0))=fecho- ({3, 11, 12, 13}) = {1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14} = E • fecho- (mover(D, 1)) = fecho- ({5, 9}) = C • fecho- (mover(E, 0))=fecho- ({3, 11, 12, 13}) =E • fecho- (mover(E, 1)) = fecho- ({5, 9}) = C Jorge Morais LFA 1999/2000 -

Exemplo: AFD Jorge Morais LFA 1999/2000 -

Exemplo: AFD Jorge Morais LFA 1999/2000 -

Minimizar número de estados • Partição inicial do conjunto de estados S em F

Minimizar número de estados • Partição inicial do conjunto de estados S em F e FS • Em cada partição vai-se, sucessivamente, fazer novas partições, mantendo juntos os estados que têm transições iguais entre partições • Os novos estados são: – estados iguais aos iniciais; – conjunto de estados com transições iguais entre partições. Jorge Morais LFA 1999/2000 -

Exemplo: * (0+1) (1+000) • Partição inicial: (ABD)(CE) • Em (CE): o estado E

Exemplo: * (0+1) (1+000) • Partição inicial: (ABD)(CE) • Em (CE): o estado E tem a transição ((CE), 0, (CE)), enquanto C tem a transição ((CE), 0, (ABD)) (ABD)(C)(E) • Em (ABD): A e B têm a transição ((ABD), 0, (ABD)), enquanto D tem a transição ((ABD), 0, (E)) (AB)(C)(D)(E) • Em (AB): A tem a transição ((AB), 0, (AB)), enquanto B tem a transição ((AB), 0, (D)) (A)(B)(C)(D)(E) Jorge Morais LFA 1999/2000 -

Exemplo: Jorge Morais * * * 0 (100 ) (1+ ) LFA 1999/2000 -

Exemplo: Jorge Morais * * * 0 (100 ) (1+ ) LFA 1999/2000 -

Exemplo: * * * 0 (100 ) (1+ ) • fecho- (0) = {0,

Exemplo: * * * 0 (100 ) (1+ ) • fecho- (0) = {0, 1, 3, 4, 10, 11, 13, 14, 15} = A • fecho- (mover(A, 0)) = fecho- ({2}) = {1, 2, 3, 4, 10, 11, 13, 14, 15} = B • fecho- (mover(A, 1)) = fecho- ({5, 12}) = {5, 12, 15} = C • fecho- (mover(B, 0)) = fecho- ({2}) = B • fecho- (mover(B, 1)) = fecho- ({5, 12}) = C Jorge Morais LFA 1999/2000 -

Exemplo: * * * 0 (100 ) (1+ ) • fecho- (mover(C, 0)) =

Exemplo: * * * 0 (100 ) (1+ ) • fecho- (mover(C, 0)) = fecho- ({6}) = {4, 6, 7, 9, 10, 11, 13, 14, 15} = D • fecho- (mover(C, 1)) = fecho- ( ) = • fecho- (mover(D, 0)) = fecho- ({8}) = {4, 7, 8, 9, 10, 11, 13, 14, 15} = E • fecho- (mover(D, 1)) = fecho- ({5, 12}) = C • fecho- (mover(E, 0)) = fecho- ({8}) = E • fecho- (mover(E, 1)) = fecho- ({5, 12}) = C Jorge Morais LFA 1999/2000 -

Exemplo: Jorge Morais * * * 0 (100 ) (1+ ) LFA 1999/2000 -

Exemplo: Jorge Morais * * * 0 (100 ) (1+ ) LFA 1999/2000 -

Exemplo: * * * 0 (100 ) (1+ ) • Como todos os estados

Exemplo: * * * 0 (100 ) (1+ ) • Como todos os estados são finais, vamos ter inicialmente uma única partição (ABCDE) • Como C não tem transição com 1 para nenhum estado (ABDE) (C) • Em (ABDE) todos os estados têm as mesmas transições: ((ABDE), 0, (ABDE)) e ((ABDE), 1, (C)) não são feitas mais partições (ABDE) (C) Jorge Morais LFA 1999/2000 -

Exemplo: Jorge Morais * * * 0 (100 ) (1+ ) LFA 1999/2000 -

Exemplo: Jorge Morais * * * 0 (100 ) (1+ ) LFA 1999/2000 -