materi

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 {aibji,j0}\{a^i b^j \mid i, j \ge 0\}, jumlah huruf aa dan bb bebas dan tidak saling bergantung, sehingga cukup dikenali oleh DFA (ekspresi aba^*b^*).

    Namun pada bahasa {anbnn0}\{a^n b^n \mid n \ge 0\}, jumlah huruf aa harus persis sama dengan jumlah huruf bb. Untuk memverifikasinya, mesin harus "menghitung" berapa banyak aa yang telah dibaca. Karena nn bisa bernilai berapa pun hingga tak hingga, DFA yang memorinya terbatas (fixed state) pasti gagal.

  • Solusi CFG:

    CFG mendefinisikan aturan secara rekursif:

SaSbϵS \longrightarrow aSb \mid \epsilon

Setiap kali simbol terminal aa ditambahkan di sisi kiri, terminal bb otomatis ditambahkan di sisi kanan secara berpasangan.


2. Definisi Formal Context-Free Grammar (4-Tuple)

Suatu Context-Free Grammar didefinisikan sebagai 4-tuple:

G=(V,T,P,S)G = (V, T, P, S)

Di mana:

  1. VV : Himpunan berhingga simbol variabel / non-terminal. Simbol ini mewakili kategori sintaksis yang didefinisikan secara rekursif (contoh: S,A,BS, A, B, atau sentence).

  2. TT : Himpunan berhingga simbol terminal (T=ΣT = \Sigma). Simbol ini adalah karakter alfabet dasar yang muncul dalam string akhir kalimat (contoh: a,ba, b, dog, runs). VT=V \cap T = \emptyset.

  3. SS : Simbol awal (start symbol), di mana SVS \in V.

  4. PP : Himpunan berhingga aturan produksi (production rules), berbentuk:

AαA \longrightarrow \alpha

di mana AVA \in V dan α(VT)\alpha \in (V \cup T)^*.


Studi Kasus & Derivasi Grammar

1. Grammar Bahasa Alami (*Natural Language*)

Aturan Produksi:

  • sentencenoun_phrase predicate\text{sentence} \to \text{noun\_phrase } \text{predicate}
  • noun_phrasearticle noun\text{noun\_phrase} \to \text{article } \text{noun}
  • predicateverb\text{predicate} \to \text{verb}
  • articleathe\text{article} \to a \mid the
  • nouncatdog\text{noun} \to cat \mid dog
  • verbrunswalks\text{verb} \to runs \mid walks

Pelacakan Derivasi Kalimat `"the dog walks"`:

sentencenoun_phrase predicatenoun_phrase verbarticle noun verbthe noun verbthe dog verbthe dog walks\begin{aligned} \text{sentence} &\Longrightarrow \text{noun\_phrase } \text{predicate} \\ &\Longrightarrow \text{noun\_phrase } \text{verb} \\ &\Longrightarrow \text{article } \text{noun } \text{verb} \\ &\Longrightarrow the \text{ noun } \text{verb} \\ &\Longrightarrow the \text{ dog } \text{verb} \\ &\Longrightarrow the \text{ dog walks} \end{aligned}

2. CFG Bahasa Bersarang L={anbn}L = \{a^n b^n\}

Aturan Produksi:

SaSbϵS \longrightarrow aSb \mid \epsilon

Pelacakan Derivasi Kalimat `"aaabbb"`:

SaSbaaSbbaaaSbbbaaa(ϵ)bbb=aaabbbS \Longrightarrow aSb \Longrightarrow aaSbb \Longrightarrow aaaSbbb \Longrightarrow aaa(\epsilon)bbb = aaabbb

Notasi ringkas (multi-step derivation):

SaaabbbS \Longrightarrow^* aaabbb

3. Konversi Ekspresi Reguler (a+b)(a+b)^* ke CFG

Ekspresi reguler (a+b)(a+b)^* dapat diubah ke aturan produksi CFG sebagai berikut:

SaSbSabϵS \longrightarrow aS \mid bS \mid a \mid b \mid \epsilon

Aturan ini memungkinkan pembangkitan sembarang barisan simbol aa dan bb dengan panjang berapapun.


Latihan Soal & Pembahasan

Level 1 - Basic

Soal 1.1

Sebutkan 4 komponen tuple formal dari CFG G=(V,T,P,S)G = (V, T, P, S).

Soal 1.2

Apa perbedaan mendasar antara simbol variabel (VV) dan simbol terminal (TT)?


Pembahasan/Jawaban

1.1 VV (variabel non-terminal), TT (terminal alfabet), PP (aturan produksi), dan SS (simbol awal start).

1.2 Simbol variabel (VV) adalah entitas sintaksis perantara yang masih dapat diturunkan/digantikan melalui aturan produksi. Simbol terminal (TT) 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 Σ={0,1}\Sigma = \{0, 1\} yaitu L={wwRw{0,1}}L = \{w w^R \mid w \in \{0, 1\}^*\}.


Pembahasan/Jawaban

Aturan produksi harus menambahkan simbol yang sama di sisi kiri dan kanan secara simetris:

S0S01S1ϵS \longrightarrow 0S0 \mid 1S1 \mid \epsilon

Contoh derivasi string $0110$: S0S00(1S1)001(ϵ)10=0110S \Rightarrow 0S0 \Rightarrow 0(1S1)0 \Rightarrow 01(\epsilon)10 = 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: G=(V,T,P,S)G = (V, T, P, S).

  • Format Produksi: AαA \to \alpha di mana AVA \in V dan α(VT)\alpha \in (V \cup T)^*.

  • Bahasa Non-Reguler Khas: {anbnn0}\{a^n b^n \mid n \ge 0\} dan palindrom {wwR}\{w w^R\}.

  • Notasi Penurunan: \Rightarrow (satu langkah derivasi), \Rightarrow^* (banyak langkah derivasi).

  • Peran di Compiler: Menjadi basis parser pada tahap Analisis Sintaktik.


Referensi & Bahan Bacaan

  1. Noam Chomsky. Three Models for the Description of Language (IRE Transactions on Information Theory, 1956).

  2. Hopcroft, John E., Rajeev Motwani, Jeffrey D. Ullman. Introduction to Automata Theory (Chapter 5: Context-Free Grammars and Languages).

  3. Michael Sipser. Introduction to the Theory of Computation (Chapter 2: Context-Free Languages).

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).