Anda di halaman 1dari 9

Accelerat ing t he world's research.

" Simulasi Transformasi Regular


Expression Terhadap Finite State
Automata " SIMULASI
TRANSFORMASI REGULAR
EXPRES...
abdul rohim

Related papers Download a PDF Pack of t he best relat ed papers 

MODUL T EORI BAHASA DAN AUT OMATA


mic hael

T EORI BAHASA DAN OT OMATA MAT ERI KULIAH : An Int roduct ion t o Formal Language
Raja Fut sal

MAT ERI KULIAH T EORI BAHASA DAN OT OMATA Oleh


T herius Okt avario
Pelita Informatika Budi Darma, Volume : IV, Nomor: 1, Agustus 2013 ISSN : 2301-9425
   

SIMULASI TRANSFORMASI REGULAR EXPRESSION


TERHADAP FINITE STATE AUTOMATA
Sinar Sinurat

Dosen Tetap STMIK Budi Darma Medan


Jl. Sisingamangaraja No. 338 Simpang Limun Medan
www.stmik-budidarma.ac.id // E-Mail :sinar_sinurat@yahoo.com

ABSTRAK

Automata adalah aktivitas yang mengurusi persoalan formalisasi tatabahasa (grammar) dengan alat bantu
mesin matematis. Finite State Automata (FSA) terdiri dari Non-Deterministic FSA (NFSA) dan Deterministic
FSA (DFA). FSA digunakan untuk mengenali bahasa reguler dengan notasi ekspresi. Dalam automata
mengandung unsur : Grammar (tata bahasa), Parsing (mengurai string-string dalam buffer), Scanning
(membaca data streaming ke dalam buffer)
Dalam paper mencakup bahasan bagaimana proses transformasi reguler expression ke DFA dan NFA
dengan menguraikan tahap demi tahap hingga muncul diagram transisi yang akan digunakan untuk meregulasi
bahasa.
Paper ini akan menghasilkan diagram transisi yang bersifat non deterministik dan deterministik, dan
sebelumnya tabel diagram transisi sudah terbentuk.

Kata Kunci : Buffer, ekspressi, scanning, diagram transisi, non determistik dan deterministik

input yang sama. Perbedaan lainnya adalah DFA


1. Pendahuluan tidak menerima input kosong (empty), tidak seperti
1.1. Latar Belakang NDFA. FSA yang biasanya pertama kali dirancang
Teori bahasa adalah salah satu topik materi adalah NFA, dan kemudian ditransformasi ke
pendukung yang membicarakan formalisasi (formal bentuk DFA sebagai bentuk yang lebih minimal
language), terutama untuk kepentingan dan efisien. Dalam proses transformasi, umumnya
perancangan kompilator (compiler) dan pemroses dilakukan beberapa tahapan khusus dan kompleks.
naskah (text processor). Bahasa formal adalah
kumpulan kalimat. Semua kalimat dalam sebuah 1.2. Tujuan
bahasa dibangkitkan oleh sebuah tata bahasa Adapun tujuan yang ingin dicapai adalah:
(grammar) yang sama. Sebuah bahasa formal bisa 1. Untuk mengetahui proses transformasi
dibangkitkan oleh dua atau lebih tata bahasa (konversi) ekspressi reguler ke bentuk DFA
berbeda. Dikatakan bahasa formal karena grammar yang efektif dan lebih praktis.
diciptakan mendahului pembangkitan setiap 2. Untuk memberikan deskripsi yang lebih praktis
kalimatnya. Bahasa manusia bersifat sebaliknya; dalam pemahaman proses regulasi bahasa
grammar diciptakan untuk meresmikan kata-kata beserta proses pembuatan diagram transisi.
yang hidup di masyarakat. Dalam pembicaraan 3. Untuk memberi kemudahan terhadap para
selanjutnya ‘bahasa formal’ akan disebut ‘bahasa’ pemrogram untuk membuat coding dalam
saja. Mengenali (recognize), menerima (accept), bahasa pemrograman yang sesuai dengan
atau membangkitkan (generate) sebuah kalimat keinginan.
dalam bahasa tertentu.
Automata secara umum dipelajari bersama 1.3. Identifikasi Masalah
dengan teori bahasa. Alasan yang mendasar adalah Agar pembahasan tidak terlalu meluas dan tidak
sebagai berikut : menyimpang dari tujuan maka maka unsur-unsur
1. Rangkaian input dapat dianggap sebagai bahasa yang akan dibahas adalah sebagai berikut :
yang harus dikenali oleh automata tersebut. 1. Pemberian input ekpressi reguler yang
2. Automata dapat berfungsi untuk sederhana dan memenuhi kaidah grammar
membangkitkan bahasa tertentu yang aturannya 2. Proses transformasi ekspressi reguler ke NFA
ditentukan oleh tata bahasa (grammar) tertentu. kemudian kebentuk DFA dilakukan dengan
tahap-tahap.
Beberapa perbedaan di antara keduanya adalah 3. Tahap demi tahap transformasi mengandung
bahwa DFA menerima sebuah input dimana state langkah-langkah yang diulang (iterasi).
tujuan dari input tersebut adalah satu, sedangkan
NDFA dapat menuju beberapa state tujuan untuk
“Simulasi Transformasi Regular Expression  Terhadap Finite State Automata”  1
Oleh : Sinar Sinurat 
Pelita Informatika Budi Darma, Volume : IV, Nomor: 1, Agustus 2013 ISSN : 2301-9425
   

