• Tidak ada hasil yang ditemukan

Kesimpulan dan saran dari hasil pembahasan masalah dan analisa secara keseluruhan.

BAB II

LANDASAN TEORI

A. Tata Bahasa Bebas Konteks

Tata Bahasa Bebas Konteks / Contexs Free Grammar ( CFG) merupakan salah satu cara untuk mendefinisikan bahasa (language). Dengan tata bahasa bebas konteks dapat diketahui untai-untai yang dihasilkan dalam bahasa.

A.1 Definisi Tata Bahasa Bebas Konteks

Tata bahasa bebas konteks didefinisikan sebagai G= (Ν,Σ,S,Ρ), dengan :

Ν = himpunan simbol nonterminal.

Σ = himpunan terminal-terminal atau alphabeth.

S∈Ν = simbol awal.

Ρ = aturan produksi, dimana P⊆Ν×(Ν∪Σ)*

atau dapat dijelaskan sebagai

N→(Ν∪Σ)*.

Nonterminal yang ada disebelah kiri produksi dapat digantikan oleh string yang ada di sebelah kanan tanda panah, dimana

Ν w

w(Ν∪Σ)*

.

Tata bahasa bebas konteks G dalam mendefinisikan sebuah bahasa L

atau dinotasikan dengan cara menetapkan sebuah himpunan produksi,

dimana hanya string-string dari )

(G L

L yang dapat disusun oleh himpunan produksi tersebut. Setiap string yang dapat dibentuk dari keadaan awal melalui proses penggantian semua nonterminal oleh aturan-aturan produksi sampai tidak ada lagi nonterminal yang tersisa merupakan bagian

S

Contoh : N = (S, A, B, C) Σ = (a, b, c) Ρ = S → Abb | BC | abbC A → a B → ab C → c

String yang dapat dibentuk dari CFG di atas adalah L = (abb, abc, abbc) Penurunan string berdasarkan CFG di atas :

S ( ) Abb abb 1( )2 → S ( ) BC abc 1( )2 → S ( ) abbC abbc 1( )2

B. Penyederhanaan Tata Bahasa Bebas Konteks

Pembentukan tata bahasa bebas konteks terkadang belum dalam bentuk yang sederhana, sehingga ketidaksederhanaan ini akan membuat tata bahasa bebas konteks menjadi rumit dengan aturan-aturan produksi yang tidak berarti. Oleh karena itu perlu dilakukan penyederhanaan tata bahasa bebas konteks dengan menempatkan pembatasan-penbatasan, sehingga pohon penurunan yang dihasilkan tidak rumit dan mudah ditelusuri.

Langkah-langkah penyederhanaan tata bahasa bebas konteks :

2. Penghilangan produksi yang tidak bisa dicapai dari . S

3. Menghilangkan produksi - ε 4. Menghilangkan produksi tunggal

Dalam skripsi ini, karena input yang berupa tata bahasa bebas konteks dianggap sudah sederhana jadi tidak dilakukan penyedehanaan melainkan hanya melakukan pengecekan. Pengecekan tersebut adalah penghilangan produksi yang tidak bisa diturunkan sampai mencapai simbol terminal dan produksi yang tidak bias dicapai dari . Sedangkan pengecekan untuk penyedehanaan menghilangkan produksi tunggal dan produksi

S

ε dilakukan secara manual yaitu langsung saat

user menginput diharapkan tidak memasukkan tata bahasa konteks yang mengandung produksi tunggal maupun produksi ε.

B.1 Penghilangan Produksi Yang Tidak Bisa Diturunkan Hingga Terminal

Produksi yang tidak bisa diturunkan atau yang tidak bisa mencapai terminal dikatakan tidak sederhana, karena bila diturunkan tidak akan pernah selesai atau tidak akan pernah menghasilkan terminal-terminal seluruhnya.

Contoh : N = ( S, A, B , C, D ) Σ = ( a, b, c, d, e ) Ρ = S → Aab | bbC | aaD A → Abe | aaB | e B → Ac | bcC C → cd

Terlihat bahwa nonterminal D tidak mempunyai produksi atau tidak dapat menurunkan simbol terminal. Oleh karena itu nonterminal D dan setiap produksi yang mengandung nonterminal D dikatakan tidak berguna.

Jika diketahui CFG G = (Ν,Σ,S,Ρ) maka hasil penyederhanaanya adalah G′ = (Ν′,Σ′,S′,Ρ′), dimanaΝ′ dan Ρ′ dibentuk dengan langkah-langkah sebagai berikut.

Algoritma :

1. Inisialisasi Ν′ dengan semua nonterminal Aw merupakan sebuah produksi dalam G dengan w∈Σ*

.

2. Inilisiasasi Ρ′ dengan semua produksi Aw dimana A∈Ν′ dan

*

w∈Σ .

3. - Tambahkan ke dalam Ν′ semua nonterminal A dimana Aw,

w*

)

