• Tidak ada hasil yang ditemukan

1. jurnal Sinar sinurat.pdf

N/A
N/A
Protected

Academic year: 2021

Membagikan "1. jurnal Sinar sinurat.pdf"

Copied!
8
0
0

Teks penuh

(1)

“Simulasi

“Simulasi TransformasiTransformasi RegularRegular ExpressionExpression TerhadapTerhadap FiniteFinite StateState Automata”Automata” 11

SIMULASI TRANSFORMASI REGULAR EXPRESSION

SIMULASI TRANSFORMASI REGULAR EXPRESSION

TERHADAP FINITE STATE AUTOMATA

TERHADAP FINITE STATE AUTOMATA

Sinar Sinurat

Sinar Sinurat

Dosen Tetap STMIK Budi Darma Medan Dosen Tetap STMIK Budi Darma Medan

Jl. Sisingamangaraja No. 338 Simpang Limun Medan Jl. Sisingamangaraja No. 338 Simpang Limun Medan www.stmik-budidarma.ac.id

www.stmik-budidarma.ac.id // E-Mail :[email protected] // E-Mail :[email protected]

 ABSTRAK  ABSTRAK  Automata adalah aktivitas

 Automata adalah aktivitas yang mengurusi persoalan yang mengurusi persoalan formalisasi tatabahasa (grammar) dengan formalisasi tatabahasa (grammar) dengan alat bantualat bantu mesin matematis. Finite State Automata (FSA) terdiri dari Non-Deterministic FSA (NFSA) dan Deterministic 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 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 mengandung unsur : Grammar (tata bahasa), Parsing (mengurai string-string dalam buffer), Scanning (membaca data streaming ke dalam buffer)

(membaca data streaming ke dalam buffer)  Dalam

 Dalam paper paper mencakup mencakup bahasan bahasan bagaimana bagaimana proses proses transformasi transformasi reguler reguler expression expression ke ke DFA DFA dan dan NFANFA dengan menguraikan tahap demi tahap hingga muncul diagram transisi yang akan digunakan untuk meregulasi dengan menguraikan tahap demi tahap hingga muncul diagram transisi yang akan digunakan untuk meregulasi bahasa.

bahasa.

Paper ini akan menghasilkan diagram transisi yang bersifat non deterministik dan deterministik, dan Paper ini akan menghasilkan diagram transisi yang bersifat non deterministik dan deterministik, dan sebelumnya tabel diagram transisi sudah terbentuk.

sebelumnya tabel diagram transisi sudah terbentuk. Kata Kunci : Buffer,

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

1.

1. PendahuluanPendahuluan 1.1.

1.1. Latar BelakangLatar Belakang

Teori bahasa adalah salah satu topik materi Teori bahasa adalah salah satu topik materi  pendukung yang membicarakan formalisasi (

 pendukung yang membicarakan formalisasi ( formal formal language

language), ), terutama terutama untuk untuk kepentingankepentingan  perancangan

 perancangan kompilator kompilator ((compiler compiler ) dan pemroses) dan pemroses naskah (

naskah (text processor text processor ). Bahasa formal adalah). Bahasa formal adalah kumpulan

kumpulan kalimat kalimat . Semua kalimat dalam sebuah. Semua kalimat dalam sebuah  bahasa

 bahasa dibangkitkan dibangkitkan oleh oleh sebuah sebuah tata tata bahasabahasa ((grammar grammar ) yang sama. Sebuah bahasa formal bisa) yang sama. Sebuah bahasa formal bisa dibangkitkan oleh dua atau lebih tata bahasa dibangkitkan oleh dua atau lebih tata bahasa  berbeda. Dikatakan

 berbeda. Dikatakan bahasa bahasa formal karena formal karena grammargrammar diciptakan mendahului pembangkitan setiap diciptakan mendahului pembangkitan setiap kalimatnya. Bahasa manusia bersifat sebaliknya; kalimatnya. Bahasa manusia bersifat sebaliknya; grammar diciptakan untuk meresmikan kata-kata grammar diciptakan untuk meresmikan kata-kata yang hidup di masyarakat. Dalam pembicaraan yang hidup di masyarakat. Dalam pembicaraan selanjutnya ‘bahasa formal’ akan disebut ‘bahasa’ selanjutnya ‘bahasa formal’ akan disebut ‘bahasa’ saja. Mengenali (

saja. Mengenali (recognizerecognize), menerima (), menerima (accept accept ),), atau membangkitkan (

atau membangkitkan (generategenerate) sebuah kalimat) sebuah kalimat dalam bahasa tertentu.

dalam bahasa tertentu.

Automata secara umum dipelajari bersama Automata secara umum dipelajari bersama dengan teori bahasa. Alasan yang mendasar adalah dengan teori bahasa. Alasan yang mendasar adalah sebagai berikut :

sebagai berikut : 1.

1. RangkaianRangkaian input input  dapat dianggap sebagai bahasa dapat dianggap sebagai bahasa yang harus dikenali oleh automata tersebut. yang harus dikenali oleh automata tersebut. 2.

