cse443 compilers
play

CSE443 Compilers Dr. Carl Alphonce alphonce@buffalo.edu 343 Davis - PowerPoint PPT Presentation

CSE443 Compilers Dr. Carl Alphonce alphonce@buffalo.edu 343 Davis Hall http:/ /www.cse.buffalo.edu/faculty/alphonce/SP17 /CSE443/index.php https:/ /piazza.com/class/iybn4ndqa1s3ei Lexical Phases of structure a compiler Figure 1.6,


  1. CSE443 Compilers Dr. Carl Alphonce alphonce@buffalo.edu 343 Davis Hall http:/ /www.cse.buffalo.edu/faculty/alphonce/SP17 /CSE443/index.php https:/ /piazza.com/class/iybn4ndqa1s3ei

  2. Lexical Phases of structure a compiler Figure 1.6, page 5 of text

  3. Process of building lexical analyzer 5) The minimal DFA is character our lexical analyzer stream language regex NFA DFA DFA token stream lexical analyzer

  4. Focus last time regex NFA

  5. focus today NFA DFA

  6. (a|b) * abb first we construct an NFA from this regular expression

  7. (a|b) * abb a

  8. (a|b) * abb a b

  9. (a|b) * abb a ℇ ℇ b ℇ ℇ

  10. (a|b) * abb ℇ a ℇ ℇ ℇ ℇ ℇ b ℇ ℇ

  11. (a|b) * abb ℇ a ℇ ℇ a ℇ ℇ ℇ b ℇ ℇ

  12. (a|b) * abb ℇ a ℇ ℇ a ℇ ℇ ℇ b ℇ ℇ

  13. (a|b) * abb ℇ a ℇ ℇ a b ℇ ℇ ℇ b ℇ ℇ

  14. (a|b) * abb ℇ a ℇ ℇ a b b ℇ ℇ ℇ b ℇ ℇ

  15. (a|b) * abb ℇ a 2 3 ℇ ℇ a b b ℇ 0 1 6 8 7 9 10 ℇ ℇ b ℇ ℇ 4 5

  16. Operations ℇ -closure(t) is the set of states reachable from state t using only ℇ -transitions. ℇ -closure(T) is the set of states reachable from any state t ∈ T using only ℇ -transitions. move(T,a) is the set of states reachable from any state t ∈ T following a transition on symbol a ∈ ∑ .

  17. NFA -> DFA algorithm (set of states construction - page 153 of text) INPUT: An NFA N = (S, ∑ , 𝛆 , s 0 , F) OUTPUT: A DFA D = (S', ∑ , 𝛆 ', s 0 ', F') such that ℒ (D)= ℒ (N) ALGORITHM: Compute s 0 ' = ℇ -closure(s 0 ), an unmarked set of states Set S' = { s 0 ' } while there is an unmarked T ∈ S' mark T for each symbol a ∈ ∑ let U = ℇ -closure(move(T,a)) if U ∉ S', add unmarked U to S' add transition: 𝛆 '(T,a) = U F' is the subset of S' all of whose members contain a state in F .

  18. NFA -> DFA algorithm (set of states construction - page 153 of text) S 0 ' = { A = {0,1,2,4,7} } Pick an unmarked set from S 0 ', A, mark it, and ∀ x ∈ ∑ let U = ℇ -closure(move(A,x)), if U ∉ S', add unmarked U to S' and add transition: 𝛆 '(A,x) = U S 1 ' = { A ✔ , B = {1,2,3,4,6,7,8} , C = {1,2,4,5,6,7}} 𝛆 '(A,a) = B 𝛆 '(A,b) = C Pick an unmarked set from S 1 ', B, mark it, and ∀ x ∈ ∑ let U = ℇ -closure(move(B,x)), if U ∉ S', add unmarked U to S' and add transition: 𝛆 '(B,x) = U S 2 ' = { A ✔ , B ✔ , C , D = {1,2,4,5,6,7,9}} 𝛆 '(B,a) = B 𝛆 '(B,b) = D Pick an unmarked set from S 2 ', C, mark it, and ∀ x ∈ ∑ let U = ℇ -closure(move(C,x)), if U ∉ S', add unmarked U to S' and add transition: 𝛆 '(C,x) = U S 3 ' = { A ✔ , B ✔ , C ✔ , D } 𝛆 '(C,a) = B 𝛆 '(C,b) = C

  19. NFA -> DFA algorithm (set of states construction - page 153 of text) Pick an unmarked set from S 3 ', D, mark it, and ∀ x ∈ ∑ let U = ℇ -closure(move(D,x)), if U ∉ S', add unmarked U to S' and add transition: 𝛆 '(D,x) = U S 4 ' = { A ✔ , B ✔ , C ✔ , D ✔ , E = {1,2,4,5,6,7,10} } 𝛆 '(D,a) = B 𝛆 '(D,b) = E Pick an unmarked set from S 4 ', E, mark it, and ∀ a ∈ ∑ let U = ℇ -closure(move(E,a)), if U ∉ S', add unmarked U to S' and add transition: 𝛆 '(E,a) = U S 5 ' = { A ✔ , B ✔ , C ✔ , D ✔ , E ✔ } 𝛆 '(E,a) = B 𝛆 '(E,b) = C Since there are no unmarked sets S 5 ' the algorithm has reached a fixed point. STOP. F' is the subset of S' all of whose members contain a state in F: {E}

  20. The resulting DFA DFA = ( {A, B, C, D, E}, {a, b}, A, 𝛆 ', {E}), where b 𝛆 '(A,a) = B 𝛆 '(A,b) = C b C 𝛆 '(B,a) = B 𝛆 '(B,b) = D b a a 𝛆 '(C,a) = B b b 𝛆 '(C,b) = C A B D E 𝛆 '(D,a) = B a 𝛆 '(D,b) = E a a 𝛆 '(E,a) = B 𝛆 '(E,b) = C

Recommend


More recommend