fungsi yang aneh serta menganalisa teks


1.4. Batasan Masalah program dalam bentuk hirarki
Agar pembahasan lebih fokus diberikan 2. Pretty Printer : menganalisa suatu program dan
batasan yaitu: cetakan dengan beberapa cara sehingga
1. Input ekspressi reguler/ bahasa reguler struktur program menjadi jelas, misalnya
sembarang berupa font tertentu, indend (tab)
2. Proses transformasi (konversi) dalam domain 3. Static Checker : membaca, mengalisa,
prinsip-prinsip kompilasi menempatkan program dalam posisi tawaran
3. State-state yang diterima adalah simbol non- perubahan serta mendeteksi program tanpa
terminal berupa 1 karakter huruf kapital atau pernah dieksekusi
angka. 4. Interpreter : menghasilkan suatu target
4. Alfabet-alfabet yang diterima sebagai input program sebagai suatu translasi untuk dipakai
untuk otomata adalah 1 karakter sembarang menjadi source program
(non kapital jika huruf) dan alfabet empty (ε)
sebagai karakter spasi (blank). Program-program yang menggunakan teknologi
5. Tidak membahas penentuan inaccessible state kompiler konvensional antara lain :
dan state ekuivalen. 1. Text Formatter : mengambil input sebagai
stream karakter termasuk perintah untuk
1.5. Metode Penelitian mengenali paragraf, gambar atau struktur
Penyelesaian paper ini dilakukan dengan cara : matematika (subscript, superscript)
1. Kepustakaan 2. Silicon Compiler : fungsional programming
a. Mencari sejumlah literatur yang languange di mana variabel-variabel
berhubungan dengan automata dan merepresentasi bahasa untuk signal logika (0 or
kompilasi baik berupa buku, artikel (majalah 1 or grup signal) tidak berada di memory akan
maupun internet), source code program, dan tetapi ada di rangkaian switching
sebagainya. 3. Query Interpreter : menerjemahkan predikat
b. Mencari bentuk konversi yang lebih mudah relasi dan operator boolean menjadi command
dipahami dan diterakan ke dalam bahasa untuk mencari database records yang
pemrograman memenuhi predikat
c. Merancang algoritma yang
menginterpretasikan seluruh langkah teoritis Beberapa pemahaman dasar untuk mengenali
dalam bentuk pseudo code (recognize), menerima (accept), ataupun
2. Laboratorium membangkitkan (generate) sebuah kalimat dalam
a. Merancang coding program yang dapat bahasa tertentu adalah sebagai berikut :
dikompilasi sewaktu-waktu 1. Simbol adalah sebuah entitas abstrak (seperti
b. Menguji program dengan sejumlah input halnya pengertian titik dalam geometri).
ekpressi reguler yang bervariasi Sebuah huruf atau sebuah angka adalah contoh
c. Validasi dengan sejumlah teori dan simbol.
mencatat sejumlah perbedaan antara teori 2. String adalah deretan terbatas (finite) simbol-
dan praktek simbol. Sebagai contoh, jika a, b, dan c adalah
d. Implementasi tiga buah simbol maka abcb adalah sebuah
string yang dibangun dari ketiga simbol
2. Dasar Teoritis tersebut.

⎪w⎪
3. Jika w adalah sebuah string maka panjang
2.1 Beberapa Pengertian Dasar string dinyatakan sebagai dan
Proses penerjemahan suatu bahasa sumber didefinisikan sebagai cacahan (banyaknya)

contoh, jika w = abcb maka ⎪w⎪= 4.


(source program) menjadi bahasa target (target simbol yang menyusun string tersebut. Sebagai
program), biasanya dilakukan dengan proses
kompilasi, perhatikan diagram berikut : 4. String hampa adalah sebuah string dengan nol

simbol ε (atau ^) sehingga ⎪ε⎪= 0. String


buah simbol. String hampa dinyatakan dengan

hampa dapat dipandang sebagai simbol hampa