(Ν′∪Σ adalah sebuah produksi dalam Ρ.

- Tambahkan produksi tersebut ke Ρ′.

- Ulangi langkah-langkah ini sampai tidak ada lagi nonterminal yang yang ditambah ke dalam Ν′.

Contoh penyederhanaan dengan menghilangkan nonterminal yang tidak bisa mencapai terminal :

Ρ = S → Aab | bbC | aaD A → Abe | aaB | e

B → Ac | bcC C → cd

Ν′ Ρ′

Inisialisasi {A, C} A → e ; C → cd Nonterminal yang bisa {A, C, B} S → Aab ; A → Abe diturunkan ke {A, C} B Ac ; S bbC

B bcC

→ →

→ Nonterminal yang bisa {A, C, B} A → aaB diturunkan ke {A, C, B}

Ρ′ : S → Aab | bbC A → Abe | aaB | e

B → Ac | bcC C → cd

B.2 Penghilangan Produksi Yang Tidak Bisa Dicapai DariS

N = ( S, A, B , C, D ) Σ = ( a, b, c, d, e ) Ρ = S → aabAac | BB | BBB | Ddee A → aaa | cdA B → BDc | c C → cde D → e

Nonterminal C di atas dikatakan redundan (berlebih) karena non terminal tersebut tidak akan pernah dicapai dari S atau dari produksi manapun.

Misalkan G′ = (Ν′,Σ′,S′,Ρ′) merupakan hasil penyederhanaan dariG = (Ν,Σ,S,Ρ) yang dibentuk dengan langkah-langkah sebagai berikut.

Algoritma :

1. - Inisialisasi Ν′ dengan memuat simbol awal . S

- Inisialisasi Ρ′ dan Σ′sebagai himpunanan kosong.

2. Untuk setiap A∈Ν′, jika Aw merupakan produksi dalam , maka : Ρ - Masukkan Aw ke dalam Ρ′.

- Masukkan semua non terminal yang ada di dalam w ke dalam Ν′. - Masukkan semua terminal yang ada di dalam w ke dalam Σ′.

Ulangi langkah ini sampai tidak ada lagi produksi yang dapat ditambahkan ke dalam Ρ′.

Berikut adalah contoh penyederhanaan dengan menghilangkan nonterminal yang tidak bisa mencapai terminal :

Ρ = S → aabAac | BB | BBB | Ddee A → aaa | cdA B → BDc | c C → cde D → e Ν′ Ρ′ Σ′ Inisialisasi {S} φ φ

Produksi dari {S, A, B, D} A → aaa | cdA {a, c, e} {A, B, D} B → BDc | c D → e Ρ′ : S → aabAac | BB | Ddee A→ aaa | cdA B → BDc | c D → e

C.

Bentuk Normal Chomsky

Bentuk Normal Chomsky / Chomsky Normal Form (CNF) merupakan salah satu bentuk akhir dari penyederhanaan tata bahasa bebas konteks dimana bentuk untai-untainya lebih terstruktur.

C.1

Definisi Bentuk Normal Chomsky

A tata bahasa bebas konteksG = (Ν,Σ,S,Ρ) dikatakan dalam bentuk normal Chomsky, jika dan hanya jika setiap aturan dalam Ρ berbentuk sebagai berikut :

1. Aa, untuk setiap A∈Ν dan a∈Σ 2. ABC, untuk setiap A,B,C ∈Ν

Dengan kata lain tata bahasa bebas konteks berbentuk normal Chomsky jika setiap produksinya terdiri dari tepat sebuah terminal tunggal maupun dua non terminal.

C.2 Pembentukan Bentuk Normal Chomsky

Dengan adanya sebuah tata bahasa bebas konteks dalam bentuk normal Chomsky, maka dapat diketahui dengan tepat bagaimana langkah-langkah dalam melakukan penurunan sebuah string .

Jika G sebuah tata bahasa bebas konteks dan ε∉L(G), maka G dapat ditransformasikan menjadi sebuah tata bahasa bebas konteks dalam bentuk normal Chomsky.

Cara mentransformasikan grammar ke dalam bentuk normal Chomsky :

1. Hilangkan semua produksi yang tidak diperlukan, produksi ε, dan produksi tunggal dalam G.

Setelah dilakukan penyederhanaan tata bahasa konteks, maka akan

meghasilkan semua produksi berbentuk Aw dengan w ≥1

- Jika w =1 berarti w∈Σ, karena tidak ada produksi tunggal. Jadi sudah memenuhi bentuk normal Chomsky.

- Jika w >1 berarti w = , maka bisa memuat

terminal dan non terminal keduanya.

n

X X

X1 2.... w

Cara mengkonversikan menjadi untai-untai yang hanya memuat nonterminal-nonterminal :

w

Misalkan diketahui sebuah produksi yang berbentuk Aw, untuk w = X1X2....Xn. Jika adaXi ∈Σ, kita ganti Xi dengan

Ν ∈

i

Hasil step (1) : semua produksi berbentuk Aw dengan sebuah terminal atau string yang semuanya terdiri dari non terminal.

w

2. Transformasikan ke dalam CNF dengan memecah string pada ruas kanan produksi yang panjangnya lebih dari dua non terminal.

G

Jika sebuah produksi AB1B2...Bn, Bi∈Ν ( dengan ) maka

diubah dengan mengambil 2 non terminal pertama dan menggantikannya dengan 2 non terminal baru sampai mencapai tepat 2 non terminal.

2 ≥ n n n B Z A3 1 4 3 2 1 0 → → n n n Z B Z B B Z M i

Z merupakan non terminal-non terminal baru.

Dalam tata bahasa yang dihasilkan setelah mengalami transformasi, ruas kanan dari masing-masing produksi terdiri dari baik sebuah terminal tunggal maupun yang lainnya berupa sebuah untai dari dua non terminal. Akibatnya, suatu tata bahasa bebas konteks yang tidak memuat ε dapat diturunkan oleh sebuah tata bahasa bebas konteks dalam bentuk normal Chomsky.

Berikut ini merupakan contoh tata bahasa konteks yang sudah mengalami penyederhanaan dan akan ditransformasikan ke dalam bentuk normal Chomsky:

N = ( S, A, B , C ) Σ = ( a, b, c, d, e ) Ρ = S → Bb | AA | de

A → aBb B → bC | bbbb

C → c

Aturan-aturan produksi yang sudah dalam bentuk normal Chomsky : S → AA

C → c

Transformasi pertama (‘⇒’ bisa dibaca ‘berubah menjadi’) :

o Ubah produksi Aw dengan w ≥1

o Ganti semua terminal dalam w menjadi nonterminal baru. S → Bb ⇒ S → BΖ0

S → de ⇒ S → Ζ1 Ζ2 A→ aBb ⇒ A → Ζ30 B→ bC ⇒ B → Ζ0C

B→ bbbb ⇒ B → Ζ0 Ζ0 Ζ0 Ζ0

Terbentuk aturan produksi dan simbol variable baru :

0 Ζ → b 1 Ζ → d 2 Ζ → e 3 Ζ → a Produksi menjadi : S → BΖ0 | AA | Ζ1 Ζ2 A → Ζ30 B → Ζ0C | Ζ0 Ζ0 Ζ0 Ζ0

C → c 0 Ζ → b 1 Ζ → d 2 Ζ → e 3 Ζ → a Transformasi kedua :

o Ubah produksi Aw dengan w ≥2 A → Ζ30 ⇒ A →Ζ4 Ζ0 B → Ζ0 Ζ0 Ζ0 Ζ0 ⇒ B →Ζ5 Ζ0 Ζ0 B →Ζ5 Ζ0 Ζ0 ⇒ B →Ζ6 Ζ0 Terbentuk aturan produksi dan symbol variable baru :

B 4 Ζ → Ζ3 5 Ζ → Ζ0 Ζ0 6 Ζ → Ζ5 Ζ0 Produksi dalam CNF : S → BΖ0 | AA | Ζ1 Ζ2 A → Ζ4 Ζ0 B → Ζ0C | Ζ6 Ζ0 C → c 0 Ζ → b 1 Ζ → d

2 Ζ → e 3 Ζ → a 4 Ζ → Ζ3B 5 Ζ → Ζ0 Ζ0 6 Ζ → Ζ5 Ζ0

Jika L sebuah tata bahasa bebas konteks yang memuat ε, maka bisa didapatkan sebuah tata bahasa bebas konteks dalam bentuk normal Chomsky untuk L−{ε} dan kemudian menambahkan produksi S →ε kepadanya. Tata bahasa yang dihasilkan adalah dalam bentuk normal Chomsky kecuali untuk produksi ε tunggal.

D. Pemrograman Java D.1 Java

Java merupakan bahasa pemprograman berorientasi objek yang diciptakan oleh James Gosling dan beberapa team lainnya di Sun Microsystem. Karasteristik Java berukuran lebih kecil, efisien dan portable untuk berbagai hardware. Java terpilih sebagai bahasa pemprograman untuk aplikasi jaringan.

Keunggulan java :

1. Java bersifat sederhana dan lebih mudah.

2. Java bersifat lebih sederhana dibandingkan bahasa populer lain seperti C++. Sebagian dari Java dimodelkan dari C++, dengan memperbaiki beberapa karasteristik C++.

Sebagai contoh, Java menggantikan konsep pewarisan jamak (multiple inhiritance) yang relatif kompleks dengan struktur yang sederhana yaitu

interface, tidak menggunakan pointer, alokasi memori secara otomatis, dan sebagainya.

3. Java berorientasi pada objek (Oriented Objek).

Java merupakan bahasa pemprograman yang berorientasi objek (OOP). Java membagi program menjadi beberapa objek, kemudian memodelkan sifat dan tingkah lakunya masing-masing. Selanjutnya, Java menentukan dan mengatur interksi antara objek yang satu dengan yang lain.

4. Java bersifat terdistribusi.

Java dirancang untuk membuat pemrograman lebih terdistribusi yang memanfaatkan jaringan komputer lebih mudah untuk diwujudkan.

5. Java bersifat Multiplatform

Java bersifat mutiplatform, yakni dapat diterjemahkan oleh Java Interpreter pada berbagai sistem operasi, sehingga tidak bergantung pada arsitektur perangkat keras yang digunakan.

6. Java bersifat MultiThread

Java mempunyai kemampuan untuk menjalankan beberapa bagian program dalam waktu bersamaan.

D.2 JDK (Java Development Kit)

JDK merupakan perangkat pemprograman Java yang berisi kompiler dan interpreter yang direlase oleh Sun. Dalam skripsi ini, program menggunakan JDK 1.5.

D. 3 NETBEANS

Ada beberapa macam editor yang digunakan untuk mengedit listing program Java. Diantaranya fasilitas editor pada lingkungan DOS, Notepad / Wordpad pada Windows, Ultra edit, dan NetBeans. yang digunakan dalam skripsi ini. NetBeans dari Java dapat dipakai untuk :

1. Menulis program

2. Mengkompilasi program

3. Melakukan pencarian kesalahan (debugging) 4. Menjalankan program, dll.

D.4 Pemprograman Berorientasi Objek

Pemprograman Berorientasi Objek atau Object Oriented Programing (OOP) merupakan konsep pemprograman yang difokuskan pada penciptaan kelas yang merupakan abstraksi/blueprint/prototype dari suatu objek. Kelas harus mengandung sifat (data) dan tingkah laku (method) umum yang dimiliki objek-objek yang nantinya akan dibuat (diintansiasi). Data dan method merupakan anggota (member) dari suatu kelas.

D.5 Objek, Data dan Method

Kelas adalah prototype yang mendefinisikan data-data dan method-method secara umum. Objek merupakan instans (perwujudan) dari kelas. Sedangkan sifat karasteristik yang dimiliki objek disebut data dan prosedur/fungsi yang dimiliki objek disebut method.

BAB III

PERANCANGAN DAN IMPLEMENTASI

A. Perancangan Sistem

Pada program transformasi kebentuk normal Chomsky masukan harus berupa himpunan produksi dari tata bahasa bebas konteks yang sudah mengalami penyederhanaan yang kemudian akan ditransformasikan ke bentuk normal Chomsky. Sehingga diharapkan user tidak memasukkan tata bahasa bebas konteks yang tidak sederhana. Langkah dari sistem yang dibuat adalah sebagai berikut :

1. User menginputkan tata bahasa bebas konteks menggunakan daftar tombol yang disediakan program.

2. Program melakukan pengecekan bentuk produksi tunggal. Pada saat

user hanya menginputkan hasil produksi sebanyak satu non terminal, maka input tersebut tidak dapat diakhiri kecuali batal sampai user

menginputkan lagi simbol terminal ataupun non terminal.

3. Program melakukan pengecekan, apakah aturan produksi dalam tata bahasa bebas konteks ada yang tidak bisa diturunkan sampai terminal dan tidak bisa dicapai dari simbol awal. Jika terdapat salah satu syarat ketidaksederhanaan tersebut, maka ditampilkan pesan apakah user

akan tetap melanjutkan proses transformasi. Jika ya maka tata bahasa bebas konteks akan ditransformasikan dengan mengabaikan penyederhanaan tata bahasa bebas konteks. Tetapi jika user memilih

tidak maka user harus menginputkan lagi tata bahasa bebas konteks yang benar sesuai dengan pesan yang ditampilkan.

4. Program melakukan pengecekan, apakah aturan produksi sudah memenuhi syarat bentuk normal Chomsky. Jika aturan produksi sudah memenuhi syarat bentuk normal Chomsky, program akan menampilkan aturan produksi tersebut ke output.

5. Jika aturan produksi belum memenuhi syarat bentuk normal Chomsky dan dalam aturan produksi tersebut terdapat terminal yang jumlahnya lebih dari satu, maka terminal tersebut akan diubah menjadi non terminal baru.

6. Selanjutnya aturan produksi yang mengandung non terminal yang jumlahnya lebih dari dua akan ditansformasikan ke bentuk normal Chomsky sampai mencapai tepat dua non terminal dan hasil tersebut ditampilkan dalam output.

7. Hasil akhir dari program adalah tata bahasa bebas konteks yang sudah mengalami penyederhanaan G = (Ν′,Σ′,S′,Ρ′) dengan aturan dalam

berbentuk sebagai berikut : '

Ρ

1. Aa, untuk setiap A∈Ν' dan a∈Σ' 2. ABC, untuk setiap A,B,C ∈Ν'

Secara skematis alur yang digunakan dalam proses transformasi ke bentuk normal Chomsky ini dinyatakan pada gambar 3.1 :

M u lai P e ng ec e k an : T e rd ap a t P ro du k s i T u ng g al ? P e ng ec e k an : P ro d uk s i tida k b is a ditu ru nk a n hing ga te rm in al ? P e ng e ce k a n : P rod uk s i tid ak bis a dica p ai d ari s im b o l a w a l ? ya tid a k tid a k tid a k ya P e n ge c ek a n : P ro du k s i da la m B e n tu k N o rm a l C ho m sk y ?

U b ah P rod uk s i u ntu k term in a l > 1 m en ja di n o n te rm in al b aru

U ba h p rod u ks i u ntu k n on te rm ina l > 2 s am p ai m en c a pa i te pa t 2 n on te rm ina l S e le s ai tid a k ya T a ta B ah as a B e b as K on te k s d is e de rh an a ka n ? ya tid a k ya

Gambar 3.1 Diagram alir tahapan transformasi tata bahasa bebas konteks ke bentuk normal Chomsky.

B. Perancangan Antarmuka

Perancangan antarmuka dibuat untuk memudahkan user dalam mengoperasikan perangkat lunak. Dalam perancangan antarmuka yang akan dibuat terdiri dari 4 layar, yaitu layar Layar_Sampul, layar Layar_Utama, Layar

Layar_Tambah_Produksi dan layar Layar_Input_Produksi.

B.1 Layar_Sampul

PROGRAM BANTU

TRANSFORMASI TATA BAHASA BEBAS KONTEKS KE BENTUK NORMAL CHOMSKY

Disusun oleh :

Wiwit Kristiani - 013114007

Keluar Lanjut >>

Gambar 3.2 Perancangan Layar_Sampul

Terdiri dari 2 label dan 2 tombol : 1. Label ‘Judul Skripsi’

2. Label ‘Penyusun Skripsi’ 3. Tombol ‘Keluar’

B.2 Layar_Utama

CHOMSKY BARU PROSES CHOMSKY

KELUAR HASIL INPUT HASIL OUTPUT 1 HASIL OUTPUT 2

Proses Transformasi Tata Bahasa Bebas Konteks ke Bentuk Normal Chomsky

CHOMSKY BARU PROSES CHOMSKY

KELUAR

Gambar 3.3. Perancangan Layar_Utama

Terdiri dari 1 label, 3 daftar dan 3 tombol : 1. Label text judul

2. Daftar Hasil Input

3. Daftar Hasil Output Langkah 1 4. Daftar Hasil Output Langkah 2

5. Tombol ‘Chomsky Baru’, untuk masuk ke ‘Layar_Tambah_Produksi’ 6. Tombol ‘Proses Chomsky’, untuk mendapatkan output

B.3. Layar_Tambah_Produksi

Hapus Produksi

OK BATAL

Edit Produksi Tambah Produksi

Gambar 3.4. Perancangan Layar_Tambah_Produksi

Terdiri dari 1 daftar dan 5 tombol :

1. Daftar Masukan Produksi 2. Tombol ‘Tambah Produksi’ 3. Tombol ‘Edit Produksi’ 4. Tombol ‘Hapus Produksi’ 5. Tombol ‘OK’

B.4. Layar_Input_Produksi

Gambar 3.5. Perancangan Layar_Input_Produksi

Terdiri dari 3 label dan 15 tombol : 1. Label ‘S’

2. Label tanda panah ‘→’

3. Label untuk tempat hasil produksi (sebelah kanan tanda panah) 4. Tombol non terminal ‘A, B, C, D, E, S’

5. Tombol terminal ‘a, b, c, d, e’ 6. Tombol tanda garis ‘|’

7. Tombol ‘OK’

8. Tombol ‘HAPUS KARAKTER’ 9. Tombol ‘BATAL’ → BATAL Produksi S OK A B C D E a b c | S d e HAPUS KARAKTER

C. Perancangan Proses

Perancangan proses merupakan suatu gambaran proses program yang akan dibuat sehingga pengimplementasian ke dalam suatu program menjadi lebih jelas dan mudah. Proses yang dilakukan adalah pengolahan masukkan yang dimasukkan oleh user, yang kemudian akan menampilkan informasi hasil masukan dan hasil keluaran.

Dalam perancangan proses transformasi kebentuk normal Chomsky ini meliputi perancangan seluruh bagian program yang digambarkan dalam suatu

flowchart. Flowchart secara keseluruhan, flowchart untuk pengecekan tata bahasa bebas konteks dan flowchart untuk mentransformasikan tata bahasa bebas konteks ke dalam bentuk normal Chomsky yang terbagi menjadi dua yaitu flowchart untuk melakukan perubahan dari terminal lebih dari satu menjadi non terminal dan

flowchart untuk melakukan perubahan dari non terminal lebih dari dua sampai menjadi tepat dua non terminal.. Flowchart untuk pengecekan tata bahasa bebas konteks terdiri flowchart pengecekan bentuk produksi yang tidak bisa diturunkan sampai ke terminal dan flowchart pengecekan bentuk produksi yang tidak bisa dicapai dari simbol awal.

C.1 Flowchart Transformasi Tata Bahasa Bebas Konteks ke Bentuk Normal Chomsky

Dalam flowchart transformasi ke bentuk normal Chomsky yang terbagi dalam pengecekan tata bahasa bebas konteks dan proses transformasi ke bentuk normal Chomsky ini terdiri dari 6 tahap bagian.

I n p u t : T a t a b a h a s a b e b a s k o n t e k s y a y a T a h a p 1 T a h a p 2 Σ Ρ ) = , ,S, G Ν Ρ B A B A , ? : ( )* , : Σ Ν ′ Ρ w w A ( )* , , : Σ ′ Ν Ν ′ Ρ w A w A T a h a p 3 t i d a k t i d a k t i d a k Ν Σ Ν Ρ C B A B C A a A a A , , , , , : U b a h , u n t u k ,Ρ:A w w > 1 U b a h , u n t u k ,Ρ:A w w > 2 O u tp u t : b e n tu k n o r m a l c h o m s ky G′=(Ν ′,Σ ′,S′,Ρ ′), Σ ′ Ν ′ a A a A , , Ν ′ B C A B C A , , , T a h a p 4 T a h a p 5 T a h a p 6 y a t i d a k Σ w Ν w T a t a B a h a s a B e b a s K o n t e k s d i s e d e r h a n a k a n ? y a y a t i d a k M u l a i S e l e s a i

