Mata Kuliah : Teknik Kompilasi Bobot Mata Kuliah : 3 Sks GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP) Deskripsi Mata Kuliah : Kompetensi Dasar, Indikator, Analisis Leksikal, Anlisis Sintati, Intermidiate code Generation, Code Optimization. Pertemua n / Minggu Pokok Bahasan / Tujuan Instruksional Umum (TIU) Sub Pokok Bahasan dan Sasaran Belajar / Tujuan Instruksional Khusus (TIK) Tehnik Pembelajara n Media Pembelajaran Evaluasi Referensi 1 1. Konsep Dasar TIU : memahami konsep dan cara kerja kompilator. 1.1. Motivasi - mengetahui tujuan pembelajaran mata kuliah teknik kompilasi - mengetahui hal-hal yang akan dipelajasri pada matakuliah ini. 1.2. Bagian-bagian compiler (kompilator) - dapat menyebutkan definisi dari istilah-istilah yang digunakan dalam kompilasi - dapat menjelaskan fase-fase kompilator. - dapat menjelaskan fase penganalisa leksikal - dapat menjelaskan fase parser - dapat menjelaskan fase code generator 1.3. Representasi Bahasa-bahasa Komputer - dapat mengekspresikan suatu bahasa komputer kedalam suatu tata bahasa - dapat membuat syntax diagram dari suatu tata bahasa. 1.4. Kompilator Recursive-Descent Expression - dapat membangun kompilator sederhana menggunakan teknik Recursive- Membuat kompilator sederhana sebgaiamana pada subbab1.3 ref.[1] atau bab 2 ref.[2] 1,2
2 2. Input dan Analisa Leksikal memahami strategi pada system input dan cara kerja penganalisa leksikal. 3 3. Tata bahasa Context-Free dapat mngenal CFG dn bentuk-bentuk turunannya serta mahasiswa dapat membangun CFG. Descent. 2.1. Penganalisa Leksikal Sebagai Bagian dari Kompilator. - dapat menjelaskan cara kerja penganalisa sintaks dan bagaimana penganalisa sintaks berhubungan dengan bagian lain dari kompilator 2.2. System Input - dapat membangun modul system input untuk penganalisa leksikal 2.3. Analisa Leksikal - dapat menyebutkan definisi/istilah dalam bahasa formal - dapat membuat abstraksi bahasa melalui ekspresi regular, definisi regular, otomata hingga. - dapat mengimplementasikan NFA kedalam suatu program. 3.1. Konsep Contex Free Grammar (CFG) - dapat menyebutkan definisi CFG. - dapat merumuskan CFG dari bahasa Contex Free 3.2. Derivasi dan bentuk sentensial - dapat melakukan derivasi secara umum, left maupun right dari suatu CFG - dapat memberi contoh viable prefix, handle dan bentuk sentential dari suatu derivasi 3.3. Pohon Parsing dan hubungannya dengan sintaktik analisis - dapat membuat pohon parsing dari suatu derivasi - dapat memberi contoh masalah sintaktik maupun masalah semantik dari suatu tata bahasa. 3.4. Right Linear grammar - dapat menyebutkan hubungan mesin stata dan tatabahasa - dapat menentukan apakah suatu tata bahasa adalah Right Linear 3.5. List, Recursion and Associativity - Mhs diberikan tatabahasa one line programming - Menentukan token yang terlibat - Membuat rumusan token - Membuat AH untuk token tersebut - Melakukan derivasi dari kalimat yang diberikan - Menurunkan kalimat lain dari tatabahasa tsb. 1,2 1,2
4 4.Top-Down Parsing dapat menggunakan teknik topdown parsing : recursive descent parser dan LL(1) 5 4. Top-Down Parsing (Lanjutan) sda - dapat menentukan produksi yang left maupun right recursion dari suatu tatabahasa - dapat menyebutkan hubungan associativity dan recursion - dapat menentukan tata bahasa yang left /right associative 3.6. Ambigous Grammar - dapat menentukan grammar yang ambigous 4.1. Recursive Descent Parser - dapat menggunakan PDA sebagai parsing top-down - dapat menujukkan proses error recovery - dapat mengimplemnetasikan Attributed grammars pada PDA berdasarkan PDA 4.2 LL(1) grammars - dapat menjelaskan konsep tata bahasa LL(1) - dapat menentukan himpunan FIRST - dapat menentukan himpunan FOLLOW - dapat menentukan himpunan LL(1) selection LL(1) - dapat menerapkan Penanganan kesalahan panic mode membuat diagram state dari one line programming 6 4. Top-Down Parsing (lanjutan) sda 4.3 Modifying grammars - dapat memodifikasi grammar agar LL(1), menggunakan teknik-teknik leftfactoring, corner-subtitution, singleton substitution, eliminasi ambiguitas, eliminasi left recursion, eliminasi Unreachable Productions - dapat mengimplementasikan memodifikasi tata bahasa one line programming agar LL(1) dan membuatkan tabel pasing LL(1)-nya
LL(1) parser 7 5. Bottom-Up Parsing dapat menggunakan teknik bottom-up parsing: LR(0), SLR(1), LR(1), LALR(1) 5.1 Cara Kerja Konsep Bottom Up - dapat menyebutkan cara kerja teknik parsing bottom-up - dapat menunjukkan cara menangani errror recovery dari teknik bottom-up 5.2 Tabel Parsing LR - dapat mengidentifikasikan tatabahasa LR(0) LR(0) 8 5. Bottom-Up Parsing (lanjutan) sda 5.2 Tabel Parsing LR (lanjutan ) - dapat mengidentifikasikan tatabahasa SLR(1) SLR(1) - dapat mengidentifikasikan tatabahasa LR(1) LR(1) - dapat mengidentifikasikan tatabahasa LALR(1) LALR(1) - dapat merepresentasikan tabel LR dalam bahasa pemrograman membuat tabel parsing SLR(0) bahasa one line programming 9 Diskusi memahami proses kerja one pass compiler - review kompilasi sampai tahapan parsing Diskusi berkelompok diberi tugas mengarang bahasa yang mengandung operasi aritmatika, cetak, operasi cabang/ bersyarat. Dirumuskan dalam tata bahasa mengimplementasikan
menjadi one pass compiler berdasarkan tugas parser yang diminta (rec-descn, LL, LR) 10. Quiz / presentasi project dapat mengimplementasi kan parsing Diskusi merepresentasikan kompilasi bahasa masing yang telah dibuat, dimulai dari tatabahasa, rumusan token, diagram pengenalan token, diagram/tabel parsing, dan bagaimana diimplementasikan di program mereka. 11. UJIAN TENGAH SEMESTER 12. 6. Analisa Semantik Syntax-directed definition Translation scheme 3.7. Syntax-Directed translation - dapat menngunakan alat-alat bantu tata bahasa augmented dan attributed dalam mengimplementasikan tatabahasa. 13. 7. Membangun Code dan Tabel simbol dapat membangun intermediate code, dan dapat mengelola tabel simbol. 6.1 Intermediate Languages - dapat merepresentasikan bahasa kedalam bentuk triples, quads, dan postfix 6.2 Table simbol - dapat menyebutkan apa yang dimaksud dengan tabel simbol - dapat menyebutkan kegunaan tabel simbol 6.3 Struktur Data Tabel Simbol - dapat membentuk struktur data tabel simbol - dapat merepresentasikan tipe variabel 14 8. Strategi Optimisasi 7.1 Optimisasi Parser - dapat mengaplikasikan konsep
optimasi parser 7.2 Linear (peephole) Optimizations - dapat mengaplikasikan konsep optimasi peephole 7.3 Optimisasi Struktural - dapat mengaplikasikan konsep optimasi struktural Referensi : 1. Holub, A. I., Compiler Design in C. Prentice-Hall International, Inc. Englewood Cliffs, New-Jersey, 1990. 2. Aho, A. V., R. Sethi, and J. D. Ullman. Compiler: Principles, Techniques, and Tools. Addison Wesley Publishing Company, Reading, Massachusetts, 1988. 3. Tremblay, Jean-Paul, Paul G. Sorenson, The Theory and Practice of Compiler, McGraw-Hill Co, New York, 1985 4. Sukamdi, Merekayasa Interpreter (Sebuah Penerapan Teknik Kompilasi), Jakarta, PT Elex Media Komputindo, 1995. 5. Pittman, T., James Peters, The Art of Compiler Design, Theory & Practice, Englewood Cliffs, New Jersey, Prentice-Hall, Inc, 1992. 6. Firrar Utdirartomo, Teknik Kompilasi, Yogyakarta, J&J Learning, 2001. 7. Sumantri Slamet, Heru S., Teknik Kompilasi, Jakarta, PT Elex Media Komputindo, 1995. 8. D. Suryadi H.S., Pengantar Automata Bahasa Formal dan Kompilasi, Jakarta, Penerbit Gunadarma.