karena keduanya tersusun dari nol buah simbol.
5. Alfabet adalah hinpunan hingga (finite set)
Beberapa tools software yang dapat digunakan simbol-simbol
bahasa sumber seperti :
2.2 Operasi Dasar String
1. Structure Editor : mengambil sejumlah untaian
• Prefix string w adalah string dihasilkan dari
Diberikan dua string : x = abc dan y=123
perintah untuk dibangun menjadi bahasa
sumber, membuat teks, dan memodifikasi
string w dengan menghilangkan nol atau lebih
simbol-simbol paling belakang dari string w
“Simulasi Transformasi Regular Expression  Terhadap Finite State Automata”  2
Oleh : Sinar Sinurat 
Pelita Informatika Budi Darma, Volume : IV, Nomor: 1, Agustus 2013 ISSN : 2301-9425
   

• tersebut. Contoh : abc, ab, a, dan ε adalah

• Proper Prefix string w adalah string dihasilkan


semua Prefix(x) 2.3 Beberapa Sifat Operasi
Sejumlah operasi string yang dapat

• Tidak selalu berlaku : x = Prefix(x) Postfix(x)


dari string w dengan menghilangkan satu atau digunakan untuk transformasi adalah :

w tersebut. Contoh : ab, a, dan ε adalah semua


lebih simbol-simbol paling belakang dari string
• Selalu berlaku : x = Head(x)Tail(x)
• Tidak selalu berlaku : Prefix(x) = Postfix(x) atau
• Postfix (Suffix) string w adalah string dihasilkan
Proper Prefix(x)
Prefix(x) ≠ Postfix(x)
dari string w dengan menghilangkan nol atau • Selalu berlaku : ProperPrefix(x) ≠

Contoh : abc, bc, c, dan ε adalah semua


lebih simbol paling depan dari string w tersebut.
• Selalu berlaku : Head(x) ≠ Tail(x)
ProperPostfix(x)

• Setiap Prefix(x), ProperPrefix(x), Postfix(x),


• Proper Postfix (atau Proper Suffix) string w
Postfix(x)
ProperPostfix(x), Head(x), dan Tail(x) adalah
adalah string yang dihasilkan dari string w
• Setiap Substring(x) adalah Subsequence(x),
Substring(x), tetapi tidak sebaliknya
dengan menghilangkan satu atau lebih simbol

c, dan ε adalah semua Proper Postfix(x).


paling depan dari string w tersebut. Contoh : bc,
• Dua sifat aljabar concatenation :
tetapi tidak sebaliknya

• Head string w adalah simbol paling depan dari a. Operasi concatenation bersifat asosiatif :

• Tail string w adalah string dihasilkan dari string


string w. Contoh : a adalah Head(x). x(yz) = (xy)z

adalah ε : εx = xε = x
b. Elemen identitas operasi concatenation
w dengan menghilangkan simbol paling depan
• Tiga sifat aljabar alternation :
• Substring w adalah string dihasilkan dari string
dari string w tersebut. Contoh : bc adalah Tail(x)
a. Operasi alternation bersifat komutatif :
w dengan menghilangkan nol atau lebih simbol x⏐y = y⏐x
paling depan dan/atau simbol paling belakang b. Operasi alternation bersifat asosiatif :
c, dan ε adalah semua Substring (x)
dari string w tersebut. Contoh : abc, ab, bc, a, b, x⏐(y⏐z) = (x⏐y)⏐z
• Proper Substring w adalah string dihasilkan dari
c. Elemen identitas operasi alternation adalah

• Sifat
dirinya sendiri : x⏐x = x
string w dengan menghilangkan satu atau lebih distributif concatenation terhadap
simbol paling depan dan/atau simbol paling
• Beberapa kesamaan :
alternation : x (y⏐z) = xy⏐xz
a, b, c, dan ε adalah semua Substring (x)
belakang dari string w tersebut. Contoh : ab, bc,

• Subsequence string w adalah string yang + +


a. Kesamaan ke-1 : (x*)* = (x*)
dihasilkan dari string w dengan menghilangkan b. Kesamaan ke-2 : ε⏐x = x ⏐ε = x*
c. Kesamaan ke-3 : (x⏐y)*
Contoh : abc, ab, bc, ac, a, b, c, dan ε adalah
nol atau lebih simbol dari string w tersebut.
=ε⏐x⏐y⏐xx⏐yy⏐xy⏐yx⏐… = semua string
yang merupakan concatenation dari nol
• Proper Subsequence string w adalah string yang
Subsequence (x)
atau lebih x, y, atau keduanya.
dihasilkan dari string w dengan menghilangkan
2.4 Proses Regulasi Automata dan Bahasa
Contoh : ab, bc, ac, a, b, c, dan ε adalah semua
satu atau lebih simbol dari string w tersebut.
Automata merupakan sekuensi proses secara
otomatis yang menerima input dan menghasilkan
• Concatenation adalah penyambungan dua buah
Subsequence (x)
output yang bersifat diskret. Rangkaian input yang
string. Operator concatenation adalah concate diterima adalah string atau bahasa yang dikenali
atau tanpa lambang. Contoh : concate(xy) = xy = oleh automata. Jika rangkaian input yang diterima
dan dikenali maka mesin menghasilkan output.
• Alternation adalah satu di antara dua buah
abc123
Contoh dari automata yang telah dikenal luas
adalah mesin Mealy dan mesin Moore.
atau ⏐. Contoh : alternate(xy) = x⏐y = abc atau
string. Operator alternation adalah alternate
Bahasa merupakan kumpulan string-string dari
simbol-simbol untuk suatu alfabet, atau rangkaian
• Kleene Closure, berbentuk : x* = ε⏐x⏐xx⏐ … =
123
dari simbol-simbol yang memiliki makna. Dalam