Gambar 3.6 Diagram alir perancangan program transformasi ke bentuk normal Chomsky

C.2 Pengecekan Input Produksi Tunggal (Tahap 1)

Pengecekan input yang mengandung produksi tunggal dilakukan saat user

menginput produksi. Setelah user menginputkan hasil produksi yang berupa 1 simbol non terminal maka secara otomatis program akan hanya akan mengaktifkan simbol terminal dan non terminal sehingga diharapkan user tidak hanya menginputkan satu non terminal. Pengecekan ini dilakukan secara terus menerus selama user menginputkan tata bahasa bebas konteks.

C.3 Flowchart Pengecekan Input Produksi Yang Tidak Bisa Diturunkan Sampai ke Terminal (Tahap 2)

Pengecekan apakah input mengandung produksi yang tidak bisa diturunkan sampai mencapai terminal dilakukan setelah user memasukkan semua tata bahasa konteks yang akan ditransformasikan. Pengecekan dilakukan dengan cara :

a) Mencari non terminal yang hasil produksinya mengandung semua non terminal.

b) Mencari produksi-produksi yang bisa menurunkan non terminal-non terminal tersebut sehingga didapat non terminal-non terminal yang memproduksinya.

c) Langkah b dilakukan berulang-ulang sampai tidak ada lagi non terminal yang ditambahkan

d) Hasil non terminal-non terminal dan produksi-produksi dari langkah 1 sampai c yang ditemukan dibandingkan dengan non terminal dan produksi dari input

e) Jika ditemukan non terminal yang terdapat di hasil produksi tetapi tidak terdapt di non terminal yang dicari sebelumnya dari langkah a sampai c, maka non terminal tersebut tidak bisa diturunnkan. Untuk input yang demikian user harus memasukkan input yang benar.

I nput : t at a bahas a bebas k ont ek sG=(Ν,Σ,S) Ν Ρ B A B A , ? :

C ari dim ana

C ari dim ana

Apak ah ada , dim ana ,

(s ebelah k anan ‘ ’)

Tahap 3 :

C ek produk s i y ang t idak bis a dic apai dari s im bol awal at au dari produk s i s ebelum ny a.

y a t idak y a t idak * , , ∈Σ w A N w A A A Aw,A∈Ν,w(Ν′∪Σ)* A w A A∈Ν ′ (Ν∪Σ)* w (Ν ′∪Σ)* w Mulai

Tat a Bahas a Bebas Kontek s dis ederhanak an ?

t idak Tahap 4 : C ek bent uk norm al C hom s k y

y a

Gambar 3.7 Diagram alir pengecekan produksi yang tidak bisa diturunkan hingga terminal (Tahap 2).

C.4 Flowchart Pengecekan Input Produksi Yang Tidak Bisa Dicapai dari Simbol Awal (Tahap 3)

Pada tahap ini pengecekan dilakukan dengan cara : a) Mencari non terminal hasil produksi simbol awal.

b) Dari masing-masing non terminal yang didapat, dicari non termina-non terminal turunannya.

c) Langkah b dilakukan berulang-ulang sampai tidak ada lagi non terminal yang ditambahkan

d) Jika non terminal yang ditemukan dari langkah a sampai c sama dengan non terminal yang ada di sebelah kiri tanda panah maka tata bahasa bebas konteks bisa dilanjutkan ke tahap selanjutnya. Tetapi jika ternyata di sebelah kiri tanda panah terdapat non terminal yang tidak terdapat di non terminal yang ditemukan pada langkah a sampai c maka non teminal tersebut dikatakan tidak bisa dicapai dari simbol awal atau dari produksi manapun. Sama dengan pengecekan pada tahap 2 untuk input yang demikian user harus memasukkan input yang benar.

Cari dimana Cari dimana Apakah ada , dimana , (sebelah kiri ‘ ’) Tahap 4 : Cek bentuk normal Chomsky ya tidak ( )* , , ∈Ν′ Ν∪Σ AS A S A B AB,A∈Ν′ A w A→ →

