Tata Bahasa Bebas Konteks

23 Satu-satunya tempat yang tersisa untuk generalisasi pada ruas kiri dari aturan- aturan produksi itu. Tata bahasa frasa-tersruktur phrase-structured grammer adalah salah satu tata bahasa yang ruas kiri aturan-aturan produksinya itu bisa dibentuk dari suatu untai tak kosong atas N ∪ ∑, yang memuat suatu nonterminal. Jadi untuk sebuah tata bahasa frasa-terstruktur, koleksi dari aturan-aturan produksi P memenuhi: P ⊆ N ∪ ∑ N N ∪ ∑ × N ∪ ∑ Tata bahasa-tata bahasa frasa tersruktur juga dikenal sebagai tata bahasa- tata bahasa tipe 0 atau tak dibatasi. Istilah bebas konteks, apabila diterapkan pada tata bahasa-tata bahasa mengingatkan akan adanya tata bahasa-tata bahasa yang terhadapnya konteks bersifat sensitif. Tata bahasa-tata bahasa konteks sensitif context-sensitive grammer adalah tata bahasa-tata bahasa frasa terstruktur yang disini dibatasi oleh produksi-produksi α → β sedemikian sehingga | α | → | β |. Terdapat sebuah bentuk normal untuk tata bahasa-tata bahasa ini yang setiap produksinya berbentuk α 1 A α 2 → α 1 βα 2 dengan β ≠ ε. Produksi-produksi demikian mengizinkan penggantian nonterminal A dengan untai β hanya bila A terjadi dalam “konteks” dari α 1 dan α 2. Tata bahasa-tata bahasa konteks sensitif tidak dapat menurunkan bahasa yang sama banyak dengan tata bahasa-tata bahasa frasa terstruktur, tetapi tata bahasa-tata bahasa konteks sensitif mengizinkan terjadinya penurunan-penurunan didalam cara yang dapat diduga. Walaupun demikian, perhatikan bahwa karena | S | = 1 dan karena | ε | = 0, tidaklah mungkin untuk menurunkan untai kosong 24 dalam sebuah tata bahasa konteks sensitif yang benar. Bahasa-bahasa pemrograman sering kali dirancang agar konteks sensitif sebagai sebuah cara untuk menyederhanakan proses kompilasi. Contoh : Untuk tata bahasa bebas konteks yang ditentukan oleh S → AA A → AAA | a | bA | Ab Tata bahasa bebas konteks diatas dapat menurunkan untai b 2 aba 2 ba sebagai berikut: S = AA = AAAA = bAAAA = bbAAAA = bbaAAA = bbabAAA = bbabaAA = bbabaAbA = bbabaabA = bbabaaba = b 2 aba 2 ba. C.2. Penyederhanaan Tata Bahasa Bebas Konteks Penyederhanaan tata bahasa bebas konteks bertujuan untuk melakukan pembatasan sehingga tidak menghasilkan pohon penurunan yang memiliki kerumitan yang tidak perlu atau aturan produksi yang tidak berarti. Misalkan terdapat tata bahasa bebas konteks dengan simbol awal S : S → A A → B B → C C → D D → a | A Tata bahasa bebas konteks tersebut memiliki kelemahan terlalu panjang jalannya padahal berujung pada S → a, produksi D → A juga menyebabkan kerumitan. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 25 Suatu tata bahasa bebas konteks dapat disederhanakan dengan tiga cara sebagai berikut: 1. Penghilangan produksi useless tidak berguna 2. Penghilangan produksi unit 3. Penghilangan produksi ε. Selanjutnya akan dibahas satu persatu cara penyederhanaan tata bahasa bebas konteks tersebut. 1. Penghilangan Produksi Useless Produksi useless adalah: • Produksi yang memuat simbol variabel yang tidak memiliki penurunan yang akan menghasilkan terminal-terminal seluruhnya maksudnya menuju terminal , produksi ini tidak berguna karena bila diturunkan tidak akan pernah selesai masih ada simbol variabel yang tersisa . • Produksi yang tidak akan pernah dicapai dengan penurunan apapun dari simbol awal, sehingga produksi itu redundan berlebihan. Contoh : 1. Terdapat tata bahasa bebas konteks: S → aAb | cEB A → dBE | eeC B → ff C → ae D → h 26 Dari tata bahasa bebas konteks diatas dapat diterangkan bahwa: 1. Aturan produksi S → cEB, A → dBE, E tidak memiliki penurunan 2. Aturan produksi B → ff , D → h, redundan maka dari tata bahasa bebas konteks diatas, produksi yang useless: S → cEB A → dBE B → ff D → h Jadi tata bahasa bebas konteks setelah disederhanakan menjadi: S → aAb A → eeC C → ae 2. Terdapat tata bahasa bebas konteks: S → aBD B → cD | Ab D → ef A → Ed F → dc Dari tata bahasa bebas konteks diatas dapat diterangkan sebagai berikut: 1. Aturan produksi A → Ed, E tidak memiliki penurunan 2. Aturan produksi F → dc, redundan 3. Aturan produksi B → Ab, A tidak memiliki penurunan 27 maka dari tata bahasa bebas konteks tersebut yang useless yaitu: B → Ab A → Ed F → dc Jadi aturan produksi untuk tata bahasa bebas konteks tersebut setelah disederhanakan menjadi: S → aBD B → cD D → ef Pada prinsipnya setiap kali melakukan penyederhanaan harus diperiksa lagi aturan produksi yang tersisa, apakah semua produksi yang useless sudah dihilangkan. 2. Penghilangan Produksi Unit Produksi unit adalah produksi dimana ruas kiri dan ruas kanan aturan produksinya hanya berupa satu simbol variabel, misalkan A → B, C → D. Keberadaan produksi unit membuat tata bahasa bebas konteks memiliki kerumitan yang tidak perlu atau menambah panjang penurunan. Penyederhanaan ini dilakukan dengan melakukan penggantian aturan produksi unit. Contoh: 1. Tata bahasa bebas konteks: S → Cba | D A → bbC B → Sc | ddd C → eA | f | C D → E | SABC E → gh PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 28 Penggantian yang dilakukan dari tata bahasa bebas konteks diatas adalah: D →E menjadi D → gh C → C dihapus S → D menjadi S → gh | SABC Sehingga aturan produksi setelah penyederhanaan menjadi: S → Cba | gh | SABC A → bbC B → Sc | ddd C → eA | f D → gh | SABC E → gh 2. Tata bahasa bebas konteks: S → A S → Aa A → B B → C B → b C → D C → ab D → b Penggantian yang dilakukan dari tata bahasa bebas konteks diatas adalah: 1. C → D menjadi C → b 2. B → C menjadi B → b | ab, karena B → b sudah ada maka cukup dituliskan B → ab 3. A → B menjadi A → ab | b 4. S → A menjadi S → ab | b sehingga aturan produksi setelah penyederhanaan menjadi: PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 29 S → ab | b S →Aa A → ab | b B → ab B → b C → b C → ab D → b 3. Penghilangan Produksi ε. 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 → bcAd A → ε Pada kasus diatas 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 → bcAd A → bd | ε Pada kasus diatas A nullable, tapi A → ε bukan satu-satunya produksi dari A, maka hasil penyederhanaannya menjadi: 30 S → bcAd | bcd A → bd Contoh: 1. Terdapat tata bahasa bebas konteks: S → AB A → abB | aCa | ε B → bA | BB | ε C → ε Variabel yang nullable adalah A, B, C. Dari S → AB maka S juga nullable, maka dilakukan penggantian: A → aCa menjadi A → aa B → bA menjadi B → bA | b B → BB menjadi B → BB | B A → abB menjadi A → abB | ab S → AB menjadi S → AB | A | B | ε C → ε, B → ε, A → ε dihapus Perlu diperhatikan bahwa untuk penggantian S → AB disini tetap mempertahankan produksi S → ε, karena S merupakan simbol awal. Ini satu- satunya perkecualian produksi ε yang dihasilkan oleh simbol awal. Jadi hasil akhir penyederhanaannya menjadi: S → AB | A | B | ε A → abB | ab | aa B → bA | b | BB | B 2. Tata bahasa bebas konteks: S → dA | Bd A → bc PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 31 A → ε B → c Variabel yang nullable adalah A. A → ε bukan penurunan satu-satunya dari A terdapat A → bc, maka S → dA diganti menjadi S → dA | d. A → ε dihapus. Tata bahasa bebas konteks setelah penyederhanaan menjadi: S → dA | d Bd A → bc B → c Pada prinsipnya ketiga penyederhanaan penghilangan useless, unit dan ε dilakukan bersama pada suatu tata bahasa bebas konteks, yang nantinya menyiapkan tata bahasa bebas konteks tersebut untuk diubah ke dalam suatu Bentuk Normal Chomsky . Bentuk Normal Chomsky tidak penulis bahas. Hal yang memerlukan perhatian dari tata bahasa bebas konteks adalah penghilangan suatu tipe produksi bisa menghasilkan produksi tipe yang lain, hal ini didasari kenyataan bahwa penghilangan produksi ε bisa menghasilkan produksi unit. Perhatikan juga bahwa penghilangan produksi unit tidak menghasilkan produksi ε, dan penghilangan produksi useless tidak menghasilkan produksi unit maupun ε. Maka semua produksi yang tidak diinginkan bisa dihapuskan dengan melakukan urutan sebagai berikut: • Menghilangkan produksi ε • Menghilangkan produksi unit • Menghilangkan produksi useless 32 Hasil yang diperoleh nanti adalah tata bahasa yang sudah bebas dari ketiga jenis produksi tersebut. Contoh: 1. Tata bahasa bebas konteks: S → AA | C | bd A → Bb | ε B → AB | d C → de • Pertama-tama dilakukan penghilangan produksi ε, sehingga aturan produksinya menjadi : S → A | AA | C | bd A → Bb B → B | AB | d C → de • Selanjutnya penghilangan produksi unit, sehingga aturan produksinya menjadi: S → Bb | AA | de | bd A → Bb B → AB | d C → de • Penghilangan produksi useless, maka hasilnya menjadi: S → Bb | AA | de | bd A → Bb B → AB | de Jadi hasil akhir aturan produksi tidak lagi memiliki produksi ε, produksi unit maupun produksi useless. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 33