ε⏐x⏐x ⏐x ⏐…
konteks automata, string-string yang di-input ke
2 3
+
dalam otomata harus merupakan bahasa yang dapat
• Positive Closure : x = x⏐xx⏐ … = dikenali oleh aturan pada automata. Aturan pada
x⏐x ⏐x ⏐…
2 3 automata ini disebut sebagai fungsi transisi.
Bahasa memiliki aturan yang disebut sebagai
tata bahasa (grammar). Dalam hubungannya
dengan automata, Noam Chomsky melakukan

“Simulasi Transformasi Regular Expression  Terhadap Finite State Automata”  3
Oleh : Sinar Sinurat 
Pelita Informatika Budi Darma, Volume : IV, Nomor: 1, Agustus 2013 ISSN : 2301-9425
   

penggolongan menjadi 4 (empat) tingkatan Untuk penulisan grammar, maka perlu


bahasa berdasarkan aturan produksinya sebagai memperhatikan tipe grammar sebagai berikut :

1. Grammar G 1 dengan Q 1 = {S → aB, B → bB,


berikut:

B → b}. Ruas kiri semua produksinya terdiri


1. Bahasa Reguler (tipe 3)
Menggunakan Finite State Automata (FSA)
sebagai pengenalnya. FSA umumnya terdiri dari dari sebuah VN maka G1 kemungkinan tipe
sejumlah state (simbol non-terminal) sebagai contex free grammar (CFG) atau regular
kondisi pada automata, alfabet (simbol terminal) grammar (RG). Selanjutnya karena semua ruas
sebagai string input, state awal, state akhir, dan kanannya terdiri dari sebuah VT atau string

2. Grammar G2 dengan Q2 = {S → Ba, B → Bb, B


fungsi-fungsi transisi yang menentukan state VTVN maka G1 adalah RG.

→ b}. Ruas kiri semua produksinya terdiri dari


automata yang aktif setelah menerima string
input tertentu. FSA dapat dibagi menjadi 2 (dua)
jenis, yaitu Non-Deterministic FSA (NFA) dan sebuah VN maka G2 kemungkinan tipe CFG
Deterministic FSA (DFA). Ciri-ciri sekaligus atau RG. Selanjutnya karena semua ruas
perbedaan di antara keduanya antara lain: kanannya terdiri dari sebuah VT atau string

3. Grammar G3 dengan Q3 = {S → Ba, B → bB, B


a. NFA mengandung alfabet serta transisi VTVN maka G2 adalah RG.

→ b}. Ruas kiri semua produksinya terdiri dari


empty (empty string/transition), sedangkan
DFA tidak.
b. State pada NFA dapat terdiri beberapa sebuah VN maka G3 kemungkinan tipe CFG
simbol non-terminal (mis. ABC), sedangkan atau RG. Selanjutnya karena ruas kanannya
state DFA hanya terdiri dari 1 simbol non- mengandung string VTVN (yaitu bB) dan juga
terminal. string VNVT (Ba) maka G3 bukan RG, dengan

4. Grammar G4 dengan Q4 = {S → aAb, B → aB}.


