Professional Documents
Culture Documents
Compiler: by Noor Wali Khan Uoch
Compiler: by Noor Wali Khan Uoch
Compiler: by Noor Wali Khan Uoch
2
Proof.
3
Conversion of NFA to DFA.
• It is very difficult and error prone to write directly DFA for a language.
• Therefore we have to first write NFA for the language and then
convert it into corresponding DFA.
• There are two methods to convert NFA to DFA.
• e-Closure Method.
• Sub-Set Method.
4
.e-Closure Method 1
e
a
2 3
e e
e e a b b
6 7 8 9 10
0 1
e e
4 5
b
2
a
3
2
e e
e e a b b
0 1 6 7 8 9 10
e e State
Input symbol
a b
4 5
b A
e
• e-closure({0}) = {0,1,2,4,7} =A
A = {0,1,2,4,7}
6
e
2
a
3
3
e e
e e a b b
0 1 6 7 8 9 10
e e State
Input symbol
a b
4 5
b A B C
e-closure({0}) = {0,1,2,4,7} =A
e-closure(move(A,a)) = e-closure({3,8}) = {1,2,3,4,6,7,8} = B A = {0,1,2,4,7}
e-closure(move(A,b)) = e-closure ({5}) = {1,2,4,5,6,7} = C B = {1,2,3,4,6,7,8}
C = {1,2,4,5,6,7}
7
e
2
a
3
4
e e
e e a b b
0 1 6 7 8 9 10
e e State
Input symbol
a b
4 5
b A B C
B B D
e C
e-closure({0}) = {0,1,2,4,7} =A
e-closure(move(A,a)) = e-closure({3,8}) = {1,2,3,4,6,7,8} = B A = {0,1,2,4,7}
e-closure(move(A,b)) = e-closure ({5}) = {1,2,4,5,6,7} = C B = {1,2,3,4,6,7,8}
e-closure(move(B,a)) = e-closure({3,8}) =B C = {1,2,4,5,6,7}
D = {1,2,4,5,6,7,9}
e-closure(move(B,b)) = e-closure({5,9}) ={1,2,4,5,6,7,9} = D
8
e
2
a
3
5
e e
e e a b b
0 1 6 7 8 9 10
e e State
Input symbol
a b
4 5
b A B C
B B D
e C B C
e-closure({0}) = {0,1,2,4,7} =A
e-closure(move(A,a)) = e-closure({3,8}) = {1,2,3,4,6,7,8} = B A = {0,1,2,4,7}
e-closure(move(A,b)) = e-closure ({5}) = {1,2,4,5,6,7} = C B = {1,2,3,4,6,7,8}
e-closure(move(B,a)) = e-closure({3,8}) =B C = {1,2,4,5,6,7}
D = {1,2,4,5,6,7,9}
e-closure(move(B,b)) = e-closure({5,9}) ={1,2,4,5,6,7,9} = D
e-closure(move(C,a)) = e-closure({3,8}) =B
e-closure(move(C,b)) = e-closure({5}) =C
9
e
2
a
3
6
e e
e e a b b
0 1 6 7 8 9 10
e e State
Input symbol
a b
4 5
b A B C
B B D
e C B C
D B E
E
e-closure({0}) = {0,1,2,4,7} =A
e-closure(move(A,a)) = e-closure({3,8}) = {1,2,3,4,6,7,8} = B A = {0,1,2,4,7}
e-closure(move(A,b)) = e-closure ({5}) = {1,2,4,5,6,7} = C B = {1,2,3,4,6,7,8}
e-closure(move(B,a)) = e-closure({3,8}) = B C = {1,2,4,5,6,7}
D = {1,2,4,5,6,7,9}
e-closure(move(B,b)) = e-closure({5,9}) ={1,2,4,5,6,7,9} = D E = {1,2,4,5,6,7,10}
e-closure(move(C,a)) = e-closure({3,8}) = B
e-closure(move(C,b)) = e-closure({5}) = C
e-closure(move(D,a)) = e-closure({3,8}) = B
e-closure(move(D,b)) = e-closure({5,10}) = {1,2,4,5,6,7,10} = E
10
e
2
a
3
7
e e
e e a b b
0 1 6 7 8 9 10
e e State
Input symbol
a b
4 5
b A B C
B B D
e C B C
D B E
e-closure({0}) = {0,1,2,4,7} =A E B C
e-closure(move(A,a)) = e-closure({3,8}) = {1,2,3,4,6,7,8} = B
e-closure(move(A,b)) = e-closure ({5}) = {1,2,4,5,6,7} = C A = {0,1,2,4,7}
e-closure(move(B,a)) = e-closure({3,8}) = B B = {1,2,3,4,6,7,8}
C = {1,2,4,5,6,7}
e-closure(move(B,b)) = e-closure({5,9}) ={1,2,4,5,6,7,9} = D D = {1,2,4,5,6,7,9}
e-closure(move(C,a)) = e-closure({3,8}) = B E = {1,2,4,5,6,7,10}
e-closure(move(C,b)) = e-closure({5}) = C
e-closure(move(D,a)) = e-closure({3,8}) = B
e-closure(move(D,b)) = e-closure({5,10}) = {1,2,4,5,6,7,10} = E
e-closure(move(E,a)) = e-closure({3,8}) = B
e-closure(move(E,b)) = e-closure({5}) = C
11