2. Automata Automata dapat dapat berfungsi berfungsi untukuntuk membangkitkan bahasa tertentu yang aturannya membangkitkan bahasa tertentu yang aturannya ditentukan oleh tata bahasa (

ditentukan oleh tata bahasa (grammar grammar ) tertentu.) tertentu. Beberapa perbedaan di antara keduanya adalah Beberapa perbedaan di antara keduanya adalah  bahwa

 bahwa DFA DFA menerima menerima sebuahsebuah input input   dimana  dimana statestate tujuan dari

tujuan dari input input   tersebut adalah satu, sedangkan  tersebut adalah satu, sedangkan  NDFA

 NDFA dapat dapat menuju menuju beberapabeberapa statestate tujuan untuktujuan untuk

input 

input   yang sama. Perbedaan lainnya adalah DFA  yang sama. Perbedaan lainnya adalah DFA tidak menerima

tidak menerima input input  kosong ( kosong (emptyempty), tidak seperti), tidak seperti  NDFA. FSA yang

 NDFA. FSA yang biasanya pertama biasanya pertama kali dkali dirancangirancang adalah NFA, dan kemudian ditransformasi ke adalah NFA, dan kemudian ditransformasi ke  bentuk

 bentuk DFA DFA sebagai sebagai bentuk bentuk yang yang lebih lebih minimalminimal dan efisien. Dalam proses transformasi, umumnya dan efisien. Dalam proses transformasi, umumnya dilakukan beberapa tahapan khusus dan kompleks. dilakukan beberapa tahapan khusus dan kompleks. 1.2.

1.2. TujuanTujuan

Adapun tujuan yang ingin dicapai adalah: Adapun tujuan yang ingin dicapai adalah: 1.

1. Untuk Untuk mengetahui mengetahui proses proses transformasitransformasi (konversi) ekspressi reguler ke bentuk DFA (konversi) ekspressi reguler ke bentuk DFA yang efektif dan lebih praktis.

yang efektif dan lebih praktis. 2.

2. Untuk memberikan deskripsi yang lebih praktisUntuk memberikan deskripsi yang lebih praktis dalam pemahaman proses regulasi bahasa dalam pemahaman proses regulasi bahasa  beserta proses pem

 beserta proses pembuatan diagram transisi.buatan diagram transisi. 3.

3. Untuk memberi kemudahan terhadap paraUntuk memberi kemudahan terhadap para  pemrogram

 pemrogram untuk untuk membuatmembuat codingcoding  dalam  dalam  bahasa

 bahasa pemrogramapemrograman n yang yang sesuai sesuai dengandengan keinginan.

keinginan. 1.3.

1.3. Identifikasi MasalahIdentifikasi Masalah

Agar pembahasan tidak terlalu meluas dan tidak Agar pembahasan tidak terlalu meluas dan tidak menyimpang dari tujuan maka maka unsur-unsur menyimpang dari tujuan maka maka unsur-unsur yang akan dibahas adalah sebagai berikut :

yang akan dibahas adalah sebagai berikut : 1.

1. Pemberian Pemberian input input ekpressi ekpressi reguler reguler yangyang sederhana dan memenuhi kaidah

sederhana dan memenuhi kaidahgrammar grammar  2.

2. Proses transformasi ekspressi reguler ke NFAProses transformasi ekspressi reguler ke NFA kemudian kebentuk DFA dilakukan dengan kemudian kebentuk DFA dilakukan dengan tahap-tahap.

tahap-tahap. 3.

3. Tahap demi tahap transformasi mengandungTahap demi tahap transformasi mengandung langkah-langkah yang diulang (iterasi).

(2)

“Simulasi Transformasi Regular Expression Terhadap Finite State Automata” 2 1.4. Batasan Masalah

Agar pembahasan lebih fokus diberikan  batasan yaitu:

1. Input   ekspressi reguler/ bahasa reguler sembarang

2. Proses transformasi (konversi) dalam domain  prinsip-prinsip kompilasi

3. State-state  yang diterima adalah simbol non-terminal berupa 1 karakter huruf kapital atau angka.

4. Alfabet-alfabet yang diterima sebagai input  untuk otomata adalah 1 karakter sembarang (non kapital jika huruf) dan alfabet empty (ε)

sebagai karakter spasi (blank ).

5. Tidak membahas penentuan inaccessible state danstateekuivalen.

1.5. Metode Penelitian

Penyelesaian paper ini dilakukan dengan cara : 1. Kepustakaan

a. Mencari sejumlah literatur yang  berhubungan dengan automata dan kompilasi baik berupa buku, artikel (majalah maupun internet),source code program, dan sebagainya.

 b. Mencari bentuk konversi yang lebih mudah dipahami dan diterakan ke dalam bahasa  pemrograman

c. Merancang algoritma yang

menginterpretasikan seluruh langkah teoritis dalam bentuk pseudo code

2. Laboratorium

a. Merancang coding program yang dapat dikompilasi sewaktu-waktu

 b. Menguji program dengan sejumlah input ekpressi reguler yang bervariasi

c. Validasi dengan sejumlah teori dan mencatat sejumlah perbedaan antara teori dan praktek

d. Implementasi 2. Dasar Teoritis

2.1 Beberapa Pengertian Dasar

Proses penerjemahan suatu bahasa sumber (source program) menjadi bahasa target (target  program), biasanya dilakukan dengan proses

kompilasi, perhatikan diagram berikut :

Beberapa tools software yang dapat digunakan  bahasa sumber seperti :

1. Structure Editor  : mengambil sejumlah untaian  perintah untuk dibangun menjadi bahasa sumber, membuat teks, dan memodifikasi

fungsi yang aneh serta menganalisa teks  program dalam bentuk hirarki

2. Pretty Printer  : menganalisa suatu program dan cetakan dengan beberapa cara sehingga struktur program menjadi jelas, misalnya  berupa font tertentu, indend (tab)

3. Static Checker   : membaca, mengalisa, menempatkan program dalam posisi tawaran  perubahan serta mendeteksi program tanpa  pernah dieksekusi

4.  Interpreter   : menghasilkan suatu target  program sebagai suatu translasi untuk dipakai

menjadi source program

Program-program yang menggunakan teknologi kompiler konvensional antara lain :

1. Text Formatter  : mengambil input sebagai stream karakter termasuk perintah untuk mengenali paragraf, gambar atau struktur matematika (subscript, superscript)

2. Silicon Compiler   : fungsional  programming languange  di mana variabel-variabel merepresentasi bahasa untuk signal logika (0 or 1 or grup signal) tidak berada di memory akan tetapi ada di rangkaianswitching

3. Query Interpreter   : menerjemahkan predikat relasi dan operator boolean menjadi command untuk mencari database records yang memenuhi predikat

Beberapa pemahaman dasar untuk mengenali (recognize), menerima (accept ), ataupun membangkitkan (generate) sebuah kalimat dalam  bahasa tertentu adalah sebagai berikut :

1. Simbol adalah sebuah entitas abstrak (seperti halnya pengertian titik dalam geometri). Sebuah huruf atau sebuah angka adalah contoh simbol.

2. String adalah deretan terbatas ( finite) simbol-simbol. Sebagai contoh, jikaa, b, danc adalah tiga buah simbol maka abcb adalah sebuah string yang dibangun dari ketiga simbol tersebut.

3. Jika w adalah sebuah string maka panjang string dinyatakan sebagai

w

  dan didefinisikan sebagai cacahan (banyaknya) simbol yang menyusun string tersebut. Sebagai contoh, jikaw=abcb maka

w

= 4.

4. String hampa adalah sebuah string dengan nol  buah simbol. String hampa dinyatakan dengan simbol

ε

  (atau ^) sehingga

⎪ε⎪

= 0. String hampa dapat dipandang sebagai simbol hampa karena keduanya tersusun dari nol buah simbol. 5. Alfabet adalah hinpunan hingga ( finite set )

simbol-simbol

2.2 Operasi Dasar String

Diberikan dua string : x =abc dan y=123

Prefix  string w  adalah string dihasilkan dari

string w  dengan menghilangkan nol atau lebih simbol-simbol paling belakang dari string w

(3)

“Simulasi Transformasi Regular Expression Terhadap Finite State Automata” 3

tersebut. Contoh : abc, ab, a, dan

ε

  adalah

semua Prefix( x)

Proper Prefix  string w adalah string dihasilkan dari string w  dengan menghilangkan satu atau lebih simbol-simbol paling belakang dari string w tersebut. Contoh : ab, a, dan

ε

 adalah semua Proper Prefix( x)

Postfix (Suffix) string w adalah string dihasilkan dari string w  dengan menghilangkan nol atau lebih simbol paling depan dari stringw tersebut. Contoh : abc, bc, c, dan

ε

  adalah semua Postfix( x)

Proper Postfix  (atau Proper Suffix) string w adalah string yang dihasilkan dari string w dengan menghilangkan satu atau lebih simbol  paling depan dari stringw tersebut. Contoh :bc,

c, dan

ε

 adalah semua Proper Postfix( x).

 Head string w adalah simbol paling depan dari stringw. Contoh :a adalah Head( x).

Tail string wadalah string dihasilkan dari string w  dengan menghilangkan simbol paling depan dari stringwtersebut. Contoh :bc adalah Tail( x)

Substring w adalah string dihasilkan dari string w dengan menghilangkan nol atau lebih simbol  paling depan dan/atau simbol paling belakang

dari stringw tersebut. Contoh :abc,ab,bc,a,b, c, dan

ε

 adalah semua Substring ( x)

Proper Substring w adalah string dihasilkan dari stringw dengan menghilangkan satu atau lebih simbol paling depan dan/atau simbol paling  belakang dari stringw tersebut. Contoh :ab,bc,

a,b, c, dan

ε

 adalah semua Substring ( x)

Subsequence  string w  adalah string yang dihasilkan dari stringw dengan menghilangkan nol atau lebih simbol dari string w  tersebut. Contoh : abc, ab, bc, ac, a, b, c, dan

ε

  adalah Subsequence ( x)

Proper Subsequence stringw adalah string yang dihasilkan dari stringw dengan menghilangkan satu atau lebih simbol dari string w  tersebut. Contoh :ab, bc, ac,a,b, c, dan

ε

 adalah semua Subsequence ( x)

Concatenation adalah penyambungan dua buah string. Operator concatenation  adalah concate atau tanpa lambang. Contoh :concate( xy) = xy= abc123

 Alternation  adalah satu di antara dua buah string. Operator alternation  adalah alternate atau

. Contoh : alternate( xy) = x

 y = abc atau 123

Kleene Closure, berbentuk : x* =

ε⏐

 x

 xx

 … =

ε⏐

 x

 x2

 x3

Positive Closure :  x =  x

 xx

… =  x

 x2

 x

+

3

2.3 Beberapa Sifat Operasi

Sejumlah operasi string yang dapat digunakan untuk transformasi adalah :

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

Selalu berlaku : x = Head( x)Tail( x)

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

 Postfix( x)

Selalu berlaku : ProperPrefix( x)

ProperPostfix( x)

Selalu berlaku : Head( x)

 Tail( x)

Setiap Prefix( x), ProperPrefix( x), Postfix( x), ProperPostfix( x), Head( x), dan Tail( x) adalah Substring( x), tetapi tidak sebaliknya

Setiap Substring( x) adalah Subsequence( x), tetapi tidak sebaliknya

Dua sifat aljabar concatenation :

a. Operasi concatenation bersifat asosiatif :  x( yz) = ( xy) z

 b. Elemen identitas operasi concatenation adalah

ε

 :

ε

 x= x

ε

 = x

Tiga sifat aljabar alternation :

a. Operasi alternation bersifat komutatif :  x

 y = y

 x

 b. Operasi alternation bersifat asosiatif :  x

( y

 z) = ( x

 y)

 z

c. Elemen identitas operasi alternation adalah dirinya sendiri : x

 x = x

Sifat distributif concatenation terhadap alternation : x ( y

 z) = xy

 xz

Beberapa kesamaan :

a. Kesamaan ke-1 : ( x*)* = ( x*)

 b. Kesamaan ke-2 :

ε⏐

 x

+

 = x

+

⏐ε

 = x* c. Kesamaan ke-3 : ( x

 y)*

=

ε⏐

 x

 y

 xx

 yy

 xy

 yx

… = semua string yang merupakan concatenation dari nol atau lebih x, y, atau keduanya.

2.4 Proses Regulasi Automata dan Bahasa

Automata merupakan sekuensi proses secara otomatis yang menerima input   dan menghasilkan output  yang bersifat diskret. Rangkaian input  yang diterima adalah string atau bahasa yang dikenali oleh automata. Jika rangkaian input   yang diterima dan dikenali maka mesin menghasilkan output . Contoh dari automata yang telah dikenal luas adalah mesin Mealy dan mesin Moore.

Bahasa merupakan kumpulan string-string dari simbol-simbol untuk suatu alfabet, atau rangkaian dari simbol-simbol yang memiliki makna. Dalam konteks automata, string-string yang di-input  ke dalam otomata harus merupakan bahasa yang dapat dikenali oleh aturan pada automata. Aturan pada automata ini disebut sebagai fungsi transisi.

Bahasa memiliki aturan yang disebut sebagai tata bahasa (grammar ). Dalam hubungannya dengan automata, Noam Chomsky melakukan

(4)

“Simulasi Transformasi Regular Expression Terhadap Finite State Automata” 4  penggolongan menjadi 4 (empat) tingkatan

 bahasa berdasarkan aturan produksinya sebagai  berikut:

1. Bahasa Reguler (tipe 3)

Menggunakan Finite State  Automata  (FSA) sebagai pengenalnya. FSA umumnya terdiri dari sejumlah state  (simbol non-terminal) sebagai kondisi pada automata, alfabet (simbol terminal) sebagai string input , state awal, state akhir, dan fungsi-fungsi transisi yang menentukan state automata yang aktif setelah menerima string input  tertentu. FSA dapat dibagi menjadi 2 (dua)  jenis, yaitu Non- Deterministic  FSA (NFA) dan  Deterministic  FSA (DFA). Ciri-ciri sekaligus  perbedaan di antara keduanya antara lain:

a.  NFA mengandung alfabet serta transisi empty (empty string/transition), sedangkan DFA tidak.

 b. State  pada NFA dapat terdiri beberapa simbol non-terminal (mis. ABC), sedangkan state  DFA hanya terdiri dari 1 simbol non-terminal.

c. Satu alfabet input   pada NFA dapat digunakan untuk menuju beberapa state yang berbeda (probabilitas), sedangkan alfabet input   pada DFA hanya menuju 1 state.

2. Bahasa Bebas Konteks (tipe 2)

Merupakan dasar pembentukan  parser  (pemroses analisis sintaksis pada kompilasi) yang dideskripsikan secara formal dengan notasi  Backus- Nour  Form  (BNF) yang dikembangkan oleh Backus (1959) dan Peter  Nour (1960). Bahasa ini menggunakan mesin

Push- Down Automata.

3. BahasaContext -Sensitive (tipe 1)

Digunakan dalam proses analisis semantik dari tahapan kompilasi. Bahasa ini menggunakan mesin Linear-Bounded  Automata.

4. BahasaUnrestricted / Alami (tipe 0)

Bahasa ini seperti bahasa manusia. Menggunakan mesin Turing yang dirancang oleh Alan Mathison Turing. Mesin Turing digambarkan berupa barisan sel tersusun berupa  pita yang dapat bergerak maju mundur, komponen aktif baca/ tulis pita yang memiliki status perhitungan serta dapat mengubah/ menulisi sel aktif pita. Model ini merupakan suatu kumpulan instruksi yang mendeskripsikan  bagaimana komponen baca/tulis ini harus melakukan modifikasi terhadap sel aktif pada  pita, serta bagaimana menggerakkan pita tersebut. Pada setiap langkah dalam komputasi, mesin ini akan dapat mengubah isi dari sel yang aktif, mengubah status dari komponen  baca/tulis, dan mengubah posisi pita ke kiri atau

ke kanan.

2.5 Analisa PenentuanType Grammar

Untuk penulisan grammar , maka perlu memperhatikan tipe grammar sebagai berikut : 1. Grammar G1 dengan Q1 = {S

 aB, B

 bB,

B

  b}. Ruas kiri semua produksinya terdiri dari sebuah V N  maka G1  kemungkinan tipe

contex free grammar (CFG) atau regular grammar (RG). Selanjutnya karena semua ruas kanannya terdiri dari sebuah VT  atau string

VTV N maka G1 adalah RG.

2. Grammar G2 dengan Q2 = {S

 Ba, B

 Bb, B

 b}. Ruas kiri semua produksinya terdiri dari sebuah V N  maka G2  kemungkinan tipe CFG

atau RG. Selanjutnya karena semua ruas kanannya terdiri dari sebuah VT  atau string

VTV N maka G2 adalah RG.

3. Grammar G3 dengan Q3 = {S

 Ba, B

 bB, B

 b}. Ruas kiri semua produksinya terdiri dari sebuah V N  maka G3  kemungkinan tipe CFG

atau RG. Selanjutnya karena ruas kanannya mengandung string VTV N  (yaitu bB) dan juga

string V NVT  (Ba) maka G3  bukan RG, dengan

kata lain G3 adalah CFG.

4. Grammar G4 dengan Q4 = {S

 aAb, B

 aB}.

Ruas kiri semua produksinya terdiri dari sebuah V N  maka G4  kemungkinan tipe CFG atau RG.

Selanjutnya karena ruas kanannya mengandung string yang panjangnya lebih dari 2 (yaitu aAb) maka G4 bukan RG, dengan kata lain G4 adalah

CFG.

5. Grammar G5  dengan Q5  = {S

  aA, S

  aB,

aAb

 aBCb}. Ruas kirinya mengandung string yang panjangnya lebih dari 1 (yaitu aAb) maka G5 kemungkinan tipecontext sensitive grammar

(CSG) atau unrestricted grammar (UG). Selanjutnya karena semua ruas kirinya lebih  pendek atau sama dengan ruas kananya maka G5

adalah CSG.

6. Grammar G6  dengan Q6  = {aS

  ab, SAc

 bc}. Ruas kirinya mengandung string yang  panjangnya lebih dari 1 maka G6 kemungkinan

tipe CSG atau UG. Selanjutnya karena terdapat ruas kirinya yang lebih panjang daripada ruas kananya (yaitu SAc) maka G6 adalah UG.

2.6. Derivasi Kalimat dan Penentuan Bahasa Untuk menentukan bahasa dari masing-masing grammar pada contoh berikut :

Contoh 1 : G1 dengan Q1 = {1. S

aAa, 2. A

aAa, 3.

A

 b}, maka :

derivasi kalimat terpendek : Derivasi kalimat umum : S

aAa (1) S

 aAa (1)

aba (3)

  aaAaa (2)

 anAan (2)

(5)

“Simulasi Transformasi Regular Expression Terhadap Finite State Automata” 5

 an ban  (3)

Dari ke dua pola kalimat diperoleh : L1(G1)={an ban

n

1}

Contoh 2 : G2 dengan Q2 = {1. S

 aS, 2. S

 aB,

3. B

 bC, 4. C

 aC, 5. C

 a}, maka : derivasi kalimat terpendek : Derivasi kalimat

umum : S

aB (2) S

aS (1)

abC (3)

 aba (5)

 an-1S (1)

 anB (2)

 an bC (3)

 an baC (4)

 an bam-1C (4)

 an  bam (5) Dari ke dua pola di atas diperoleh :

L2(G2)={an bam n

,m

1}

Contoh 3 : G3  dengan Q3  = {1. S

aSBC, 2. S

abC, 3. bB

 bb, 4. bC

 bc, 5. CB

BC, 6. cC

 cc} Maka diperoleh :

derivasi kalimat terpendek : Derivasi kalimat umum :

S

abC (2) S

  aSBC

(1)

