Penyederhanaan Tatabahasa Bebas Konteks Otomata dan Pengantar Kompilasi

Penyederhanaan Tatabahasa Bebas Konteks Otomata dan Pengantar Kompilasi

Deskripsi • Penyederhanaan tatabahasa bebas konteks

Tujuan Instruksional Khusus (TIK) 1. Menjelaskan tujuan penyederhanaan 2. Melakukan penyederhanaan tatabahasa bebas konteks

Transformasi CFG • Dimaksudkan untuk memperoleh CFG yang memenuhi kriteria-kriteria tertentu yang lebih efisien. • Transformasi boleh dilakukan asalkan tidak mengganggu maksud dan bahasa yang dihasilkan dari Tata Bahasa Bebas Konteks baru.

Pendahuluan : Tujuan Penyederhanaan Melakukan pembatasan sehingga tidak menghasilkan pohon penurunan yang memiliki kerumitan yang tidak perlu atau aturan produksi yang tidak berarti. Ex 1: S AB | a Aturan produksi S AB tidak berarti karena B tidak memiliki penurunan Ex 2 : S A A B B C C D D a | A Memiliki kelemahan terlalu panjang jalannya padahal berujung pada S a, produksi D A juga menyebabkan kerumitan (redundant).

Cara Penyederhanaan: 1. Penghilangan produksi ε 2. Penghilangan produksi unit 3. Penghilangan produksi useless ( tidak berguna ) Prakteknya ketiga penyederhanaan tersebut dilakukan bersama dan berurutan pada suatu tata bahasa bebas konteks, yang nantinya menyiapkan tata bahasa bebas konteks tersebut untuk diubah kedalam suatu bentuk normal Chomsky Teknik Informatika UPNVY 6

Konsep sebagai berikut : 1. Fokus pada yang nullable atau aturan produksi yang mengarah pada ɛ (empty). 2. Aturan produksi α-> ɛ, jika : Tunggal maka cukup dieliminasi, tetapi jika ada bukan satu 2 nya nullable maka seolah α-> ɛ memberikan dampak pada aturan produksi tsb namun pada akhirnya tetap dieliminasi.

Penghilangan Produksi ε (1) Produksi ε adalah produksi dalam bentuk α ε atau bisa dianggap sebagai produksi kosong ( empty ). Penghilangan produksi ε dilakukan dengan melakukan penggantian produksi yang memuat variabel yang bisa menuju produksi ε, atau biasa disebut nullable. Prinsip penggantiannya bisa dilihat kasus berikut: S bc. Ad A ε A nullable serta A ε satu-satunya produksi dari A, maka variabel A bisa ditiadakan, hasil penyederhanaan tata bahasa bebas konteks menjadi: S bcd Tetapi bila kasusnya: S bc. Ad A bd | ε A nullable, tapi A ε bukan satu-satunya produksi dari A, maka hasil penyederhanaan: S bc. Ad | bcd A bd Teknik Informatika UPNVY 8

Penghilangan Produksi ε (2) Contoh lagi, terdapat tata bahasa bebas konteks: S Ab | Cd A d C ε Variabel yang nullable adalah variabel C. Karena penurunan C ε merupakan penurunan satu-satunya dari C, maka S Cd diganti menjadi S d. Kemudian produksi C ε dihapus. Setelah penyederhanaan menjadi: S Ab | d A d

Penghilangan Produksi ε (lanjut) Contoh lain lagi: S d. A | Bd A bc | ε B c Variabel yang nullable adalah variabel A. A ε bukan penurunan satu-satunya dari A ( terdapat A bc ), maka kita ganti S d. A menjadi S d. A | d Aturan A ε dihapus, menjadi S d. A | d | Bd A bc B c

Penghilangan Produksi ε (3) Contoh tata bahasa bebas konteks: S ABa. C A BC B b | ε C D | ε D d Langkah 2 : S ABa. C (huruf A direplace dengan BC) menjadi BCBa. C (huruf B dan C depan direplace dengan ε) menjadi Ba. C ABa. C (huruf B direplace dengan ε) menjadi Aa. C ABa. C (huruf C direplace dengan ε ) menjadi ABa Ba. C (huruf B direplace dengan ε) menjadi a. C Aa. C (huruf C direplace dengan ε) menjadi Aa ABa (huruf A direplace dengan BC) menjadi BCBa. Ba (huruf B direplace dengan ε) menjadi a Hasil penyederhanaan: S ABa. C | Aa. C | ABa | a. C | Aa | Ba | a A B | C | BC B b C D D d

Penghilangan Produksi Unit • Produksi dimana ruas kiri dan kanan aturan produksi hanya berupa satu simbol variabel, misalkan: A B, C D. • Keberadaannya membuat tata bahasa memiliki kerumitan yang tak perlu. • Penyederhanaan dilakukan dengan melakukan penggantian aturan produksi unit. Contoh: S Sb | C C D | ef D dd Dilakukan penggantian berturutan mulai dari aturan produksi yang paling dekat menuju ke penurunan terminal-terminal : C D dan D dd maka C dd S C maka S dd | ef Sehingga aturan produksi setelah penyederhanaan: S Sb | dd | ef C dd | ef D dd

