Konsep Dasar Teknik Kompilasi Sigit Widiyanto ST MMSi

  • Slides: 24
Download presentation
Konsep Dasar Teknik Kompilasi Sigit Widiyanto, ST. , MMSi. , MSc

Konsep Dasar Teknik Kompilasi Sigit Widiyanto, ST. , MMSi. , MSc

Quick Basic

Quick Basic

Turbo Pascal

Turbo Pascal

Turbo C++ 4. 5

Turbo C++ 4. 5

Java Compiler (Command Prompt)

Java Compiler (Command Prompt)

Translator : • Adalah suatu program yang memliki inputan sebuah program yang ditulis dengan

Translator : • Adalah suatu program yang memliki inputan sebuah program yang ditulis dengan satu bahasa pemrograman (source language) untuk diterjemahkan ke bahasa lain (object language) • Contoh source language: high level language, seperti cobol, pascal, fortran • Contoh object language: low-level language atau mesin language.

Macam-macam Translator • Assembler – Source Code : Bahasa Assembly – Object Code :

Macam-macam Translator • Assembler – Source Code : Bahasa Assembly – Object Code : Bahasa Mesin *. asm Assembler Object code *. exe /*. com

Macam-macam Translator • Compiler – Source Code : Bahasa tingkat tinggi – Object Code

Macam-macam Translator • Compiler – Source Code : Bahasa tingkat tinggi – Object Code : Bahasa mesin atau bahasa assembly – Source Code dan data diproses berbeda Data Source Code Compiler Execution Object Code Result

Macam-macam Translator • Interpreter – Tidak menghasilkan object code. – Tetapi, hasil translasinya dalam

Macam-macam Translator • Interpreter – Tidak menghasilkan object code. – Tetapi, hasil translasinya dalam bentuk internal. – Program induk harus selalu berbeda dengan compiler. Source Code Interpreter Data Result

Compiler vs Interpreter Compiler Interpreter Bisa menangkap berbagai kesalahan dalam 1 program kode sumber

Compiler vs Interpreter Compiler Interpreter Bisa menangkap berbagai kesalahan dalam 1 program kode sumber sekaligus. Hanya bisa menangkap beberapa kesalahan pada 1 baris kode sumber. Proses lebih cepat Proses lebih lambat Menghasilkan kode antara (object code) Tidak menghasilkan kode antara (object code) Menjalankan program hasil kompilasi bisa Membutuhkan kode sumber dilakukan tanpa kode sumber Proses pembuatan kode dengan dua tahap terpisah (parsing dan linking) Tidak ada proses yang terpisah Membutuhkan linker untuk menggabungkan kode objek dengan library agar dapat jalan di mesin Tidak butuh linker Tidak cocok untuk uji coba modul Mendukung uji coba modul Dapat dioptimasi Tidak dapat dioptimasi

Apa itu teknik Kompilasi? • Teknik : – Metode atau Cara • Kompilasi :

Apa itu teknik Kompilasi? • Teknik : – Metode atau Cara • Kompilasi : – Proses mengabungkan serta menterjermahkan sesuatu (source program) menjadi bentuk lain.

Jadi apa itu kompilator? • Kompilator (compiler) adalah sebuah program yang membaca suatu program

Jadi apa itu kompilator? • Kompilator (compiler) adalah sebuah program yang membaca suatu program yang ditulis dalam suatu bahasa sumber (source language) dan menterjemahkannya ke dalam suatu bahasa sasaran (target language). Source Program Compiler ERROR MESSAGES OBJECT PROGRAM

Proses Kompilasi • analisa : program sumber dipecah-pecah dan dibentuk menjadi bentuk antara (intermediate

Proses Kompilasi • analisa : program sumber dipecah-pecah dan dibentuk menjadi bentuk antara (intermediate representation) • sintesa : membangun program sasaran yang diinginkan dari bentuk antara

Fase-fase Proses Kompilasi

Fase-fase Proses Kompilasi

Penganalisa Leksikal • Membaca program sumber, karakter demi karakter. Sederetan (satu atau lebih) karakter

Penganalisa Leksikal • Membaca program sumber, karakter demi karakter. Sederetan (satu atau lebih) karakter dikelompokkan menjadi satu kesatuan mengacu kepada pola kesatuan kelompok karakter (token) yang ditentukan dalam bahasa sumber. • Kelompok karakter yang membentuk sebuah token dinamakan lexeme untuk token tersebut. Setiap token yang dihasilkan disimpan di dalam tabel simbol. Sederetan karakter yang tidak mengikuti pola token akan dilaporkan sebagai token tak dikenal (unidentified token).

Contoh Penganalisa Leksikal • Misalnya pola token untuk identifier I adalah : I =

Contoh Penganalisa Leksikal • Misalnya pola token untuk identifier I adalah : I = huruf(huruf angka)*. Lexeme ab 2 c dikenali sebagai token sementara lexeme 2 abc atau ab. C tidak dikenal.

Penganalisa Sintaks • Memeriksa kesesuaian pola deretan token dengan aturan sintaks yang ditentukan dalam

Penganalisa Sintaks • Memeriksa kesesuaian pola deretan token dengan aturan sintaks yang ditentukan dalam bahasa sumber. Sederetan token yang tidak mengikuti aturan sintaks akan dilaporkan sebagai kesalahan sintaks (sintax error). • Secara logika deretan token yang bersesuaian dengan sintaks tertentu akan dinyatakan sebagai pohon parsing (parse tree).

Contoh Penganalisa Sintaks • Misalnya sintaks untuk ekspresi if-then E adalah : E if

Contoh Penganalisa Sintaks • Misalnya sintaks untuk ekspresi if-then E adalah : E if L then, L IOA, I = huruf(huruf angka)*, O < = > <= >=, A 0 1. . . 9. Ekspresi if a 2 < 9 then adalah ekspresi sesuai sintaks; sementara ekspresi if a 2 < 9 do atau if then a 2 B < 9 tidak sesuai. Perhatikan bahwa contoh ekspresi terakhir juga mengandung token yang tidak dikenal.

Penganalisa Semantik • Memeriksa token dan ekspresi dari batasan yang ditetapkan. Batasan-batasan tersebut misalnya

Penganalisa Semantik • Memeriksa token dan ekspresi dari batasan yang ditetapkan. Batasan-batasan tersebut misalnya : – Panjang maksimum token identifier adalah 8 karakter, – Panjang maksimum ekspresi tunggal adalah 80 karakter, – Nilai bilangan bulat adalah -32768 s/d 32767, – Operasi aritmatika harus melibatkan operan-operan yang bertipe sama.

Pembangkit kode antara • Membangkitkan kode antara (intermediate code) berdasar-kan pohon parsing. Pohon parse

Pembangkit kode antara • Membangkitkan kode antara (intermediate code) berdasar-kan pohon parsing. Pohon parse selanjutnya diterjemahkan oleh suatu penerjemah yang dinamakan penerjemah berdasarkan sintak (syntax-directed translator). Hasil penerjemahan ini biasanya merupakan perintah tiga alamat (threeaddress code) yang merupakan representasi program untuk suatu mesin abstrak.

Pembangkit kode antara • Perintah tiga alamat bisa berbentuk quadruples (op, arg 1, arg

Pembangkit kode antara • Perintah tiga alamat bisa berbentuk quadruples (op, arg 1, arg 2, result), tripels (op, arg 1, arg 2). Ekspresi dengan satu argumen dinyatakan dengan menetapkan arg 2 dengan (strip, dash)

Pengoptimalan Kode • Melakukan optimasi (penghematan space dan waktu komputasi), jika mungkin, terhadap kode

Pengoptimalan Kode • Melakukan optimasi (penghematan space dan waktu komputasi), jika mungkin, terhadap kode antara.

Pembangkitan Kode • Membangkitkan kode dalam bahasa target tertentu (misalnya bahasa mesin).

Pembangkitan Kode • Membangkitkan kode dalam bahasa target tertentu (misalnya bahasa mesin).

Contoh • Identifier: • Lexeme: • Quadruples:

Contoh • Identifier: • Lexeme: • Quadruples: