1 / 22

II – Análise léxica

II – Análise léxica. DEI. 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 - 1.

evelyn
Download Presentation

II – Análise léxica

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. II – Análise léxica DEI • 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 - 1

  2. Expressão regular  autómato finito determinístico mínimo DEI • Conversão expressão regular  autómato finito  (Construção de Thompson) • Conversão autómato finito   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 - 2

  3. ER  AF:  DEI Jorge Morais LFA 1999/2000 - 3

  4. ER  AF: a   DEI Jorge Morais LFA 1999/2000 - 4

  5. ER  AF: E1 + E2 DEI Jorge Morais LFA 1999/2000 - 5

  6. ER  AF: E1 E2 DEI Jorge Morais LFA 1999/2000 - 6

  7. ER  AF: E1* DEI Jorge Morais LFA 1999/2000 - 7

  8. Propriedades do autómato final DEI • 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 - 8

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

  10. AF  AFD DEI • 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 - 10

  11. Construção de subconjuntos DEI • 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 - 11

  12. Exemplo: (0+1)*(1+000) DEI • 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 - 12

  13. Exemplo (cont.) DEI • 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 - 13

  14. Exemplo: AFD DEI Jorge Morais LFA 1999/2000 - 14

  15. Minimizar número de estados DEI • Partição inicial do conjunto de estados S em F e F\S • 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 - 15

  16. Exemplo: (0+1)*(1+000) DEI • 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 - 16

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

  18. Exemplo: 0*(100*)*(1+ ) DEI • 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 - 18

  19. Exemplo: 0*(100*)*(1+ ) DEI • 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 - 19

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

  21. Exemplo: 0*(100*)*(1+ ) DEI • 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 - 21

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

More Related