Penghilangan Produksi Unit (2) Contoh lain: S A | Aa A B B C | b C D | ab D b Penggantian yang dilakukan : C D => C b B C => B b | ab, (karena B b sudah ada, maka cukup dituliskan B ab) A B => A ab | b S A => ab | b Sehingga aturan produksinya S ab | Aa A ab | b B ab | b C b | ab D b

Penghilangan Produksi Unit (3) Contoh lagi: S Cba | D A bb. C B Sc | ddd C e. An | f | C D E | SABC E gh Penggantian yang dilakukan: D E menjadi D gh C C , kita hapus S D menjadi S gh | SABC Sehingga aturan produksi setelah penyederhanaan: S Cba | gh | SABC A bb. C B Sc | ddd C e. An | f D gh | SABC E gh

Penghilangan Produksi Useless (1) Produksi yang memuat symbol variabel yang tidak memiliki penurunan yang akan menghasilkan terminal-terminal seluruhnya. • Produksi yang tidak akan pernah dicapai dengan penurunan apapun dari simbol awal, sehingga produksi itu redundan ( berlebih ) Ex 1: S a. Sa | Abd | Bde A Ada B BBB | a Maka simbol variabel A tidak memiliki penurunan yang menuju terminal, sehingga bisa dihilangkan Konsekuensinya aturan produksi S Abd tidak memiliki penurunan. Penyederhanaan menjadi: S a. Sa | Bde B BBB | a •

Penghilangan Produksi Useless (2) Contoh : S a. Ab | c. EB A d. BE | ee. C B ff C ae D h Analisa : 1 Aturan produksi S c. EB, A d. BE dapat dihilangkan ( E tidak memiliki penurunan) 2 Aturan produksi D h, redundan Sisa aturan produksi S a. Ab A ee. C B ff C ae Analisis lagi B ff juga redundan, Hasil penyederhanaan menjadi: S a. Ab A ee. C C ae Teknik Informatika UPNVY 16

Penghilangan Produksi Useless (3) Contoh lain lagi : S a. B A bc. D | d. AC B e | Ab C b. Cb | ad. F | ab F c. FB Analisis 1) Aturan produksi A bc. D, variabel D tidak memiliki penurunan 2) Konsekuensi no (1), simbol variabel A tidak memiliki penurunan yang menuju terminal (tinggal A d. AC) shg bisa dihapus. 3) Konsekuensi no (2), B Ab tidak memiliki penurunan 4) Simbol variabel F tidak memiliki penurunan yang menuju terminal 5) Konsekuensi no (4), C ad. F tidak memiliki penurunan Setelah disederhanakan menjadi: S a. B B e C b. Cb | ab

Penghilangan Produksi Useless (4) Contoh lain lagi : S a. BD A Ed B c. D | Ab D ef F dc Analisa 1) Aturan produksi A Ed, E tidak memiliki penurunan 2) Aturan produksi F dc, redundan Setiap kali melakukan Sisa aturan produksi: penyederhanaan diperiksa lagi S a. BD aturan produksi yang tersisa, B c. D | Ab D ef apakah semua produksi yang Analisa lagi useless sudah hilang. B Ab, A tidak memiliki penurunan. Hasil penyederhanaan: S a. BD B c. D D ef

Digabung menjadi satu … Contoh : S AA | C | bd A Bb | ε B AB | d C de Hilangkan produksi ε, sehingga menjadi: S A | AA | C | bd A Bb B B | AB | d C de Selanjutnya penghilangan produksi unit menjadi: S Bb | AA | de | bd A Bb B AB | d C de Penghilangan produksi unit bisa menghasilkan produksi useless. Terakhir dilakukan penghilangan produksi useless: S Bb | AA | de | bd A Bb B AB | d Hasil akhir aturan produksi tidak lagi memiliki produksi ε, produksi unit, maupun produksi useless.

Resume • Penghilangan produksi e dapat menghasilkan produksi unit, tetapi penghilangan produksi unit tidak akan menghasilkan produksi e, dan penghilangan produksi useless tidak akan menghasilkan produksi e dan produksi unit. • Jadi urutan pengerjaannya adalah: – Hilangkan produksi e – Hilangkan produksi unit – Hilangkan produksi useless

Referensi Utama Firrar Utdirartatmo, Teori Bahasa dan Otomata, JJ Learning, 2001 Firrar Utdirartatmo, Teknik Kompilasi, JJ Learning, 2001 Pendamping Aho, Ulman. The Teory of Parsing Translation And Compiling. Prentice-Hall. 1972 Grune , Modern Compiler Design, John Wiley and Sons , 2002 Peter Linz, An Introduction to Formal Language and Automata, DC Healt & Co, 1990
- Slides: 21