Chapter 9: Context-Free Grammar (CFG) dan Tata Bahasa Bebas Konteks
Konsep & Pembahasan Terperinci
1. Batasan DFA dan Kebutuhan Memori Rekursif
Kelemahan DFA:
Pada bahasa , jumlah huruf dan bebas dan tidak saling bergantung, sehingga cukup dikenali oleh DFA (ekspresi ).
Namun pada bahasa , jumlah huruf harus persis sama dengan jumlah huruf . Untuk memverifikasinya, mesin harus "menghitung" berapa banyak yang telah dibaca. Karena bisa bernilai berapa pun hingga tak hingga, DFA yang memorinya terbatas (fixed state) pasti gagal.
Solusi CFG:
CFG mendefinisikan aturan secara rekursif:
Setiap kali simbol terminal ditambahkan di sisi kiri, terminal otomatis ditambahkan di sisi kanan secara berpasangan.
2. Definisi Formal Context-Free Grammar (4-Tuple)
Suatu Context-Free Grammar didefinisikan sebagai 4-tuple:
Di mana:
: Himpunan berhingga simbol variabel / non-terminal. Simbol ini mewakili kategori sintaksis yang didefinisikan secara rekursif (contoh: , atau
sentence).: Himpunan berhingga simbol terminal (). Simbol ini adalah karakter alfabet dasar yang muncul dalam string akhir kalimat (contoh: ,
dog,runs). .: Simbol awal (start symbol), di mana .
: Himpunan berhingga aturan produksi (production rules), berbentuk:
di mana dan .
Studi Kasus & Derivasi Grammar
1. Grammar Bahasa Alami (*Natural Language*)
Aturan Produksi:
Pelacakan Derivasi Kalimat `"the dog walks"`:
2. CFG Bahasa Bersarang
Aturan Produksi:
Pelacakan Derivasi Kalimat `"aaabbb"`:
Notasi ringkas (multi-step derivation):
3. Konversi Ekspresi Reguler ke CFG
Ekspresi reguler dapat diubah ke aturan produksi CFG sebagai berikut:
Aturan ini memungkinkan pembangkitan sembarang barisan simbol dan dengan panjang berapapun.
Latihan Soal & Pembahasan
Level 1 - Basic
Soal 1.1
Sebutkan 4 komponen tuple formal dari CFG .
Soal 1.2
Apa perbedaan mendasar antara simbol variabel () dan simbol terminal ()?
Pembahasan/Jawaban
1.1 (variabel non-terminal), (terminal alfabet), (aturan produksi), dan (simbol awal start).
1.2 Simbol variabel () adalah entitas sintaksis perantara yang masih dapat diturunkan/digantikan melalui aturan produksi. Simbol terminal () adalah karakter literal akhir bahasa yang tidak dapat diturunkan lagi.
Level 2 - Intermediate
Soal 2.1
Rancang aturan produksi CFG untuk bahasa palindrom berpanjang genap di atas alfabet yaitu .
Pembahasan/Jawaban
Aturan produksi harus menambahkan simbol yang sama di sisi kiri dan kanan secara simetris:
Contoh derivasi string $0110$: .
Level 3 - Advanced
Soal 3.1
Jelaskan mengapa tahap analisis sintaktik pada kompilator bahasa pemrograman wajib menggunakan CFG dan bukan Finite Automata.
Pembahasan/Jawaban
Struktur kode program memiliki sifat bersarang (nested hierarchies) yang sangat dalam, seperti ekspresi matematika berpasangan kurung (A + (B * (C - D))), blok percabangan if ... else bersarang, dan pemanggilan fungsi rekursif. Finite Automata tidak memiliki mekanisme memori untuk memverifikasi kecocokan pasangan buka-tutup yang bertingkat banyak tersebut. CFG mampu memodelkan relasi bersarang ini secara alami melalui aturan produksi rekursif yang diproses menjadi pohon sintaks (parse tree).
Exam Cheat Sheet
4-Tuple CFG: .
Format Produksi: di mana dan .
Bahasa Non-Reguler Khas: dan palindrom .
Notasi Penurunan: (satu langkah derivasi), (banyak langkah derivasi).
Peran di Compiler: Menjadi basis parser pada tahap Analisis Sintaktik.
Referensi & Bahan Bacaan
Catatan Penutup
Bab 9 menyajikan tata bahasa bebas konteks secara deklaratif. Namun, mesin komputasi apa yang bertugas mengeksekusi dan memvalidasi bahasa CFL ini? Jawabannya akan dibahas pada bab penutup, Chapter 10: Pushdown Automata (PDA).