Materi Kuliah Teknik Kompilasi
description
Transcript of Materi Kuliah Teknik Kompilasi
-
5/28/2018 Materi Kuliah Teknik Kompilasi
1/46
MATERI
TEKNIK KOMPILASI
NAMA : AKBAR NURDINNPM : 2011020210JURUSAN : TEHNIK INFORMATIKA
-
5/28/2018 Materi Kuliah Teknik Kompilasi
2/46
T U J U A N Mengetahui Penerapan konsep ilmu komputer pada
perilaku komputer yaitu algoritma, arsitektur
komputer, stuktur data maupun penerapan teori bahasa
dan automata
Compiler adalah merupakan konstruksi inti dari ilmu
komputer
-
5/28/2018 Materi Kuliah Teknik Kompilasi
3/46
Materi Pendahuluan: arti dari Kompilasi
Pengertian: Compiler dan interpreter Bahasa Pemrograman
Pembuatan Compiler
Konsep bahasa dan Notasi
Hirarki Comsky
Beberapa translator
Struktur Compiler Aturan Produksi
Diagram state
Diagram Syntax
Kualitas Compiler
-
5/28/2018 Materi Kuliah Teknik Kompilasi
4/46
ARTI KATA TEKNIK KOMPILASI
Teknik : Metode atau Cara
Kompilasi : Proses mengabungkan serta menterjermahkan
sesuatu (source program) menjadi bentuk lain
-
5/28/2018 Materi Kuliah Teknik Kompilasi
5/46
Pengertian : Compiler & Interpreter
Translator : Adalah suatu program dimana mengambil input
sebuah program yang ditulis pada satu bahasaprogram (source language) ke bahasa lain (Theobject on target language)
Jika source language adalah high level language,seperti cobol, pascal, fortran maka object languageadalah low-level language atau mesin language.Translator seperti ini disebut COMPILER
-
5/28/2018 Materi Kuliah Teknik Kompilasi
6/46
Ada Beberapa Translator1. Assembler
Source code adalah bahasa assembly, Object code
adalah bahasa mesin
2. Compiler
Source code adalah bahasa tingkat tinggi, object code
adalah bahasa mesin atau bahasa assembly. Source
code dan data diproses berbeda
*.asm Assembler Object code*.exe /*.com
-
5/28/2018 Materi Kuliah Teknik Kompilasi
7/46
3. Interpreter
Interpreter tidak menghasilkan bentuk object code, tetapi
hasil translasinya hanya dalam bentuk internal, dimana
program induk harus selalu ada-berbeda dengan compiler
Source codeTranslator Hasil
Data
HasilSourcecode Execution
DataCompiler
Object Code
-
5/28/2018 Materi Kuliah Teknik Kompilasi
8/46
Translator : Compiler & Interpreter
OBJECTPROGRAMSourceProgram Compiler
ERROR
MESSAGES
-
5/28/2018 Materi Kuliah Teknik Kompilasi
9/46
COMPILER vs INTERPRETER Compiler bisa menangkap berbagai kesalahan dalam 1 programkode sumber secara sekaligus. Kalau Interpreter cuma bisamenangkap beberapa kesalahan pada 1 baris kode sumber padasuatu saat
Biasanya program yang dihasilkan compiler lebih cepat dariwaktu pelaksanaan program dengan interpreter.
Kalau compiler menghasilkan kode antara (misal object code)dan harus digabungkan / dilink menjadi bentuk yang dapat
dijalankan mesin / komputer (executable). Kalau Interpreterbiasanya tidak menghasilkan kode antara.
Kalau hendak menjalankan program hasil kompilasi bisadilakukan tanpa kode sumber. Kalau interpreter butuh kodesumber.
-
5/28/2018 Materi Kuliah Teknik Kompilasi
10/46
COMPILER vs INTERPRETER Kalau dengan kompiler, maka pembuatan kode yang bisa dijalankan
mesin dilakukan dalam 2 tahap terpisah, yaitu parsing / pembuatankode objek dan linking / penggabungan kode objek dengan library.Kalau interpreter tidak ada proses terpisah.
Kalau compiler membutuhkan linker untuk menggabungkan kodeobjek dengan berbagai macam library demi menghasilkan suatukode yang bisa dijalankan oleh mesin. Kalau interpreter tidak butuhlinker.
Interpreter cocok untuk membuat / menguji coba modul / sub-routine / program-program kecil. Kalau compiler agak repot karenauntuk mengubah suatu modul / kode objek kecil, maka harus
dilakukan proses linking / penggabungan kembali semua objekdengan library yang diperlukan.
Pada kompiler bisa dilakukan optimisasi / peningkatan kwalitaskode yang bisa dijalankan. Ada yang dioptimasi supaya lebih cepat,ada yang supaya lebih kecil, ada yang dioptimasi untuk sistemdengan banyak processor. Kalau interpreter susah / tidak bisa
dioptimasikan.
-
5/28/2018 Materi Kuliah Teknik Kompilasi
11/46
Proses kompilasi dikelompokkan kedalam dua kelompok besar :
1. analisa : program sumber dipecah-pecah dan dibentuk menjadibentuk antara (inter-mediaterepresentation)
2. sintesa : membangun programsasaran yang diinginkan daribentuk antara
-
5/28/2018 Materi Kuliah Teknik Kompilasi
12/46
Fase-fase proses sebuah kompilasi
-
5/28/2018 Materi Kuliah Teknik Kompilasi
13/46
Penganalisa Leksikal membaca program sumber, karakter demi
karakter. Sederetan (satu atau lebih) karakter
dikelompokkan menjadi satu kesatuan mengacukepadapola kesatuan kelompok karakter (token)
yang ditentukan dalambahasa sumber. Kelompokkarakter yang membentuk sebuah token
dinamakan lexemeuntuk token tersebut. Setiaptoken yang dihasilkan disimpan di dalam tabelsimbol. Sederetan karakter yang tidak mengikutipola token akan dilaporkan sebagai token takdikenal (unidentified token)
-
5/28/2018 Materi Kuliah Teknik Kompilasi
14/46
Penganalisa Sintaks
memeriksa kesesuaianpola deretan tokendengan aturan sintaks yang ditentukan dalam
bahasa sumber. Sederetan token yang tidakmengikuti aturan sintaks akan dilaporkansebagai kesalahan sintaks (sintax error). Secara
logika deretan token yang bersesuaian dengansintaks tertentu akan dinyatakan sebagai pohonparsing (parse tree)
-
5/28/2018 Materi Kuliah Teknik Kompilasi
15/46
Penganalisa Semantik memeriksa token dan ekspresi dari batasan-
batasan yang ditetapkan. Batasan-batasan
tersebut misalnya :a. panjang maksimum token identifier adalah 8
karakter,b. panjang maksimum ekspresi tunggal adalah 80
karakter,c. nilai bilangan bulat adalah -32768 s/d 32767,d. operasi aritmatika harus melibatkan operan-
operan yang bertipe sama
-
5/28/2018 Materi Kuliah Teknik Kompilasi
16/46
Pembangkit Kode Antara membangkitkan kode antara (intermediate code) berdasar-
kan pohon parsing. Pohon parse selanjutnyaditerjemahkan oleh suatu penerjemah yang dinamakan
penerjemah berdasarkan sintak (syntax-directedtranslator). Hasil penerjemahan ini biasanya merupakan
perintah tiga alamat (three-address code) yangmerupakan representasi program untuk suatu mesinabstrak. Perintah tiga alamat bisa berbentuk quadruples(op, arg1, arg2, result), tripels (op, arg1, arg2). Ekspresidengan satu argumen dinyatakan dengan menetapkanarg2 dengan - (strip, dash)
-
5/28/2018 Materi Kuliah Teknik Kompilasi
17/46
Pengoptimal kode
melakukan optimasi (penghematan space danwaktu komputasi), jika mungkin, terhadap kode
antara
-
5/28/2018 Materi Kuliah Teknik Kompilasi
18/46
Pembangkit Kode Mesin
membangkitkan kode dalam bahasa targettertentu (misalnya bahasa mesin)
-
5/28/2018 Materi Kuliah Teknik Kompilasi
19/46
Contoh
Kompilasi
-
5/28/2018 Materi Kuliah Teknik Kompilasi
20/46
Pembuatan compilerBahasa mesin
Sangat sukar dan sangat sedikit kemungkinannya untukmembuat compiler dengan bahasa ini, karena manusiasusah mempelajari bahasa mesin,
Sangat tergantung pada mesin,
Bahasa Mesin kemungkinan digunakan pada saatpembuatan Assembler
-
5/28/2018 Materi Kuliah Teknik Kompilasi
21/46
Pembuatan compiler
Assembly
Hasil dari program mempunyai Ukuran yang relatif kecil
Sulit dimengerti karena statement/perintahnya singkat-singkat, butuh usaha yang besar untuk membuat
Fasilitas yang dimiliki terbatas
-
5/28/2018 Materi Kuliah Teknik Kompilasi
22/46
Pembuatan compilerBahasa Tingkat Tinggi (high level language)
Lebih mudah dipelajari
Fasilitas yang dimiliki lebih baik (banyak)
Memiliki ukuran yang relatif besar, misal membuat compilerpascal dengan menggunakan bahasa C
Untuk mesin yang berbeda perlu dikembangkan tahapan-tahapan tambahan.
Misal membuat compiler C pada Dos bedasarkan compiler Cpada unix
-
5/28/2018 Materi Kuliah Teknik Kompilasi
23/46
Pembuatan compiler
BootStrap
Untuk membangun sesuatu yang besar,dibangun/dibuat dulu bagian intinya (niklausWirth - saat membuat pascal compiler)
-
5/28/2018 Materi Kuliah Teknik Kompilasi
24/46
BootStrap
PO dibuat dengan assembly,
P1 dibuat dari P0, dan
P2 dibuat dari P1, jadi compiler untuk
bahasa P dapat dibuat tidak harus
dengan menggunakan assembly secara
keseluruhan
Po
P1
P2
-
5/28/2018 Materi Kuliah Teknik Kompilasi
25/46
Contoh dari source program ke dalamkode mesinSource code Assembly Language Machine language
IF COUNT =10 Compare A to B Compare 3477 2883
GOTO DONE If equal go to C If = go to 23883ELSE Go to D Go to 23343
GOTO AGAIN
ENDIF
Actual machine code
10010101001010001010100
10101010010101001001010
10100101010001010010010
-
5/28/2018 Materi Kuliah Teknik Kompilasi
26/46
BAHASA SUMBER
-
5/28/2018 Materi Kuliah Teknik Kompilasi
27/46
DEFINISIbahasa sumber
Bahasa adalah kumpulan kalimat. Kalimat adalahrangkaian kata. Kata adalah unit terkecil komponenbahasa yang tidak bisa dipisah-pisahkan lagi.
Kalimat-kalimat : Seekor kucing memakan seekor tikus.dan Budi menendang sebuah bola.adalah dua contohkalimat lengkap Bahasa Indonesia. A cat eats a mousedan Budi kick a ball. adalah dua contoh kalimat lengkapBahasa Inggeris. if a2 < 9.0 then b2 := a2+a3;dan for i:= start to finish do A[i] := B[i]*sin(i*pi/16.0). adalah
dua contoh kalimat lengkap dalam Bahasa PemrogramanPascal.
Dalam bahasa pemrograman kalimatlebih dikenalsebagai ekspresi sedangkan katasebagai token
-
5/28/2018 Materi Kuliah Teknik Kompilasi
28/46
Bahasa Tingkat Tinggi (Pemrograman ) Bahasa yang lebih dikenal oleh manusia, maksudnya adalah
statementyang digunakan menggunakan bahasa yang dipakai oleh
manusia (inggris),
Bahasa pemrograman didefinisikan dengan menentukan bentukprogramnya (sintak) dan arti programnya (semantik)
Memberikan fasilitas yang lebih banyak, seperti struktur kontrol
program yang terstruktur, blok-blok serta prosedur dan fungsi-
fungsi
Progam mudah untuk di koreksi (debug) Tidak tergantung pada salah satu mesin
Kontrol struktur seperti : kondisi (if .. Then.. Else ), perulangan
(For, while ), Struktur blok (begin.. End { .. } )
-
5/28/2018 Materi Kuliah Teknik Kompilasi
29/46
Tingkatan Bahasa Pemrograman
-
5/28/2018 Materi Kuliah Teknik Kompilasi
30/46
Sumber perancangan bahasa
Konstruksi yang diturunkan dari bahasa alami,karena bahasa alami dapat digunakan sebagai
panduan untuk perancangan sintaks Matematika, misal untuk perancangan operasi
aritmatika
Bahasa pemrograman yang sudah ada.
-
5/28/2018 Materi Kuliah Teknik Kompilasi
31/46
Tujuan perancangan bhs program Komunikasi dengan manusia
Pencegahan dan deteksi kesalahan
Usability Efektifitas pemrograman
Compilability (mengurangi
kompleksitas,mis:penggunaan bracket) Efisiensi dengan meminimalisirketidakcocokan antara hardware denganbahasa
-
5/28/2018 Materi Kuliah Teknik Kompilasi
32/46
Tujuan perancangan bhs program(2)
Machine independent
Simplicity :penyederhanaan komponenbahasa program
Orthogonality : kumpulan primitive yangdikombinasikan dengan berbagai cara
dalam membangun kontrol dan strukturdata dalam bahasa program
-
5/28/2018 Materi Kuliah Teknik Kompilasi
33/46
Struktur Ekspresi
Metode pengurutan evaluasi dalam ekspresi :
Explicit Bracketing
Operator binding
Binding adalah asosiasi antara atribut danentity atau antara operasi dan simbol.
Binding time adalah waktu yang dialokasikanuntuk menyatukan variable dengan nilainya.
-
5/28/2018 Materi Kuliah Teknik Kompilasi
34/46
Struktur DataEmpat aspek dalam struktur data
Deklarasi data
Tipe data yang tersedia Alokasi storage
Lingkup variabel
34
-
5/28/2018 Materi Kuliah Teknik Kompilasi
35/46
Struktur I/O Format free
langsung ditampilkan sehingga mudah bagi
user untuk memeriksa kebenaran program.Contoh pada VB.
Formatted
output ditampilkan secara terformat, seperti
di C : printf(), delphi/VB : format()
-
5/28/2018 Materi Kuliah Teknik Kompilasi
36/46
SKENARIO PERANCANGAN1. Tentukan apa yang diinginkan.
2. Tentukan feature yang mungkin
3. Tentukan desain dan sesuaikan dengan featurenya
4. Tentukan rincian, parsing, dan error checking.
5. Tuliskan user manual dan help.
6. Evaluasilah, jika salah mulai lagi dari langkah 3.
7. Jika sudah benar, optimisasilah dan uji segalakemungkinan.
8. Cobakan kepada pengguna, tunggu reaksinya.
9. Perbaiki bug dan mulai versi baru.
-
5/28/2018 Materi Kuliah Teknik Kompilasi
37/46
KONSEP
dan NOTASI BAHASA
-
5/28/2018 Materi Kuliah Teknik Kompilasi
38/46
Konsep dan Notasi bahasa Teknik Kompilasi merupakan kelanjutan dari konsep-konsep yang
telah kita pelajari dalam teori bahasa dan automata
Thn 56-59 Noam chomsky melakukan penggolongan tingkatan dalam
bahasa, yaitu menjadi 4 class
Penggolongan tingkatan itu disebut dengan hirarki Comsky
1959 Backus memperkenalkan notasi formal baru untuk syntax
bahasa yang lebih spesifik
Peter Nour (1960) merevisi metode dari syntax. Sekarang dikenal
dengan BNF (backus Nour Form)
-
5/28/2018 Materi Kuliah Teknik Kompilasi
39/46
Konsep dan Notasi bahasa Tata bahasa (grammar) adalah sekumpulan dari
himpunan variabel-variabel, simbol-simbol terminal,
simbol non-terminal, simbol awal yang dibatasi oleh
aturan-aturan produksi
Aturan produksi adalah pusat dari tata bahasa yang
menspesifikasikan bagaimana suatu tata bahasa
melakukan transformasi suatu string ke bentuk lainnya
-
5/28/2018 Materi Kuliah Teknik Kompilasi
40/46
Konsep dan Notasi bahasa
Syntax : suatu aturan yang memberitahu apakah
sesuatu kalimat (string) adalah valid dalam
program atau tidak
Semantic : suatu aturan-aturan yang
memberikan arti kepada program
-
5/28/2018 Materi Kuliah Teknik Kompilasi
41/46
Penggolongan ChomskyBahasa Mesin Automata Aturan Produksi
Konsep dan Notasi bahasa
Tipe 3AtauRegular
Finite state automata (FSA)meliputi; deterministicFinite Automata (DFA) &
Non Deterministic Finite
Automata (NFA)
adalah simbol variabel
maksimal memiliki sebuah
simbol variabel yang bila ada
terletak diposisi paling kanan
Tipe 2AtauContex Free
Push Down Automata adalah simbol variabel
Tipe 1 Atau
Contex Sensitive
Linier Bounded Automata ||
-
5/28/2018 Materi Kuliah Teknik Kompilasi
42/46
Keterangan menyatakan simbol simbol yang berada diruas kiri aturan produksi
menyatakan simbol simbol yang berada diruas kanan aturan produksi
Simbol-simbol terdiri dari simbol terminal dannon terminal/variabel (masih bisa diturunkan
lagi) Simbol terminal biasanya dinyatakan denganhuruf kecil, sementara non terminal denganhuruf besar
-
5/28/2018 Materi Kuliah Teknik Kompilasi
43/46
Aturan Produksi Tipe O / Unrestricted: Tidak Ada batasan pada aturan produksi
AbcDe
Tipe 1 / Context sensitive: Panjang string ruas kiri harus lebih kecil atau sama
dengan ruas kanan
AbDeFCDeF
Tipe 2 / Context free grammar: Ruas kiri haruslah tepat satu simbol variable
BCDeFg
DBcDe
Tipe 3 / Regular: Ruas kanan hanya memiliki maksimal 1 simbol non
terminal dan diletakkan paling kanan sendiriAeAefgAefgHCD
-
5/28/2018 Materi Kuliah Teknik Kompilasi
44/46
Aturan produksi yang tidak legal !!!
Simbol Etidak boleh berada pada
ruas kiri
misal EAbd
Aturan produksi yang ruas kirinyahanya memuat simbol terminal saja
misal : abd atau abbd
-
5/28/2018 Materi Kuliah Teknik Kompilasi
45/46
Struktur COMPILER
Object code
-
5/28/2018 Materi Kuliah Teknik Kompilasi
46/46
Keterangan Lexical Analyzer = scanner, Syntax Analyzer, dan Intermediate Code
merupakan fungsi Analisis dalam compiler, yang bertugas
mendekomposisi program sumber menjadi bagian-bagian kecil
Code generation dan Code optimization adalah merupakan fungsi
synthesis yang berfungsi melakukan pembangkitan / pembuatan dan
optimasi program (object program)
Scanner adalah mengelompok-an program asal/sumber menjadi token
Parser (mengurai) bertugas memeriksa kebenaran dan urutan dari token-
token yang terbentuk oleh scanner