(

Ν∪Σ′

)

* ∈ ∉w Tahap 2 :

Cek produksi y ang tidak bisa diturunkan hingga terminal

(

Ν∪Σ′

)

* ∈ B Ν′ ∈ A

Tata Bahasa Bebas Konteks disederhanakan ? Input :

Tata bahasa bebas konteksG = (Ν,Σ,S)

tidak

Gambar 3.8 Diagram alir pengecekan produksi yang tidak bisa dicapai dari simbol awal (Tahap 3)

C.5 Flowchart Perubahan Terminal Lebih dari 1 Menjadi Non Terminal (Tahap 5)

Flowchart dalam tahap 5 ini merupakan urutan langkah dari perubahan terminal lebih dari satu menjadi non terminal. Pertama kali akan dilakukan pengecekan terhadap input apakah terdapat aturan produksi yang sudah dalam bentuk normal Chomsky. Jika ada maka hasil tersebut akan dikirimkan ke output. Tetapi jika aturan-aturan produksi tersebut tidak dalam dalam bentuk normal Chomsky akan dilakukan pengecekan kembali apakah dalam aturan produksi tersebut terdapat simbol terminal yang jumlahnya lebih dari satu. Jika ya maka simbol terminal tersebut diubah menjadi simbol non terminal..

Tahap 3 :