abc (4)

  aaSBCBC

(1)

Derivasi terpendek 2 :

  aaabCBCBC (2) S

aSBC (1)

  aaabBCCBC   (5)

aabCBC (2)

 aaabBCBCC   (5)

aabBCC (5)

  aaabBBCCC   (5)

aabbCC (3)

 aaabbBCCC   (3)

aabbcC (4)

 aaabbbCCC   (3)

aabbcc (6)

 aaabbbcCC   (4)

  aaabbbccC   (6)

  aaabbbccc   (6)

Dari ke tiga pola kalimat di atas disimpulkan : L3 (G3) = { an bncn

n

 1}

2.7 SCANNING BUFFER

Implementasi Scanner dengan siklus transformasi : GR 

ER 

AHN

AHD

GR. Sebagai contoh, scanner (yaitu DFA) untuk mengenali identifier adalah :

Berikut fragmen program dari bahasa pascal : type Text_Pos = record {posisi penunjuk karakter}

Row_Numb : word;

{baris ke-, bisa ribuan  baris/program_sumber}

Char_Numb : byte;

{karakter ke-, maksimum 255 karakter/baris}

end;

var Now_Pos : Text_Pos; {posisi sekarang} Line : string; {baris yang sedang diproses} End_of_line : byte;

{posisi akhir baris yang sedang diproses}  procedure Next_Character(var Ft : text); {baca karakter

 berikut pada program_sumber}  begin

with Now_Pos do { perintah with ... do ?}  begin

if Char_Numb = End_of_line then  begin

List_Line; {menampilkan kembali baris yang telah dibaca, beserta errornya}

Next_Line(Ft); {membaca baris berikutnya} Row_Numb := Row_Numb + 1; Char_Numb := 1 end else Char_Numb := Char_Numb + 1; character := Line[Char_Numb] end end;  procedure List_Line;  begin write{Now_Pos.Row_Numb : 3, ‘ ‘); writeln(Line);

List_Error; {menampilkan kesalahan-kesalahan yang terjadi pada suatu baris}

end

 procedure Next_Line(Ft : text);  begin

readln(Ft, Line);

End_of_line := length(Line) + 1: Line := Line + #32; {karakter spasi} end;

2.8 PENULISAN GRAMMAR

Reguler Expression (RE) Vs Context Free Grammar (CFG). RE

CFG : Setiap bentuk yang dapat dideskripsikan oleh RE dapat di deskripsikan oleh CFG CFG dibentuk dari diagram transisi

(6)

“Simulasi Transformasi Regular Expression Terhadap Finite State Automata” 6 Misalnya : RE : (a|b)*abb maka CFG:

A0

 aA0|bA0|aA1

A1

 bA2

A2

 bA3

A3

→ ∈

RE digunakan untuk lexical analysis, alasannya adalah :

1. Penulisan RE lebih sederhana 2.  Notasi RE lebih mudah dimengerti

3. RE dapat menghasilkan scanneryang efisien 4. Modularisasi analisis

Di sisi lain bahwa RE lebih sesuai untuk mendeskripsikan token-token yaitu : 1. Identifier

2. Constant

3. Keyword (reserve word), dan lain-lain

Sedangkan CFG lebih mudah untuk mendeskripsikan struktur tersarang (nested) dan  berpasang (matched) yaitu

1. Tanda kurung yang berpasangan 2. Begin dan end

3. If dan else

4. FOR … do atau while … do 2.9 Finite State Automata

