RE to DFA
- Tambahkan augmented variable (
#) di akhir expression - Tambahkan konkatenasi (
.) pada expression (.ditambahkan diantara variabel yang tidak memiliki|) - Beri nomor pada setiap variabel
- Tentukan nilai followpos(ition)
- Buat tree (kumpulan node)
Node -> O (lingkaran)Variabel/Leaf -> tidak punya tanganSimbol -> 2 tangan (. atau |)Closure -> 1 tangan (*, +, atau ?)
- Beri nomor pada leaf (paling bawah)
- Tentukan nilai
firstpos,lastpos, dannullable - Buatlah tabel DFA
firstpos paling atas adalah S0 (start) pada DFAisi dari variabel (a) adalah gabungan followpos variabel (fp (1,3) -> 1,2,3,4)jika ada angka dari # maka final state
Followpos
(a|b)*a#
1 2 34
followpos 1 --> aa, ab, aba, aaa
11 12 123 113 --> ada 1, 2, 3 (followpos 1 adalah 1, 2, 3)
followpos 2 --> bb, ba, ba, baa
22 21 23 213 --> ada 1, 2, 3 (followpos 2 adalah 1, 2, 3)
followpos 3 --> #
4 --> followpos 3 adalah 4
followpos 4 --> -
- --> tidak ada
Firstpos
firstpos -> angka pada depan node
leaf -> sesuai angka leafsimbol | -> gabungan firstpos node depan (1) dan belakang (2) -> 1,2simbol . -> jika nullable node _depan_ FALSE, firstpos depan, else gabunganclosure -> sesuai bawahnya
Lastpos
lastpos -> angka pada belakang node
leaf -> sesuai angka leafsimbol | -> gabungan lastpos node depan (1) dan belakang (2) -> 1,2simbol . -> jika nullable node _belakang_ FALSE, lastpos belakang, else gabunganclosure -> sesuai bawahnya
Nullable
nullable -> node bisa bernilai null atau tidak (TRUE|FALSE)
leaf -> pasti FALSE kecuali emptysimbol | -> TRUE jika _salah satu_ node bawah TRUE, else FALSEsimbol . -> TRUE jika _kedua_ node bawah TRUE, else FALSEclosure *, ? -> pasti TRUE, bisa menghasilkan emptyclosure + -> sesuai bawahnya
Ex