Cek produksi y ang tidak bisa dicapai dari simbol awal

Ν Σ Ν Ρ C B A BC A a A a A , , , , , : ( 2) , , , , , 1 , : 2 1 Σ = Ρ n X X X X w w w A i n Ubah denganXi ∈Σ Ci ∈Ν Tambahkan CiXi Tahap 6 : Ubah untuk ,Ρ:Aw w>2 ya tidak tidak ya

Output : bentuk normal chomsky Σ ′ Ν ′ a A a A , , Ν ′ BC A B C A , , , (Ν′,Σ ′, ′,Ρ′), = S G Ν ∈ w

Gambar 3.9 Diagram alir perubahan terminal lebih dari 1 menjadi non terminal(Tahap 5)

C.6 Flowchart Perubahan NonTerminal Lebih dari 2 Menjadi Tepat 2 Non Terminal (Tahap 6).

Setelah sebagian proses transformasi ke bentuk normal Chomsky yang digambarkan dalam flowchart tahap 5 selesai, proses tersebut akan dilanjutkan sampai tercapai bentuk normal Chomsky yang diagram alirnya digambarkan dalam flowchart tahap 6 di bawah ini. Proses yang dilakukannya adalah :

a. 2 string pertama digantikan dengan non terminal baru berupa huruf kapital Z diikuti angka 0.

