12. PENGHILANGAN REKURSIF KIRI
2 12.1 Aturan Produksi Rekursif
Aturan produksi yang rekursif adalah aturanproduksi yang hasil produksinya (ruas kanan)mengandung variabel yang sama dengan ruas kiri.Aturan produksi berikut adalah aturan produksi yang rekursif,S dSA AbB adBPerhatikan aturan produksi diatas!Setiap hasil produksi (ruas kanan) mengandung variabel yang sama dengan ruas kiri.
3 Aturan produksi yang rekursif dibagi menjadi dua, yaitu rekursif kiri dan rekursif kanan.
Aturan produksi dikatakan rekursif kiri jika pada awal hasil produksi mengandung variabel yang sama dengan ruas kiri.Bentuk umum aturan produksi rekursif kiri :A A ; = (V⋃T)*Sebagai contoh:S SaA AbB Bad
4 Aturan produksi dikatakan rekursif kanan jika pada akhir hasil produksi mengandung variabel yang sama dengan ruas kiri.Bentuk umum aturan produksi rekursif kanan :A A ; = (V⋃T)*Sebagai contoh:S aSA bdAB aB
5 a A c bProduksi yang rekursif kanan menyebabkan pohon penurunantumbuh ke kanan, sedangkan produksi yang rekursif kirimenyebabkan pohon penurunan tumbuh ke kiri.Sebagai contoh:S aAcA AbDalam banyak penerapan tata bahasa , rekursif kiri tak diinginkan karena mengakibatkan penurunan yang menghasilkan loop, sehingga kita perlu menghilangkan rekursif kiri dari aturan produksi.
6 12.2 Tahapan Penghilangan Rekursif Kiri
Langkah-langkah penghilangan penghilanganrekursif kiri.Pisahkan aturan produksi yang rekursif kiridengan yang tidak rekursif kiri.Sebagai contoh:Aturan produksi yang rekursif kiri,A A1 | A2 | A3 | … | AnAturan produksi yang bukan rekursif kiri,A 1 | 2 | 3 | … | m
7 ii) Tentukan simbol-simbol 1, 2, 3, … , n dan
1, 2, 3, … , m dari setiap aturan produksiyang memiliki simbol ruas kiri yang sama.iii) Lakukan penggantian aturan produksi yangrekursif kiri menjadi sebagai berikut:A 1 Z | 2 Z | 3 Z | … | m ZZ 1 | 2 | 3 | … , nZ 1 | 2 | 3 | … | m
8 aturan produksi rekursif kiri
CFG yang mengandungaturan produksi rekursif kiriAturan produksi yang tidak rekursif kiriAturan produksi yang rekursif kiriLakukanpenggantianCFG yang bebas dari aturan produksi yangrekursif kiri
9 Contoh 12.1Hilangkan rekursif kiri dari aturan produksi berikut!S Sab | aSc | dd | ff | SbdPenyelesaian:Aturan produksi rekursif kiri:S Sab | Sbd1 = ab ; 2 = bdAturan produksi tidak rekursif kiri:S aSc | dd | ff1 = aSc ; 2 = dd ; 3 = ff
10 Aturan produksi rekursif kiri, S Sab | Sbd digantikan oleh:
S aScZ1 | dd Z1 | ff Z1Z1 ab | bdZ1 abZ1 | bdZ1Hasil akhir setelah penghilangan rekursif kiri adalah:S aSc | dd | ff
11 Contoh 12.2Hilangkan rekursif kiri dari aturan produksi berikut!S Sab | Sb | cAA Aa | a | bdPenyelesaian:Aturan produksi rekursif kiri, S Sab | Sb1 = ab ; 2 = bAturan produksi rekursif kiri, A Aa1 = aAturan produksi tidak rekursif kiri, S cA1 = cAAturan produksi tidak rekursif kiri, A a | bd1 = a ; 2 = bd
12 Pergantian aturanproduksi rekursif kiri:S Sab | Sb digantikanoleh:S caZ1Z1 ab | bZ1 abZ1 | bZ1A Aa digantikanA aZ2 | bdZ2Z2 aZ2 aZ2Hasil akhir setelahpenghilangan rekursifkiri adalah:S cAA a | bdS caZ1Z1 ab | bZ1 abZ1 | bZ1A aZ2 | bdZ2Z2 aZ2 aZ2
13 Contoh 12.3Hilangkan rekursif kiri dari aturan produksi berikut!S Sa | aAc | c | A Ab | baPenyelesaian:Aturan produksi rekursif kiri, S Sa1 = aAturan produksi rekursif kiri, A Ab1 = bAturan produksi tidak rekursif kiri, S aAC | c | 1 = aAc ; 2 = c ; 3 = Aturan produksi tidak rekursif kiri, A ba1 = ba
14 Pergantian aturanproduksi rekursif kiri:S Sa digantikanoleh:S aAcZ1 | cZ1 | Z1Z1 aZ1 aZ1A Ab digantikanA baZ2Z2 bZ2 bZ2Hasil akhir setelahpenghilangan rekursifkiri adalah:S aAC | c | S aAcZ1 | cZ1 | Z1A baA baZ2Z1 aZ1 aZ1Z2 bZ2 bZ2
15 LatihanLakukan penghilangan rekursif kiri padatata bahasa bebas konteks berikut!A Aa | aBc2. A Aa | aBcB BAa | A |