c. Satu alfabet input pada NFA dapat kata lain G3 adalah CFG.
digunakan untuk menuju beberapa state
yang berbeda (probabilitas), sedangkan Ruas kiri semua produksinya terdiri dari sebuah
alfabet input pada DFA hanya menuju 1 VN maka G4 kemungkinan tipe CFG atau RG.
state. Selanjutnya karena ruas kanannya mengandung
2. Bahasa Bebas Konteks (tipe 2) string yang panjangnya lebih dari 2 (yaitu aAb)
Merupakan dasar pembentukan parser maka G4 bukan RG, dengan kata lain G4 adalah
(pemroses analisis sintaksis pada kompilasi)
5. Grammar G5 dengan Q5 = {S → aA, S → aB,
CFG.
yang dideskripsikan secara formal dengan
notasi Backus-Nour Form (BNF) yang aAb → aBCb}. Ruas kirinya mengandung string
dikembangkan oleh Backus (1959) dan Peter yang panjangnya lebih dari 1 (yaitu aAb) maka
Nour (1960). Bahasa ini menggunakan mesin G5 kemungkinan tipe context sensitive grammar
Push-Down Automata. (CSG) atau unrestricted grammar (UG).
3. Bahasa Context-Sensitive (tipe 1) Selanjutnya karena semua ruas kirinya lebih
Digunakan dalam proses analisis semantik dari pendek atau sama dengan ruas kananya maka G5
tahapan kompilasi. Bahasa ini menggunakan
6. Grammar G6 dengan Q6 = {aS → ab, SAc →
adalah CSG.
mesin Linear-Bounded Automata.
4. Bahasa Unrestricted/ Alami (tipe 0) bc}. Ruas kirinya mengandung string yang
Bahasa ini seperti bahasa manusia. panjangnya lebih dari 1 maka G6 kemungkinan
Menggunakan mesin Turing yang dirancang tipe CSG atau UG. Selanjutnya karena terdapat
oleh Alan Mathison Turing. Mesin Turing ruas kirinya yang lebih panjang daripada ruas
digambarkan berupa barisan sel tersusun berupa kananya (yaitu SAc) maka G6 adalah UG.
pita yang dapat bergerak maju mundur,
komponen aktif baca/ tulis pita yang memiliki 2.6. Derivasi Kalimat dan Penentuan Bahasa
status perhitungan serta dapat mengubah/ Untuk menentukan bahasa dari masing-masing
menulisi sel aktif pita. Model ini merupakan
Contoh 1 : G1 dengan Q1 = {1. S → aAa, 2. A →
grammar pada contoh berikut :
suatu kumpulan instruksi yang mendeskripsikan
bagaimana komponen baca/tulis ini harus
A → b}, maka :
aAa, 3.
melakukan modifikasi terhadap sel aktif pada
pita, serta bagaimana menggerakkan pita
derivasi kalimat terpendek : Derivasi kalimat
tersebut. Pada setiap langkah dalam komputasi,
S ⇒ aAa S ⇒ aAa
umum :
mesin ini akan dapat mengubah isi dari sel yang
(1)
aktif, mengubah status dari komponen
⇒ aba ⇒
(1)
baca/tulis, dan mengubah posisi pita ke kiri atau
ke kanan. (3) aaAaa


(2)

2.5 Analisa Penentuan Type Grammar ⇒ anAan (2)

“Simulasi Transformasi Regular Expression  Terhadap Finite State Automata”  4
Oleh : Sinar Sinurat 
Pelita Informatika Budi Darma, Volume : IV, Nomor: 1, Agustus 2013 ISSN : 2301-9425
   

⇒ anban L3 (G3) = { an bncn⏐n ≥ 1}


Dari ke tiga pola kalimat di atas disimpulkan :
(3)

L1(G1)={anban⏐n ≥1}
Dari ke dua pola kalimat diperoleh :
2.7 SCANNING BUFFER

Contoh 2 : G2 dengan Q2 = {1. S → aS, 2. S → aB,


Implementasi Scanner dengan siklus

3. B → bC, 4. C → aC, 5. C → a}, maka :


transformasi : GR→ER→ AHN→AHD→GR.
Sebagai contoh, scanner (yaitu DFA) untuk
derivasi kalimat terpendek : Derivasi kalimat mengenali identifier adalah :

S ⇒ aB (2) ⇒
umum :
S aS

⇒ abC (3) …
(1)

⇒ aba (5) ⇒ an-1S

⇒ anB
(1) Berikut fragmen program dari bahasa pascal :
type Text_Pos = record {posisi penunjuk karakter}

⇒ anbC
(2) Row_Numb : word;
{baris ke-, bisa ribuan
baris/program_sumber}
⇒ anbaC
(3)
Char_Numb : byte;
{karakter ke-, maksimum 255

(4) karakter/baris}

⇒ anbam-1C (4)
end;

⇒ anbam
var Now_Pos : Text_Pos; {posisi sekarang}
(5) Line : string; {baris yang sedang diproses}

L2(G2)={anbam n ≥ ,m ≥
Dari ke dua pola di atas diperoleh : End_of_line : byte;
{posisi akhir baris yang sedang diproses}
procedure Next_Character(var Ft : text); {baca karakter
1}
berikut pada program_sumber}
begin
Contoh 3 : G3 dengan Q3 = {1. S→aSBC, 2. S→ with Now_Pos do { perintah with ... do ?}

3. bB → bb, 4. bC →
abC, begin
if Char_Numb = End_of_line then
bc, begin
5. CB→ BC, 6. List_Line; {menampilkan kembali baris
yang telah dibaca, beserta errornya}
cC→ cc} Next_Line(Ft); {membaca baris berikutnya}
Maka diperoleh : Row_Numb := Row_Numb + 1;
derivasi kalimat terpendek : Derivasi kalimat Char_Numb := 1

