TEORI BAHASA DAN OTOMATA [TBO]
Aturan Produksi Rekursif Kanan Aturan Produksi yang rekursif memiliki ruas kanan (hasil produksi) yang memuat simbol variabel pada ruas kiri. Terdapat rekursif kanan dan rekursif kiri. Sebuah aturan produksi dalam bentuk: A A Merupakan aturan produksi yang rekursif kanan: (V T)* atau kumpulan symbol variabel dan terminal Contoh aturan produksi yang rekursif kanan: S ds B adb
Aturan Produksi Rekursif Kiri Sebuah aturan produksi dalam bentuk: A A Merupakan aturan produksi yang rekursif kiri, contohnya: S Sd B Bad Produksi yang rekursif kanan menyebabkan pohon penurunan tumbuh ke kanan, sebaliknya produksi yang rekursif ke kiri menyebabkan pohon penurunan tumbuh ke kiri. Bisa dilihat pada pohon penurunan dari tata bahasa bebas konteks dengan aturan produksi: S aac A Ab
Tahapan Penghilangan Rekursif Kiri (1) 1. Pisahkan aturan produksi yang rekursif kiri dan yang tidak, misal: Aturan produksi yang rekursif kiri: A A 1 A 2 A 3..A n Aturan produksi yang tidak rekursif kiri (termasuk produksi ) A 1 2 3.. m 2. Dari sini bisa ditentukan 1, 2,. n dan 1, 2,. m dari setiap aturan produksi yang memiliki symbol ruas kiri yang sama.
Tahapan Penghilangan Rekursif Kiri (2) 3. Lakukan penggantian aturan produksi yang rekursif kiri, menjadi sebagai berikut: A 1Z 2Z. mz Z 1 2 3. n Z 1Z 2Z 3Z. nz Penggantian diatas dilakukan untuk setiap aturan produksi dengan symbol ruas kiri yang sama. Bisa muncul symbol variabel baru Z1, Z2 dan seterusnya sesuai banyaknya variabel yang menghasilkan produksi yang rekursif kiri. 4. Hasil akhir berupa aturan produksi pengganti ditambah dengan aturan produksi semula yang tidak rekursif kiri.
Tahapan-tahapan Aturan produksi yang tidak rekursif kiri CFG mengandung aturan produksi yang rekursif kiri Aturan produksi yang rekursif kiri Lakukan penggantian, munculkan aturan produksi baru dan symbol variabel baru CFG bebas dari aturan produksi yang rekursif kiri Penghilangan rekursif kiri memungkinkan suatu tata bahasa bebas konteks nantinya diubah ke dalam bentuk normal Greibach.
Contoh 1 (1) Contoh, tata bahasa bebas konteks: S Sab asc dd ff Sbd Pertama-tama lakukan pemisahan aturan produksi Aturan produksi yang rekursif kiri: S Sab Sbd Dari sini tentukan: Untuk symbol ruas kiri S : 1=ab ; 2=bd Aturan produksi yang tidak rekursif kiri: S asc dd ff
Contoh 1 (2) Dari sini didapatkan: Untuk symbol ruas kiri S : 1=aSc ; 2=dd ; 3=ff Lakukan penggantian aturan produksi yang rekursif kiri: Untuk yang memiliki symbol ruas kiri S: S Sab Sbd, digantikan oleh: 1. S ascz1 ddz1 ffz1 2. Z1 ab bd 3. Z1 abz1 bdz1
Contoh 1 (3) Hasil akhir setelah penghilangan rekursif kiri adalah: 1. S asc dd ff 2. S ascz1 ddz1 ffz1 3. Z1 ab bd 4. Z1 abz1 bdz1 Pada kasus diatas S adalah satu-satunya symbol variabel yang menghasilkan produksi rekursif kiri
Contoh 2 (1) Terdapat tata bahasa bebas konteks: S Sab Sb ca A Aa a bd Pertama-tama lakukan pemisahan aturan produksi Aturan produksi yang rekursif kiri: S Sab Sb A Aa Dapat ditentukan: 1. Untuk symbol ruas kiri S : 1=ab ; 2=b 2. Untuk symbol ruas kiri A : 1=a
Contoh 2 (2) Aturan produksi yang tidak rekursif kiri: S ca A a bd Sehingga didapatkan: 1. Untuk symbol ruas kiri S : 1=cA 2. Untuk symbol ruas kiri A : 1=a ; 2=bd
Contoh 2 (3) Lakukan penggantian aturan produksi yang rekursif kiri: Untuk yang memiliki symbol ruas kiri S: S Sab Sb, digantikan oleh: 1. S caz1 2. Z1 ab b 3. Z1 abz1 bz1
Contoh 2 (4) Lakukan penggantian aturan produksi yang rekursif kiri: Untuk yang memiliki symbol ruas kiri A: A Aa, digantikan oleh: 1. A az2 bdz2 2. Z2 a 3. Z2 az2
Contoh 2 (5) Hasil akhir setelah penghilangan rekursif kiri adalah: S ca A a bd S caz1 Z1 ab b Z1 abz1 bz1 A az2 bdz2 Z2 a Z2 az2 Perhatikan bahwa penghilangan rekursif kiri memunculkan symbol variabel baru, dan aturan produksi baru yang rekursif kanan.
LATIHAN 1. Terdapat tata bahasa bebas konteks: S Sa aac c A Ab ba Hilangkan dari rekursif kiri dari CFG di atas!