04 / 1 - 15
Teknik Kompilasi
04 / 2 - 15
state yang sama dan simbol menggambarkan transisi kosong. DETERMINISTIC FINITE AUTOMATA (DFA) a. Tidak ada peralihan atas input b. Setiap state S dan simbol input a, paling banyak satu sisi dengan label input a yang meninggalkan S
Teknik Kompilasi
04 / 3 - 15
S = { 0,1,2,3} adalah Himpunan State = {a,b} adalah alfabet simbol input S0= {0} ; F = {3}
Teknik Kompilasi
04 / 4 - 15
KONVERSI RE KE NFA
Merupakan salah satu strategi untuk membentuk sebuah pengenal dari sebuah RE Algoritma : Thompsons Construction Input : RE r pada alfabet Output : NFA N yang menerima L(r) Metode: Menguraikan r menjadi subexpression
Teknik Kompilasi
04 / 5 - 15
Gunakan
aturan (1) dan (2) berikut untuk membentuk NFA untuk setiap simbol dasar dari r (meru-pakan simbol alfabet atau ) NFA tersebut dikombinasikan secara induksi dengan menggunakan aturan (3) berikut. Aturan : 1) Untuk , dibentuk NFA :
start
i
Dimana : i : start state yang baru f : accepting state yang baru NFA ini mengenal {}
Dimana : i : start state yang baru f : accepting state yang baru NFA ini mengenal {a}
Teknik Kompilasi
04 / 6 - 15
3) Misalkan N(s) dan N(t) adalah NFA untuk regular expression s dan t : a) Untuk RE (s|t) bentuk NFA gabungan N(s|t)
start
N(s)
N(t)
b)
Dimana : i : start state yang baru f : accepting state yang baru NFA ini mengenali L(s) L(t)
bentuk
NFA
start
N(t)
start state
Teknik Kompilasi
04 / 7 - 15
- Accepting state N(t) menjadi accepting state dari NFA gabungan - NFA ini mengenali L(s) L(t)
(c)
NFA
start
N(s)
Dimana
: i : start state yang baru f : accepting state yang baru NFA ini mengenali (L(s))*
(d) Untuk RE didalam kurung: (s), gunakan N(s) itu sendiri sebagai NFA yang baru.
Teknik Kompilasi
04 / 8 - 15
Algoritma di atas menghasilkan sebuah NFA N(r) yang memiliki sifat-sifat sebagai berikut : 1. N(r) mempunyai state paling banyak dua kali jumlah simbol dan operator di dalam r. 2. N(r) mempunyai tepat satu start state dan satu accepting state. Accepting state tidak memiliki transisi ke luar. 3. Setiap state di N(r) mempunyai satu transisi keluar untuk sebuah simbol di dalam atau paling banyak dua transisi keluar untuk simbol (transisi ).
Teknik Kompilasi
04 / 9 - 15
Contoh : Berdasarkan algoritma tersebut bentuk NFA N(r) dari RE : (a | b)* abb
2 a 3
start
10
KONVERSI RE KE DFA
Strategi pembuatan DFA dari RE dengan mengikuti aturan berikut : Augmental RE r# Dibuat pohon sintaks dari Augmental RE r dan posisinya
Teknik Kompilasi
04 / 10 - 15
RE a|b ab a* dan a+
Syntax tree | a b a b * a
+
dan
Teknik Kompilasi
04 / 11 - 15
Firstpos (n)
Lastpost (n)
Teknik Kompilasi
04 / 12 - 15
n c1 c2
n
C2
True
Rules untuk menentukan followpos 1. Jika n adalah cat-node left-child c1 dan right-child c2, dan i adalah posisi dalam lastpos (c1) maka semua posisi dalam lastpos (c2) adalah followpos ( i )
Teknik Kompilasi
04 / 13 - 15
2. Jika
n adalah node start dan i adalah posisi dalam lastpos (n) maka semua posisi dalam firstpos (n) adalah dalam followpos (i)
Contoh : Berdasarkan algoritma di atas bentuk DFA dari RE : r = (a | b)* abb Maka augmental RE r# r = ( a ) * abb# b
1 2 3 4 5 6
{5}
{4}
{5} b {5}
F F
{3} {3}
{4}b {4}
a F {3}
b F
{2}
Teknik Kompilasi
04 / 14 - 15
Penomoran posisi hanya pada leaf dan dimulai dari kiri bawah (depth-left-first)
Pohon sintaks untuk Folowpos (n) : Himpunan posisi semua simbol terletak pada sesudah symbol pada posisi n
Node 1 2 3 4 5 6 Followpos {1,2,3} {1,2,3} {4} {5} {6} -
Teknik Kompilasi
04 / 15 - 15
State A
{1,2,3}
Input a followpos (1) Followpos(3) = {1, 2, 3, 4} = B Followpos (1) Followpos (3) = {1,2, 3, 4} = B Followpos (1) Followpos (3) = {1, 2, 3, 4 } = B Followpos (1) Followpos (3) = {1, 2, `3, 4} = B B followpos (2) = {1, 2, 3} = A followpos (2) followpos (4) = {1, 2, 3, 5} = C followpos (2) followpos (5) = {1, 2, 3, 6} = D followpos (2) = {1, 2, 3 } =A
B
{1,2,3,4}
C
{1,2,3,5}
D
{1,2,3,6}
b a a
B
b a
b a