Back to Soal Latihan UAS TBFO
Problem Set: Context-Free Grammar & Parse Tree
Mata Kuliah: Teori Bahasa Formal dan Otomata
Topik: CFG, Derivasi, Parse Tree, dan Ekuivalensi
Estimasi Waktu: 90 Menit
Total Soal: 30 Soal
Petunjuk Pengerjaan
-
Soal di bawah ini adalah Pilihan Ganda Majemuk.
-
Setiap pertanyaan mungkin memiliki lebih dari satu jawaban yang benar.
-
Pilihlah SEMUA opsi yang Anda anggap benar sesuai dengan materi yang telah dipelajari.
BAGIAN I: Definisi Fundamental & Komponen (CFG)
Fokus: Pemahaman definisi formal 4-tuple, komponen grammar, dan konsep dasar derivasi.
- Sebuah Context-Free Grammar (CFG) didefinisikan secara formal sebagai tupel . Manakah pernyataan berikut yang BENAR mengenai komponen-komponen tersebut?
-
a. adalah himpunan simbol terminal yang tidak bisa dipecah lagi.
-
b. dan tidak boleh memiliki irisan ().
-
c. berisi aturan produksi dengan format , di mana .
-
d. adalah anggota dari himpunan (Terminal).
-
e. adalah simbol awal yang merupakan anggota dari .
- Mengenai simbol Terminal () dan Variabel (), manakah karakteristik yang tepat?
-
a. Variabel sering dianalogikan sebagai kategori sintaksis seperti (Subject) atau (Verb).
-
b. Terminal adalah elemen dasar pembentuk string akhir (seperti if, else, 0, 1).
-
c. Variabel dapat digantikan oleh string kosong ().
-
d. Terminal dapat muncul di sisi kiri tanda panah () pada aturan produksi CFG standar.
-
e. Variabel hanya boleh muncul di sisi kanan aturan produksi.
- Tinjau aturan produksi berikut: . Apa makna dari aturan ini?
-
a. Variabel dapat digantikan oleh string “0B1”.
-
b. String “0B1” pasti adalah string akhir (terminal).
-
c. Simbol ‘0’ dan ‘1’ adalah terminal, sedangkan adalah variabel.
-
d. Aturan ini bersifat rekursif secara langsung.
-
e. menghasilkan string yang panjangnya minimal 3 simbol (jika tidak kosong).
- Apa yang dimaksud dengan Derivasi dalam konteks CFG?
-
a. Proses pembentukan Parse Tree dari bawah ke atas (Bottom-up).
-
b. Proses sekuensial mengubah Start Symbol menjadi string terminal menggunakan aturan produksi.
-
c. Himpunan semua string yang bisa dihasilkan oleh grammar.
-
d. Penerapan aturan produksi untuk mengganti variabel dengan body produksinya.
-
e. Proses yang selalu menghasilkan string biner.
- Manakah pernyataan yang BENAR mengenai notasi derivasi?
-
a. dibaca “menghasilkan dalam satu langkah”.
-
b. dibaca “menghasilkan dalam nol atau lebih langkah”.
-
c. Jika , maka kita bisa menulis .
-
d. Notasi hanya digunakan untuk derivasi terkiri (leftmost).
-
e. adalah pernyataan yang valid (nol langkah).
- Apa definisi dari Bahasa yang dihasilkan oleh grammar, ?
-
a. Himpunan semua sentential form yang mungkin muncul.
-
b. Himpunan semua string terminal di mana .
-
c. Himpunan variabel yang bisa dicapai dari .
-
d. Semua string yang mengandung setidaknya satu variabel.
-
e. Himpunan string yang valid menurut aturan produksi grammar .
- Mengenai “Sentential Form”, manakah pernyataan yang valid?
-
a. Semua string di dalam adalah sentential form.
-
b. Sentential form bisa terdiri dari campuran variabel dan terminal.
-
c. Sentential form hanya boleh berisi terminal saja.
-
d. Start symbol adalah sebuah sentential form.
-
e. Sentential form adalah hasil derivasi parsial dari .
- Dalam Hirarki Chomsky, posisi CFG adalah:
-
a. Tipe-3 (Regular Grammar).
-
b. Tipe-2 (Context-Free Grammar).
-
c. Lebih kuat daripada Finite Automata.
-
d. Lebih lemah daripada Regular Expression.
-
e. Setara dengan Pushdown Automata (PDA).
- Notasi BNF (Backus-Naur Form) sering digunakan untuk menulis CFG. Karakteristiknya adalah:
-
a. Menggunakan tanda ::= sebagai pengganti →.
-
b. Variabel biasanya diapit kurung sudut <…>.
-
c. Simbol | digunakan untuk menyatakan pilihan (OR).
-
d. Tidak bisa merepresentasikan grammar rekursif.
-
e. Identik secara kekuatan ekspresif dengan CFG standar.
- Sebuah grammar dikatakan AMBIGU jika:
-
a. Terdapat sebuah string yang memiliki lebih dari satu Leftmost Derivation.
-
b. Terdapat sebuah string yang memiliki lebih dari satu Parse Tree yang berbeda.
-
c. Terdapat sebuah string yang memiliki Leftmost dan Rightmost derivation yang berbeda urutannya (namun pohonnya sama).
-
d. Grammar tersebut memiliki aturan produksi rekursif.
-
e. Satu string dapat diinterpretasikan dengan struktur sintaksis yang berbeda.
BAGIAN II: Struktur Parse Tree & Penelusuran
Fokus: Aturan pembentukan pohon, hubungan dengan derivasi, dan tracing visual.
- Syarat valid sebuah Parse Tree untuk CFG adalah:
-
a. Akar (Root) harus dilabeli dengan simbol awal .
-
b. Setiap simpul internal (interior node) harus dilabeli dengan Terminal.
-
c. Setiap simpul internal harus dilabeli dengan Variabel.
-
d. Daun (Leaf) boleh dilabeli dengan Variabel, Terminal, atau .
-
e. Setiap simpul internal dan anak-anaknya harus merepresentasikan satu aturan produksi di .
- Mengenai “Yield” dari sebuah Parse Tree:
-
a. Yield adalah string yang dibentuk dengan membaca daun dari kiri ke kanan.
-
b. Yield dari Parse Tree yang lengkap hanya berisi simbol terminal.
-
c. Yield merepresentasikan string input yang sedang dianalisis.
-
d. Yield adalah tinggi dari pohon penurunan.
-
e. Yield harus selalu sama dengan Start Symbol.
- Jika sebuah daun (leaf) pada Parse Tree dilabeli dengan (epsilon), maka:
-
a. Daun tersebut merepresentasikan string kosong.
-
b. Simpul tersebut harus menjadi satu-satunya anak dari induknya.
-
c. Pohon tersebut tidak valid.
-
d. Aturan produksi yang digunakan berbentuk .
-
e. Induk dari simpul tersebut haruslah Start Symbol.
- Perbedaan antara Leftmost Derivation () dan Rightmost Derivation () adalah:
-
a. Leftmost selalu mengganti variabel paling kiri di setiap langkah.
-
b. Rightmost selalu mengganti variabel paling kanan di setiap langkah.
-
c. Hasil string akhir (yield) pasti berbeda antara Leftmost dan Rightmost.
-
d. Keduanya menghasilkan Parse Tree yang sama untuk struktur sintaksis yang sama.
-
e. Rightmost derivation membaca string dari kanan ke kiri.
- Diberikan Grammar: , , . Manakah langkah derivasi yang valid untuk string “aab”?
-
a.
-
b.
-
c.
-
d. Langkah (b) adalah contoh Rightmost Derivation.
-
e. Langkah (a) adalah contoh Leftmost Derivation.
- Mengapa Parse Tree penting dalam desain kompilator?
-
a. Membantu visualisasi struktur hierarki kode.
-
b. Digunakan untuk mendeteksi ambiguitas sintaksis.
-
c. Menjadi dasar pembentukan Abstract Syntax Tree (AST).
-
d. Menjamin program bebas dari error logika.
-
e. Menunjukkan presedensi operator (misal perkalian vs penjumlahan).
- Concrete Syntax Tree (CST) berbeda dengan Abstract Syntax Tree (AST) dalam hal:
-
a. CST menampilkan semua detail sintaksis termasuk tanda baca/kurung.
-
b. AST lebih ringkas dan hanya menyimpan informasi struktural esensial.
-
c. AST dibuat sebelum CST dalam proses kompilasi.
-
d. CST digunakan untuk analisis semantik, sedangkan AST untuk parsing.
-
e. AST sering menghilangkan node yang tidak perlu seperti variabel perantara tunggal.
- Perhatikan grammar ekspresi: . Mengapa grammar ini disebut ambigu?
-
a. String id + id * id bisa memiliki dua pohon berbeda.
-
b. Tidak jelas apakah + atau * yang harus dieksekusi duluan.
-
c. Terdapat rekursi kiri ().
-
d. Satu string bisa memiliki interpretasi (id+id)*id atau id+(id*id).
-
e. Karena menggunakan simbol id.
- Jika sebuah Parse Tree memiliki tinggi (height) , maka:
-
a. Derivasi yang menghasilkannya memiliki panjang minimal .
-
b. Simpul akar berada pada kedalaman 0 atau 1.
-
c. Waktu parsing selalu linear terhadap .
-
d. Ada jalur terpanjang dari akar ke daun sepanjang .
-
e. Yield-nya pasti memiliki panjang .
- Dalam visualisasi Parse Tree, hubungan “Parent-Child” merepresentasikan:
-
a. Sisi kiri (LHS) produksi adalah Parent.
-
b. Sisi kanan (RHS) produksi adalah urutan Children.
-
c. Hubungan presedensi operator.
-
d. Urutan eksekusi program dari atas ke bawah.
-
e. Derivasi satu langkah ().
BAGIAN III: Ekuivalensi & Teorema
Fokus: Hubungan matematis antara Derivasi, Parse Tree, dan Inferensi Rekursif.
- Empat representasi yang dinyatakan EKUIVALEN untuk keanggotaan string dalam CFL adalah:
-
a. Inferensi Rekursif.
-
b. Parse Tree.
-
c. Leftmost Derivation.
-
d. Rightmost Derivation.
-
e. Deterministic Finite Automata (DFA).
- Teorema “Dari Parse Tree ke Leftmost Derivation” menyatakan bahwa:
-
a. Jika ada Parse Tree dengan akar dan yield , pasti ada Leftmost Derivation .
-
b. Konversi dilakukan dengan melakukan traversal Pre-order pada pohon.
-
c. Setiap sub-pohon dapat dikonversi menjadi sub-derivasi secara independen.
-
d. Hanya berlaku untuk grammar yang tidak ambigu.
-
e. Proses ini membuktikan bahwa pohon dan derivasi adalah representasi yang setara.
- Apa yang dimaksud dengan sifat “Context-Free” (Bebas Konteks) dalam pembuktian ekuivalensi ini?
-
a. Aturan produksi dapat diterapkan pada variabel di mana pun ia muncul.
-
b. Penerapan aturan tidak bergantung pada simbol-simbol di sekitar (konteks).
-
c. Sub-pohon untuk variabel dapat dibangun secara independen.
-
d. Sub-derivasi untuk dapat disubstitusikan ke dalam derivasi yang lebih besar.
-
e. Grammar tidak memiliki variabel yang berulang.
- Inferensi Rekursif adalah cara pandang:
-
a. Bottom-up: Membuktikan string dari terminal menuju variabel.
-
b. Top-down: Membuktikan dari Start Symbol menuju terminal.
-
c. Membangun bukti keanggotaan berdasarkan panjang string atau langkah.
-
d. Setara dengan membangun Parse Tree dari daun menuju akar.
-
e. Metode yang tidak valid untuk CFG.
- Jika kita memiliki derivasi , manakah pernyataan yang benar terkait ekuivalensinya?
-
a. Pasti ada Parse Tree dengan yield “ab”.
-
b. Pasti ada Inferensi Rekursif yang membuktikan “ab” ada di bahasa .
-
c. “ab” adalah anggota dari .
-
d. Derivasi tersebut adalah Leftmost Derivation.
-
e. Parse Tree-nya akan memiliki akar , anak dan .
- Dalam pembuktian ekuivalensi, kita sering menggunakan Induksi Matematika. Induksi pada “Tinggi Pohon” biasanya digunakan untuk membuktikan:
-
a. Konversi dari Parse Tree ke Derivasi.
-
b. Konversi dari Derivasi ke Parse Tree (biasanya induksi panjang langkah).
-
c. Bahwa bahasa tersebut Finite.
-
d. Bahwa setiap variabel memiliki sub-pohon yang valid.
-
e. Validitas algoritma parsing.
- Hubungan antara Parser dan Teorema Ekuivalensi adalah:
-
a. Parser Top-Down mencoba membangun Leftmost Derivation.
-
b. Parser Bottom-Up mencoba membangun Rightmost Derivation secara terbalik (reverse).
-
c. Jika parser gagal membangun Parse Tree, berarti string tidak valid (syntax error).
-
d. Parser membuktikan keberadaan salah satu dari 4 representasi ekuivalen tersebut.
-
e. Parser hanya bekerja pada grammar Regular.
- Jika diketahui sebuah string memiliki Leftmost Derivation, maka secara otomatis:
-
a. String memiliki Rightmost Derivation.
-
b. String memiliki Parse Tree.
-
c. Grammar tersebut pasti ambigu.
-
d. String valid dalam bahasa tersebut.
-
e. Panjang derivasi Leftmost sama dengan panjang derivasi Rightmost (jumlah langkah).
- Sebuah “Left-Sentential Form” adalah:
-
a. Sentential form yang muncul dalam proses Leftmost Derivation.
-
b. String yang mungkin masih mengandung variabel.
-
c. String yang variabelnya (jika ada) selalu berada di posisi paling kanan.
-
d. String yang variabelnya (jika ada) selalu berada di posisi paling kiri relatif terhadap variabel lain yang belum diekspansi.
-
e. String yang hanya terdiri dari terminal.
- Mengapa kita perlu membuktikan bahwa semua representasi ini ekuivalen?
-
a. Untuk menjamin bahwa cara kita mendefinisikan bahasa (grammar) konsisten dengan cara kita memvisualisasikannya (pohon).
-
b. Agar kita bebas menggunakan metode mana pun yang paling mudah untuk membuktikan keanggotaan string.
-
c. Karena parser komputer bekerja dengan cara yang berbeda-beda (ada yang pakai pohon, ada yang pakai derivasi).
-
d. Untuk membuktikan bahwa CFG lebih kuat dari Regular Grammar.
-
e. Untuk memastikan bahwa ambiguitas tidak mempengaruhi keanggotaan string dalam bahasa (hanya mempengaruhi strukturnya).
Kunci Jawaban Singkat
-
b, c, e ( terminal, , )
-
a, b, c ( kategori, dasar, )
-
a, c ( string campuran, terminal)
-
b, d (Proses sekuensial, penerapan aturan)
-
a, b, c, e (Semua definisi notasi benar)
-
b, e (String terminal hasil derivasi)
-
a, b, d, e (Termasuk , campuran, hasil derivasi)
-
b, c, e (Tipe-2, >FA, =PDA)
-
a, b, c (
::=,<>,|) -
a, b, e (Multi LM, Multi Tree, Multi Interpretasi)
-
a, c, d, e (Root S, Interior V, Leaf V/T/, sesuai P)
-
a, b (Baca daun kiri-kanan)
-
a, b, d (String kosong, anak tunggal, )
-
a, b, d (Strategi ganti variabel, pohon sama)
-
a, b, d, e (Langkah valid, itu LM dan juga bisa dianggap RM karena urutan)
-
a, b, c, e (Visualisasi, dasar AST, presedensi)
-
a, b, e (CST detail, AST ringkas/semantik)
-
a, b, d (Pohon ganda, interpretasi ganda)
-
d (Jalur terpanjang = tinggi)
-
a, b, e (LHS Parent, RHS Children, Derivasi 1 langkah)
-
a, b, c, d (Semua kecuali DFA)
-
a, b, c, e (Eksistensi, Pre-order, Independensi, Setara)
-
a, b, c, d (Definisi bebas konteks)
-
a, d (Bottom-up, dari terminal/daun)
-
a, b, c, d, e (Semua benar karena ekuivalensi)
-
a, d (Induksi tinggi untuk Tree Derivasi)
-
a, b, c, d (Cara kerja parser)
-
a, b, d, e (Otomatis punya representasi lain)
-
a, b, d (Hasil LM, mengandung variabel, var paling kiri)
-
a, b, c, e (Konsistensi, Fleksibilitas, Implementasi Parser)