S ⇒ abC ⇒
umum : end
(2) S aSBC else

⇒ abc ⇒
(1) Char_Numb := Char_Numb + 1;
(4) aaSBCBC character := Line[Char_Numb]
end
⇒ aaabCBCBC
(1)
end;
Derivasi terpendek 2 : procedure List_Line;

S ⇒ aSBC ⇒ aaabBCCBC
(2) begin
(1) write{Now_Pos.Row_Numb : 3, ‘ ‘);

⇒ aabCBC ⇒ aaabBCBCC
(5) writeln(Line);
(2) List_Error; {menampilkan kesalahan-kesalahan
yang terjadi pada suatu baris}
⇒ aabBCC ⇒ aaabBBCCC
(5)
end
(5) procedure Next_Line(Ft : text);

⇒ aabbCC ⇒ aaabbBCCC
(5) begin
(3) readln(Ft, Line);

⇒ aabbcC ⇒ aaabbbCCC
(3) End_of_line := length(Line) + 1:
(4) Line := Line + #32; {karakter spasi}
end;
⇒ aabbcc ⇒ aaabbbcCC
(3)
(6)
2.8 PENULISAN GRAMMAR

(4)
aaabbbccC Reguler Expression (RE) Vs Context Free
Grammar (CFG). RE⊆CFG : Setiap bentuk yang

(6)
aaabbbccc dapat dideskripsikan oleh RE dapat di deskripsikan
(6) oleh CFG CFG dibentuk dari diagram transisi
dengan aturan :
“Simulasi Transformasi Regular Expression  Terhadap Finite State Automata”  5
Oleh : Sinar Sinurat 
Pelita Informatika Budi Darma, Volume : IV, Nomor: 1, Agustus 2013 ISSN : 2301-9425
   

transisi yang ada, maka jika state ketiga bukan


merupakan anggota himpunan F berarti string
tersebut tidak dapat diterima/dikenali oleh
otomata.

A0 → aA0|bA0|aA1
Misalnya : RE : (a|b)*abb maka CFG:
Contoh komponen-komponen sebuah otomata
A1 → bA2 adalah sebagai berikut:
A2 → bA3 M = (Q,∑,δ,q0,F)
A3 → ∈
∑ = {0,1}
Q = {S,A,B,C}
RE digunakan untuk lexical analysis, alasannya
adalah : q0 = S

δ = {δ(S,0)=B,
1. Penulisan RE lebih sederhana F = {S}

δ(S,1)=A, δ(A,0)=C,
2. Notasi RE lebih mudah dimengerti

δ(A,1)=S, δ(B,0)=S,
3. RE dapat menghasilkan scanner yang efisien

δ(B,1)=C, δ(C,0)=A,
4. Modularisasi analisis
Di sisi lain bahwa RE lebih sesuai untuk δ(C,1)=B}
mendeskripsikan token-token yaitu :

sekaligus state akhir. Fungsi transisi δ(S,0)=B


1. Identifier Pada contoh di atas, S adalah state awal
2. Constant
3. Keyword (reserve word), dan lain-lain berarti bahwa jika state sekarang adalah S dan
Sedangkan CFG lebih mudah untuk alfabet yang di-input adalah 0, maka state berubah
mendeskripsikan struktur tersarang (nested) dan menjadi B.
berpasang (matched) yaitu
1. Tanda kurung yang berpasangan Adapun Tabel dan diagram yang digunakan
2. Begin dan end dalam pembuatan pohon adalah :
3. If dan else 1. Pohon sintaks dari Augmental RE r
4. FOR … do atau while … do

2.9 Finite State Automata


FSA (NFA atau DFA) umumnya terdiri dari:
1. Himpunan state (simbol non-terminal) sejumlah
terhingga yang disimbolkan dengan Q
merupakan “keadaan” pada otomata yang dapat
berubah menjadi state lain setelah menerima
alfabet yang di-input. Dalam penulisan 2. Rules untuk menentukan nullable, firstpos,
himpunan Q, state yang dituliskan pertama kali lastpos
umumnya adalah state awal.

terhingga yang disimbolkan dengan ∑ adalah


2. Himpunan alfabet (simbol terminal) sejumlah

simbol-simbol yang dapat dikenali oleh otomata


ketika di-input sebagai string.

dengan δ mengenali alfabet-alfabet (string)


3. Himpunan fungsi transisi yang disimbolkan

yang di-input pada otomata dan kemudian


merubah state yang berlaku sekarang menjadi
state lain. Misalnya string input terdiri dari 3

sebanyak ≤ 3 kali dengan menggunakan ≤ 3


(tiga) alfabet, maka state dapat berubah 3. Rules untuk menentukan followpos
a. Jika n adalah cat-node left-child c1 dan right-

adalah δ(S,0)=D, yang berarti bahwa jika


fungsi transisi. Contoh sebuah fungsi transisi child c2, dan i adalah posisi dalam lastpos
(c1) maka semua posisi lastpos (c2) adalah
alfabet 0 di-input saat state yang aktif adalah S followpos (i)
maka state yang aktif menjadi D. b. Jika n adalah node start dan i adalah posisi
4. State awal yang disimbolkan dengan q0 adalah dalam lastpos (n) maka semua posisi firstpos
state yang langsung aktif saat automata (n) adalah dalam followpos (i)
dijalankan. State awal berjumlah 1 (satu) buah.
5. Himpunan state akhir (final) yang disimbolkan 3. Simulasi Model Transformasi
dengan F. Misalnya string input terdiri dari 3 3.1 Model
(tiga) alfabet dengan menggunakan fungsi

“Simulasi Transformasi Regular Expression  Terhadap Finite State Automata”  6
Oleh : Sinar Sinurat 
Pelita Informatika Budi Darma, Volume : IV, Nomor: 1, Agustus 2013 ISSN : 2301-9425
   

Diberikan sembarang ekspressi reguler (RE), Simulasi DFA dimaksudkan untuk mengenali
misalkan: r=(a|b)*abb, maka langkah-langkah untuk token.
mengkonversikan adalah sebagai berikut : type Token_Kind = record
1. Tambahkan augmented pada RE yaitu : tipe : byte; nilai : byte
r = ( a | b ) *a b b # end;
2. Berikan indeks untuk masing-masing karakter var Token : array[0..Max_State] of Token_Kind;
yang ada pada RE untuk menyatakan posisi Found_Token : Token_Kind; {token yang
node dalam pohon yaitu : ditemukan}
r = ( a | b )* a b b # Tok_Pos : Text_Pos; {posisi token dalam
1 2 3 4 5 6 program sumber}
3. Buatlah pohon sintaks untuk menyatakan nilai procedure Next_Token(var Ft : text); {digunakan untuk
firstpost, lastpos dan nullable yaitu : mengenali sebuah token}
var state1, state2 : shortint;
begin
state1 := 0;
Tok_Pos := Now_Pos;
repeat
state2 := Next_State(state1, character);
if state2 <> -1 then {-1 bersesuaian dengan x pada
tabel transisi}
begin
state1 := state2;
Next_Character(Ft); {baca karakter berikut
pada program_sumber}
4. Buatlah tabel Followpos dalam Himpunan {di antaranya menghasilkan nilai baru untuk
posisi semua simbol terletak pada sesudah Now_Pos}
symbol pada posisi n masing-masing node pada end;
langkah 2 yaitu : until state2 = -1;
Node Followpos Act_for_Token(state1);
1 {1,2,3} end;
2 {1,2,3} procedure Act_for_Token(state : shortint);
var Tok_Length : byte;
3 {4}
Err : integer;
4 {5}
begin
5 {6} Current_Token(Token[state].tipe,
6 - Token[state].nilai);
Tok_Length := Now_Pos.Char_Numb -
5. Berdasarkan tabel pada langkah 4 dapat dibuat Tok_Pos.Char_Numb;
diagram transisi NFA (Digraph untuk fungsi case Token[state].tipe of
followpos) yaitu : 0 : Error(‘Token tidak dikenal!’, Tok_Pos);
27 : Id := copy(Line, Tok_Pos.Char_Num,
Tok_Length);
28 : val(copy(Line, Tok_Pos.Char_Num,
Tok_Length), IN, Err);
29 : val(copy(Line, Tok_Pos.Char_Num,
6. Buatlah tabel DFA dengan menggunakan tabel Tok_Length), RN, Err);
followpos yaitu : end
end;

catatan :
- copy(string, start, length) mengembalikan substring
- val(string_value, number_variable, error_flag) :
jika string_value = ‘137’ maka number_variable =
137 dan error_flag = 0

137 dan error_flag ≠ 0


jika string_value = ‘string’ maka number_variable =

7. Bentuklah diagram transisi DFA dari tabel - Token.tipe ∈ {1, 2, 3, ..., 26} dimisalkan bernilai pasti,
langkah 6 yaitu : sehingga tidak perlu penangan-an lebih lanjut

procedure Current_Token(tipe, nilai : byte);


begin
Found_Token.tipe := tipe;
Found_Token.nilai := nilai;
end;
3.2 Simulasi DFA

“Simulasi Transformasi Regular Expression  Terhadap Finite State Automata”  7
Oleh : Sinar Sinurat 
Pelita Informatika Budi Darma, Volume : IV, Nomor: 1, Agustus 2013 ISSN : 2301-9425
   

4. Implementasi 6. Ambil posisi firstpos pada root untuk dijadikan


4.1 Form Ekspressi Reguler menjadi set root.
Pada form ini dilakukan penginputan string
untuk state, dan fungsi transisi dari NFA yang akan 5. Kesimpulan dan Saran.
diproses (ditransformasi). 5.1 Kesimpulan
Berdasarkan uraian dari bab I hingga bab IV
Algoritma dalam penginputan state adalah sebagai maka dapat diambil kesimpulan sebagai berikut :
berikut: 1. Konversi ekspressi reguler menjadi DFA
1. Input string menjadi dasar pembentukan grammar pada
2. Jika string yang diinput adalah string akhir, beri bahasa dalam proses kompilasi
tanda pada kotak cek Final. 2. Konversi ini merupakan dasar analisa sintaksis
Algoritma dalam penginputan fungsi transisi adalah dan semantik pada proses kompilasi
sebagai berikut: 3. Dapat dijadikan sebagai media pembelajaran
a. Input state.
b. Cari state tersebut pada tabel transisi. 5.2 Saran
i. Jika state tersebut tidak ada, kembali ke Demi kesempurnaan paper ini, perlu beberapa
langkah a. saran sebagai berikut :
ii. Jika state tersebut ada, dilanjutkan ke 1. Untuk dikembangkan dalam dalam beberapa
langkah c. bahasa pemrograman yang dinamis
c. Input alfabet. 2. Penguraian dalam topik ini masih banyak yang
d. Cari alfabet tersebut pada tabel transisi. menyertakan teori-teori yang vital. Oleh karena
i. Jika alfabet tersebut tidak ada, maka kembali itu untuk para pengembang selanjutnya dapat
ke langkah c. melengkapinya.
ii. Jika alfabet tersebut ada, dilanjutkan ke
langkah e. Daftar Pustaka
e. Input state tujuan dari fungsi transisi.
f. Cari state tujuan tersebut pada tabel transisi 1. Sanjay Bhargava, G.N. Purohit, “Construction
i. Jika state tersebut tidak ada, kembali ke of a Minimal Deterministic Finite Automaton
langkah f. from a Regular Expression”, Department Of
ii. Jika state tersebut ada, dilanjutkan ke Computer Science Banasthali unversity, 2011
langkah g. 2. John E. Hopcroft, Rajeev Motwani, Jeffrey D.
g. Tambahkan fungsi transisi ke dalam tabel
Ulman, “Teori Bahasa dan Otomata”, 2nd , Andi
transisi. Offset, 2007
3. Marco Almeida, Nelma Moreira, Rog´erio
4.2 Form Fungsi Pohon Transisi Reis,“Exact Generation of Minimal Acyclic
Form ini menampilkan simulasi proses Deterministic Finite Automata”, Technical
pembentukan pohon fungsi transisi state yang Report Series: DCC-2007-05 Version 1.0
memiliki transisi atas input firstpos, lastpos dan 4. Carmen Galvez and Félix Moya-
nullable. Anegón,“Approximate Personal Name-
Algoritma proses ini adalah sebagai berikut: Matching Through Finite-State Graphs”,
1. Mulai dari leaf hingga root Department of information Science, University
2. Cek apakah node untuk fungsi and or atau of Granada, Campus Cartuja, Colegio Máximo,
fungsi * closure dan + closure. 18071, Granada, Spain, 2007
3. Untuk masing-masing node akan diberi 3 nilai 5. Paritosh K. Pandya , “Finite State Automata
di mana untuk setiap leaf bahwa firstpos dan Automata: Theory and Practice”, (TIFR,
lastpos dari indeks yang ada pada pohon Mumbai, India), Unversity of Trento, 10-24
sedangkan nullable diberi nilai false. May 2005
4. Untuk selanjutnya pada proses pemberian 6. H. Aho, Alfred V., Ravi Sethi and Jeffrey D.
nullable dilakukan berdasarkan tabel kebenaran Ulman, “Compiler : Principle, Techniques and
ke dua ruas kanan dan ruas kiri. Dengan cara Tools”, Addition-Wesley Publishing Company,
yang sama sehingga semua posisi node akan (1986)
mendapatkan nilai nullable 7. Pittman, Thomas and James Peters, “The Art
5. Untuk pemberian nilai firstpos dan laspos untuk Compiler Design : Theory and Practice”,
masing-masing node selain leaf gunakanlah Prentice – Hall, (1992)
tabel rules untuk nullabel, firstpos dan lastpos. 8. Aho, Alfred V., Ravi Sethi and Jeffrey D.
Ulangi dengan cara yang sama sehinga semua Ulman, “Principles of Compiler Design”,
node akan terisi nilai firstpos dan lastpos Addison-Wesley, (1977)
9. Sumantri Slamet, Heru Suhartanto, “Teknik
Kompilasi”, PT. Elex Media Computindo, 1993.

“Simulasi Transformasi Regular Expression  Terhadap Finite State Automata”  8
Oleh : Sinar Sinurat 

Anda mungkin juga menyukai