b. Non terminal baru (Z0) dan non terminal kedua digantikan lagi dengan non terminal baru Z1 dan seterusnya sampai didapatkan tepat 2 non terminal.

c. Selanjutnya hasil dari transformasi dan aturan-aturan produksi baru yang terbentuk tersebut dimasukkan dalam output .

T a h a p 5 : U b a h d e n g a n U b a h m e n j a d i ( ) (w B1, B2, . .Bn Ν n 2 ) Ν Z B Z A n 3 n , ( 2) , , , , , 1 , : = 1 2 ∈Σ Ρ A w w w X X XnXi n Σ i X C i Ν O u t p u t : B e n t u k N o r m a l C h o m s ky Σ ′ Ν ′ a A a A , , Ν ′ B C A B C A , , , (Ν ′ Σ ′ Ρ ′) = , , S , G

Gambar 3.10 Diagram alir perubahan non terminal lebih dari 2 menjadi tepat 2 non terminal (Tahap 6)

D. Perancangan Struktur Data

Program transformasi kebentuk normal Chomsky ini terdapat 3 kelas Java dan 4 GUI Form Java, yaitu :

1. Kelas java dengan objek ‘Huruf’ dan ‘Chomsky’

2. Frame Form Java dengan objek ‘Layar_Sampul’, ‘Layar_Utama’, ‘Layar_Tambah_Produksi’ dan ‘Layar_Input_Produksi’

D.1 Kelas Huruf

Kelas CFG meliputi konstruktor, beberapa method dan field. Field kelas CFG :

Dokumen terkait