FSA (NFA atau DFA) umumnya terdiri dari: 1. Himpunanstate (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 himpunan Q, state yang dituliskan pertama kali umumnya adalahstate awal.

2. Himpunan alfabet (simbol terminal) sejumlah terhingga yang disimbolkan dengan

  adalah simbol-simbol yang dapat dikenali oleh otomata ketika di-input  sebagai string.

3. Himpunan fungsi transisi yang disimbolkan dengan

δ

  mengenali alfabet-alfabet (string) yang di-input   pada otomata dan kemudian merubah state  yang berlaku sekarang menjadi state  lain. Misalnya string input   terdiri dari 3 (tiga) alfabet, maka state  dapat berubah sebanyak

  3 kali dengan menggunakan

3 fungsi transisi. Contoh sebuah fungsi transisi adalah

δ

(S,0)=D, yang berarti bahwa jika alfabet 0 di-input saat state yang aktif adalah S makastate yang aktif menjadi D.

4. State  awal yang disimbolkan dengan q0  adalah

state  yang langsung aktif saat automata dijalankan.State awal berjumlah 1 (satu) buah. 5. Himpunan state  akhir ( final) yang disimbolkan

dengan F. Misalnya string input   terdiri dari 3 (tiga) alfabet dengan menggunakan fungsi

transisi yang ada, maka jika state  ketiga bukan merupakan anggota himpunan F berarti string tersebut tidak dapat diterima/dikenali oleh otomata.

Contoh komponen-komponen sebuah otomata adalah sebagai berikut:

M = (Q,

,

δ

,q0,F) Q = {S,A,B,C}

 = {0,1} q0 = S F = {S}

δ

 = {

δ

(S,0)=B,

δ

(S,1)=A,

δ

(A,0)=C,

δ

(A,1)=S,

δ

(B,0)=S,

δ

(B,1)=C,

δ

(C,0)=A,

δ

(C,1)=B}

Pada contoh di atas, S adalah state awal sekaligus state akhir. Fungsi transisi

δ

(S,0)=B  berarti bahwa jika state  sekarang adalah S dan alfabet yang di-input  adalah 0, maka state berubah menjadi B.

Adapun Tabel dan diagram yang digunakan dalam pembuatan pohon adalah :

1. Pohon sintaks dari Augmental RE r 

2. Rules untuk menentukan nullable, firstpos, lastpos

3. Rules untuk menentukan followpos

a. Jika n adalahcat-node left-childc1 dan

right-child c2, dan i adalah posisi dalam lastpos

(c1) maka semua posisi lastpos (c2) adalah

 followpos (i)

 b. Jika n adalah node start  dan i adalah posisi dalam lastpos (n) maka semua posisi firstpos (n) adalah dalam followpos (i)

3. Simulasi Model Transformasi 3.1 Model

(7)

“Simulasi Transformasi Regular Expression Terhadap Finite State Automata” 7 Diberikan sembarang ekspressi reguler (RE),

misalkan: r=(a|b)*abb, maka langkah-langkah untuk mengkonversikan adalah sebagai berikut :

1. Tambahkan augmented pada RE yaitu : r = ( a | b )*a b b #

2. Berikan indeks untuk masing-masing karakter yang ada pada RE untuk menyatakan posisi node dalam pohon yaitu :

r = ( a | b )*a b b #

1 2 3 4 5 6

3. Buatlah pohon sintaks untuk menyatakan nilai firstpost, lastpos dan nullable yaitu :

4. Buatlah tabel Followpos  dalam Himpunan  posisi semua simbol terletak pada sesudah symbol pada posisi n masing-masing node pada langkah 2 yaitu :

5. Berdasarkan tabel pada langkah 4 dapat dibuat diagram transisi NFA ( Digraph  untuk fungsi  followpos) yaitu :

6. Buatlah tabel DFA dengan menggunakan tabel  followpos yaitu :

7. Bentuklah diagram transisi DFA dari tabel langkah 6 yaitu :

3.2 Simulasi DFA

Simulasi DFA dimaksudkan untuk mengenali token.

type Token_Kind = record

tipe : byte; nilai : byte end;

var Token : array[0..Max_State] of Token_Kind; Found_Token : Token_Kind; {token yang

ditemukan}

Tok_Pos : Text_Pos; {posisi token dalam  program sumber}

 procedure Next_Token(var Ft : text); {digunakan untuk 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}

{di antaranya menghasilkan nilai baru untuk  Now_Pos} end; until state2 = -1; Act_for_Token(state1); Node Followpos 1 2 3 4 5 6 {1,2,3} {1,2,3} {4} {5} {6} -end;

 procedure Act_for_Token(state : shortint); var Tok_Length : byte;

Err : integer;  begin Current_Token(Token[state].tipe, Token[state].nilai); Tok_Length := Now_Pos.Char_Numb -Tok_Pos.Char_Numb; case Token[state].tipe of

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, Tok_Length), RN, Err);

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

 jika string_value = ‘string’ maka number_variable = 137 dan error_flag

 0

- Token.tipe

 {1, 2, 3, ..., 26} dimisalkan bernilai pasti, sehingga tidak perlu penangan-an lebih lanjut

 procedure Current_Token(tipe, nilai : byte);  begin

Found_Token.tipe := tipe; Found_Token.nilai := nilai; end;

(8)

“Simulasi Transformasi Regular Expression Terhadap Finite State Automata” 8 4. Implementasi

4.1 Form Ekspressi Reguler

Pada form ini dilakukan penginputan string untukstate, dan fungsi transisi dari NFA yang akan diproses (ditransformasi).

Algoritma dalam penginputan state adalah sebagai  berikut:

1. Input string

2. Jika string yang diinput adalah string akhir, beri tanda pada kotak cek Final.

Algoritma dalam penginputan fungsi transisi adalah sebagai berikut:

a. Inputstate.

 b. Caristatetersebut pada tabel transisi.

i. Jika state tersebut tidak ada, kembali ke langkah a.

ii. Jika state tersebut ada, dilanjutkan ke langkah c.

c. Input alfabet.

d. Cari alfabet tersebut pada tabel transisi.

i. Jika alfabet tersebut tidak ada, maka kembali ke langkah c.

ii. Jika alfabet tersebut ada, dilanjutkan ke langkah e.

e. Inputstatetujuan dari fungsi transisi. f. Caristatetujuan tersebut pada tabel transisi

i. Jika state tersebut tidak ada, kembali ke langkah f.

ii. Jika state tersebut ada, dilanjutkan ke langkah g.

g. Tambahkan fungsi transisi ke dalam tabel transisi.

4.2 Form Fungsi Pohon Transisi