D. Parsing

Dengan diturunkannya sebuah untai dari tata bahasa bebas konteks, simbol awal diganti oleh suatu untai. Setiap nonterminal dalam untai ini, secara bergantian digantikan oleh untai yang lain, dan seterusnya sampai tinggal tersisa untai yang hanya terdiri dari simbol-simbol terminal. Selanjutnya tidak ada lagi penggantian karena tidak ada lagi nonterminal untuk digantikan. Kadang-kadang sangat berguna untuk menggambarkan penurunan itu, yaitu yang menunjukkan kontribusi dari masing-masing nonterminal pada untai akhir dari terminal- terminal. Gambar seperti ini dinamakan pohon penurunan atau pohon penguraian derivation tree atau pharse tree. Sebuah pohon tree adalah suatu graph terhubung tidak sirkuler, yang memiliki satu simpul nodevertex disebut akar root dan dari situ memiliki lintasan ke setiap simpul. Pohon penurunan derivation treepharse tree berguna untuk menggambarkan bagaimana memperoleh suatu string untai dengan cara menurunkan simbol-simbol variabel menjadi simbol-simbol terminal. Setiap simbol variabel akan diturunkan menjadi terminal, sampai tidak ada simbol variabel yang belum tergantikan. Misal terdapat tata bahasa bebas konteks dengan aturan produksi simbol awal S, selanjutnya didalam bahasan ini S digunakan sebagai simbol awal untuk tata bahasa bebas konteks: S → AA A → AAA | a | bA | Ab PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 34 Dari aturan produksi tata bahasa bebas konteks tersebut akan digambarkan pohon penurunan untuk memperoleh untai ‘bbabaaba’. Pada pohon tersebut simbol awal akan menjadi akar root. Setiap kali penurunan dipilih aturan produksi yang menuju ke solusi. Simbol-simbol variabel akan menjadi simpul-simpul yang mempunyai anak. Simpul-simpul yang tidak mempunyai anak akan menjadi simbol terminal. Jadi gambar dari aturan produksi tersebut adalah: S A A b A A A A b A b A a b A a a a Proses penurunan atau parsing bisa dilakukan dengan cara : 1. Penurunan terkiri leftmost derivation : simbol variabel terkiri yang diperluas terlebih dulu. 2. Penurunan terkanan rightmost derivation : simbol variabel terkanan yang diperluas terlebih dulu. Misal terdapat tata bahasa bebas konteks: S → aAS | a A → SbA | ba Untuk memperoleh untai ‘aabbaa’ dari tata bahasa bebas konteks diatas ‘=’ bisa dibaca ‘menurunkan’ : 35 1. Dengan penurunan terkiri : S = aAS = aSbAS = aabAS = aabbaS = aabbaa 2. Dengan penurunan terkanan : S = aAS = aAa = aSbAa = aSbbaa = aabbaa Meskipun proses penurunannya berbeda akan tetapi memiliki pohon penurunan yang sama, yaitu sebagai berikut: S a A S S b A a a b a Biasanya persoalan yang diberikan berkaitan dengan pohon penurunan adalah untuk mencari penurunan yang hasilnya menuju kepada suatu untai yang ditentukan. Dalam hal ini, perlu untuk melakukan percobaan pemililihan aturan produksi yang bisa menuju ke solusi. Misalkan sebuah tata bahasa bebas konteks memiliki aturan produksi sebagai berikut: S → aAd | aB A → b | c B → ccd | ddc Pohon penurunan dari tata bahasa bebas konteks diatas untuk memperoleh untai ‘accd’ bisa dilihat pada gambar berikut ini: S a B c c d PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI