Lexical analysis
NFA N for (a|b)*abb ( | )
2 3 a ε 10 1 2 3 6 7 8 9 a b b ε ε ε ε 4 5 b ε ε ε ε
/ Faculteit Wiskunde en Informatica
PAGE 0 14-9-2011
Lexical analysis
- A = {0, 1, 2, 4, 7} (= ε-closure(0))
- B = {1, 2, 3, 4, 6, 7, 8}
(= move({0, 1, 2, 4, 7}, a) = move(A, a))
- C = {1, 2, 4, 5, 6, 7}
(= move({0, 1, 2, 4, 7}, b) = move(A, b)) B = {1 2 3 4 6 7 8} (= move({1 2 3 4 6 7 8} a) = move(B a))
- B = {1, 2, 3, 4, 6, 7, 8}
(= move({1, 2, 3, 4, 6, 7, 8}, a) = move(B, a))
- D = {1, 2, 4, 5, 6, 7, 9}
(= move({1, 2, 3, 4, 6, 7, 8}, b) = move(B, b))
- B = {1, 2, 3, 4, 6, 7, 8}
(= move({1, 2, 3, 4, 6, 7}, a) = move(C, a))
- C = {1, 2, 3, 4, 6, 7}
(= move({1, 2, 3, 4, 6, 7}, b) = move(C, b))
- B = {1, 2, 3, 4, 6, 7, 8}
(= move({1, 2, 4, 5, 6, 7, 9}, a) = move(D, a))
- E = {1, 2, 4, 5, 6, 7, 10}
(= move({1, 2, 4, 5, 6, 7, 9}, b) = move(D, b)) { , , , , , , } ( ({ , , , , , , }, ) ( , ))
- B = {1, 2, 3, 4, 6, 7, 8}
(= move({1, 2, 4, 5, 6, 7, 10}, a) = move(E, a))
- C = {1, 2, 3, 4, 6, 7}
(= move({1, 2, 4, 5, 6, 7, 10}, b) = move(E, b))
/ Faculteit Wiskunde en Informatica
PAGE 1 14-9-2011
Lexical analysis
- Resulting DFA
g
a a
state a b
A E D B a b b a
state a b A B C B B D
C b b a a
C B C D B E E B C
b
E B C
/ Faculteit Wiskunde en Informatica
PAGE 2 14-9-2011
Lexical analysis
DFA minimal DFA (MDFA) DFA = (Q, V, δ, q0, F) equivalence relation on states; for all s, t Q equivalence relation
- n states; for all s, t Q
s t (w : w V* : δ(s,w) F δ(t,w) F) Definition (equivalence class of state q) Q P(Q) (q : q Q : (q) = {q’ | q q’} Q P(Q) (q : q Q : (q) = {q’ | q q’} Partitioning state set Q according to relation yields state set Q’ which is used in the minimal DFA (MDFA) (Q’, V, δ’, (q0), F’) where (s, a : s V : δ’( (s),a) = (δ(s,a)) F’ = { (f) | f F}
/ Faculteit Wiskunde en Informatica
PAGE 3 14-9-2011