waTES TENGAH SEMESTER Universitas Kristen Duta Wacana NIM : ______________ NAMA: ______________ Mata Kuliah : Teknik Kompiler TTD : Hari / Tanggal : Selasa, 17 Oktober 2006 Pukul : 10.00 – 11.30 (90 menit) _____________________ Dosen : Antonius Rachmat C, S.Kom NO KURSI: ___________ Sifat : Open 1 (satu) lembar kertas bolak-balik, boleh diketik! Total Point : 30 Kerjakan soal-soal berikut ini pada lembar ini juga! (Point 15) 1. Hal berikut benar mengenai interpreter kecuali ... a. Tidak menghasilkan executable file / kode obyek. b. Proses debuging cepat dan mudah c. Pemrosesan source code dan inputan data user dilakukan pada saat yang berbeda. d. Yang termasuk jenis bahasa yang diinterpreter adalah Java bytecode. 2. Kompiler yang dapat menghasiilkan kode obyek yang dapat dijalankan pada mesin yang berbeda-beda tanpa harus mengkompilasi ulang disebut juga dengan istilah… a. Bootstrap Compiler c. Independent Compiler b. Cross Compiler d. One-pass Compiler 3. Linker adalah sebuah program yang … a. Menggabungkan semua executable file menjadi satu kesatuan. b. Menggabungkan semua header file yang dibutuhkan dari sebuah executable file c. Menggabungkan semua inputan user dan executable file. d. Menggabungkan semua library dan kode obyek yang dibutuhkan oleh program dan menghasilkan executable file. 4. Hal yang salah mengenai proses translasi dan eksekusi pada Java adalah … a. Source Java pertama kali dinterpret agar menjadi Java bytecode b. Pada saat Java bytecode dijalankan di atas JVM, Java bytecode diinterpret. c. Hasil akhir proses translasi pada Java menghasilkan file class d. Preprosessor pada Java menggunakan perintah/keyword: import 5. Pernyataan yang benar mengenai bahasa pemrograman adalah sebagai berikut … a. Java merupakan contoh weak programming language. b. Pengecekan tipe dilakukan pada saat compile time pada jenis dynamic programming language. c. Tipe data pada bahasa assembly harus dideklarasikan terlebih dahulu. d. PHP dan ASP adalah contoh untype programming language. 6. Salah satu hal yang merupakan contoh nyata dalam tujuan perancangan bahasa pemrograman adalah … a. Java dan .NET adalah contoh machine independent b. Karakter penanda komentar sebaiknya menggunakan karakter/string yang termasuk dalam keywords. c. Suatu bahasa pemrograman yang baik harus bersifat non uniform. TTS Kompiler 2006 by Antonie - Hal 1 d. Simplicity adalah kenyamanan pengguna dalam penggunaan bahasa pemrograman. 7. Proses menelusuri kesalahan yang terjadi pada saat memprogram termasuk proses recovery disebut… a. Trace into Error c. Error Debugging b. Run to Error d. Go to Error Definition 8. Pernyataan-pernyataan yang benar mengenai Regular Expression, kecuali … a. Salah satu library RE adalah POSIX b. Pola RE \w+ digunakan untuk mendeteksi sebuah kata. c. Suatu pola RE harus dikompilasi terlebih dahulu sebelum digunakan untuk pencocokan. d. Karakter minus (-) jika berada dalam kelas karakter ( [] ) akan selalu menjadi karakter khusus. 9. Hal yang benar mengenai modifier dalam Regular Expression adalah … a. Dengan menggunakan modifier i maka huruf besar dan kecil dibedakan. b. Pada modifier m, tanda ^ dan $ menjadi tidak berlaku lagi. c. Pada modifier X, tanda # adalah karakter non-literal. d. Modifier D adalah modifier yang selalu menganggap karakter $ adalah karakter literal. 10. Bentuk RE untuk palindrom 7 huruf adalah ... a. (\w)(\w)(\w)\w\3\2\1 b. (\w)(\w)(\w)(\w) \2\3\1 c. (\w)(\w)(\w)\w\1\2\3 d. (\w+)(\w+)(\w+)\w\3\2\1 11. String “mahasiswa teknik kompiler“ jika dikenakan RE: tek(.+)i, string yang didapat adalah ... a. tekni c. teknik kompi b. teknik kompiler d. mahasiswa tekni 12. Dengan pola RE: [a-z]+\d(?=\.\d), maka string berikut yang diterima adalah … a. p34.3 c. b21 b. A1.3 d. b1.3 13. Hal yang salah mengenai Notasi Chomsky adalah … a. Noam Chomsky menggolongkan bahasa sehari-hari sebagai bahasa tipe 0 b. Pada bahasa tipe 1, jumlah aturan produksi di sebelah kiri boleh lebih kecil daripada jumlah aturan produksi sebelah kanan. c. Pada bahasa tipe 2, simbol non-terminal pada aturan produksi sebelah kiri boleh berjumlah 1 atau lebih. d. Contoh bahasa tipe 3 adalah Regular Expressions. 14. Hal yang benar mengenai Analisis Lexical adalah … a. Analisis lexical berfungsi untuk mengetahui arti (meaning) dari bahasa / kalimat yang diprosesnya. b. Jumlah lexem akan selalu lebih kecil daripada jumlah token. TTS Kompiler 2006 by Antonie - Hal 2 c. Scanner bekerja atas dasar Finite State Automata dengan implementasi nyatanya adalah Regular Expression d. Tugas scanner adalah mengambil token dan membentuk Parse Tree. 15. Pernyataan berikut benar mengenai analisis sintaks, kecuali … a. Backtracking adalah cara yang digunakan pada Recursive Descent Parsing. b. Salah satu implementasi Parser adalah Tata Bahasa Bebas Konteks. c. Tata Bahasa Bebas Konteks lebih fleksibel daripada Regular Expressions. d. Pada metode Brute Force Parsing, backtracking sangat diperlukan. Kerjakan soal-soal Essay berikut ini pada lembar ini juga! (Point 15) 1. Buatlah sebuah pola RE yang dapat mengenali string-string berikut ini: regular expression regexp regex regularexpression regularex regularexp Ingat, pola RE nya hanya boleh satu saja, tapi bisa digunakan untuk memvalidasi semua pola string di atas. Anda harus menemukan pola RE yang paling singkat. Anda tidak diperbolehkan menggunakan RE seperti ini: regular expression|regexp|regex|regularexpression|regularex|regularexp. Jawab: (Point 5) reg(ular)?\s*(ex(p)?)(ression)? 2. Terdapat Tata Bahasa Bebas Konteks sebagai berikut: S => Ba | Ab A => Sa | Aab | a B = Sb | Bba | b Buat proses penurunannya dan gambarkanlah pohon sintaksnya jika string inputan adalah “bbaaaabb” Jawab: (Point 5) S S => Ab S => Aabb A b S => Saabb S => Baaabb A a b S => Bbaaaabb S => bbaaaabb Terbukti S a B a B b b S TTS Kompiler 2006 by Antonie - Hal 3 3. Buatlah DFA yang ekuivalen dengan NFA berikut ini: State = {q0,q1,q2} Input = {0,1} Start = q0 Finish = {q1} Fungsi Transisinya dinyatakan dengan : 0 1 q1 q0 {q1,q2} q2 q1 q0 q1,q2 q2 Gambarlah Diagram State NFA dan hasil konversi ke DFA nya! o Apakah inputan 00110011 diterima? Jawab: (Point 5) 0 0 Q0 0 1 1 Q1 0,1 Q2 0 0,1 1 ε Q0,Q1,Q2 Q0 0 0 1 Q2 1 0 1 Q Q1,Q2 0 1 Inputan 00110011 diterima! Cara penyelesaian: ((Q1,Q2),0) => (Q1,0) => {Q1,Q2} (Q2,0) => Q0 {Q1,Q2} U Q0 => {Q0,Q1,Q2} ((Q1,Q2),1) => (Q1,1) => Q2 (Q2,1) => {Q1,Q2} {Q1,Q2} U Q2 => {Q1,Q2} ((Q0,Q1,Q2),0) => ((Q0,Q1,Q2),1) => (Q0,0) => Q1 (Q1,0) => {Q1,Q2} (Q2,0) => Q0 Q1 U {Q1,Q2} U Q0 => {Q0,Q1,Q2} (Q0,1) => ε (Q1,1) => Q2 (Q2,1) => {Q1,Q2} ε U Q2 U {Q1,Q2} => {Q1,Q2} ☺ Selamat Bekerja, Tuhan Memberkati! ☺ TTS Kompiler 2006 by Antonie - Hal 4