Form ini menampilkan simulasi proses  pembentukan pohon fungsi transisi state yang memiliki transisi atas input firstpos, lastpos dan nullable.

Algoritma proses ini adalah sebagai berikut: 1. Mulai darileaf hingga root

2. Cek apakah node  untuk fungsi and or atau fungsi * closure dan + closure.

3. Untuk masing-masing node akan diberi 3 nilai di mana untuk setiap leaf bahwa firstpos dan lastpos dari indeks yang ada pada pohon sedangkan nullable diberi nilai false.

4. Untuk selanjutnya pada proses pemberian nullable dilakukan berdasarkan tabel kebenaran ke dua ruas kanan dan ruas kiri. Dengan cara yang sama sehingga semua posisi node akan mendapatkan nilai nullable

5. Untuk pemberian nilai firstpos dan laspos untuk masing-masing node selain leaf gunakanlah tabel rules  untuk nullabel, firstpos dan lastpos. Ulangi dengan cara yang sama sehinga semua node akan terisi nilai firstpos dan lastpos

6. Ambil posisi firstpos pada root untuk dijadikan menjadi set root.

5. Kesimpulan dan Saran. 5.1 Kesimpulan

Berdasarkan uraian dari bab I hingga bab IV maka dapat diambil kesimpulan sebagai berikut : 1. Konversi ekspressi reguler menjadi DFA

menjadi dasar pembentukan grammar pada  bahasa dalam proses kompilasi

2. Konversi ini merupakan dasar analisa sintaksis dan semantik pada proses kompilasi

3. Dapat dijadikan sebagai media pembelajaran 5.2 Saran

Demi kesempurnaan paper ini, perlu beberapa saran sebagai berikut :

1. Untuk dikembangkan dalam dalam beberapa  bahasa pemrograman yang dinamis

2. Penguraian dalam topik ini masih banyak yang menyertakan teori-teori yang vital. Oleh karena itu untuk para pengembang selanjutnya dapat melengkapinya.

Daftar Pustaka

1. Sanjay Bhargava, G.N. Purohit  , “Construction of a Minimal Deterministic Finite Automaton from a Regular Expression”, Department Of Computer Science Banasthali unversity, 2011 2. John E. Hopcroft, Rajeev Motwani, Jeffrey D.

Ulman, “Teori Bahasa dan Otomata”, 2nd , Andi Offset, 2007

3. Marco Almeida, Nelma Moreira, Rog´erio Reis,“Exact Generation of Minimal Acyclic Deterministic Finite Automata”, Technical Report Series: DCC-2007-05 Version 1.0

4. Carmen Galvez and Félix Moya-Anegón,“Approximate Personal Name-Matching Through Finite-State Graphs”, Department of information Science, University of Granada, Campus Cartuja, Colegio Máximo, 18071, Granada, Spain, 2007

5. Paritosh K. Pandya , “Finite State Automata Automata: Theory and Practice”, (TIFR, Mumbai, India), Unversity of Trento, 10-24 May 2005

6. H. Aho, Alfred V., Ravi Sethi and Jeffrey D. Ulman, “Compiler : Principle, Techniques and Tools”, Addition-Wesley Publishing Company, (1986)

7. Pittman, Thomas and James Peters, “The Art Compiler Design : Theory and Practice”, Prentice – Hall, (1992)

8. Aho, Alfred V., Ravi Sethi and Jeffrey D. Ulman, “Principles of Compiler Design”, Addison-Wesley, (1977)

9. Sumantri Slamet, Heru Suhartanto, “Teknik Kompilasi”, PT. Elex Media Computindo, 1993.

Referensi

Dokumen terkait

Bagaimanakah tingkat keefektifan proses perencanaan (planning) pada MAN model dan reguler di kota Bandung. Yang mencakup: kerjasama, program kerja dan implementasi untuk mencapai

Terdapat tiga fungsi yang harus dijalankan oleh Departemen Kehutanan dalam bentuk proses transformasi pembangunan kehutanan melalui program HTR adalah : (1)

Hasil penelitian ini menunjukkan bahwa Proses transformasi mata pencaharian masyarakat Desa Penyengat dimulai dari timbulnya rasa ketidakpuasan masyarakat setempat

Reengineering proses bisnis dan implikasinya terhadap strategi transformasi perusahaan dan fungsi sumber daya manusia, Jurnal Manajemen, 8 (1).. Reengineering proses bisnis

Rosyidah Yasin ini, pada saat proses pengolahan data pasien dilakukan masih manual, misalnya untuk proses pendaftaran masih mencatat pada buku pendaftaran, pencarian data pasien

Asuhan sayang ibu selama proses persalinan mencakup asuhan yang diberikan kepada ibu yang dimulai sejak kala I hingga kala IV.Salah satu prinsip dasar asuhan sayang ibu

Berangkat dari definisi tersebut, sistem manufaktur dapat diartikan sebagai sistem yang inelakukan proses transformasi atau konversi bahan mentah menjadi produk

Accordingly, his paper tries to reveal how consumer purchase behavior CPB can be affected by consumer knowledge sharing behavior CKSB and the moderating role played by value co-creation