Catatan3 4
Catatan3 4
Desain Kompiler
1/13/2020
Desain Kompiler
8:18 PM
Tahap Analisis dan Tahap
Sintesis
Tahap analisis
Program yang ditulis dalam bahasa
sumber dibagi dan dipecah kedalam
beberapa bagian yang kemudian akan
direpresentasikan kedalam suatu bentuk
antara dari program sumber.
Tahap sintesis
Program sasaran dibentuk berdasarkan
representasi antara yang dihasilkan
pada tahap analisis.
1/13/2020
Desain Kompiler
8:18 PM
Proses Pada Tahap Analisis
dan Tahap Sintesis
Tahap analisis dan tahap sintesis mempunyai
hubungan ke symbol table yang berisi semua simbol
yang digunakan dalam program sumber.
Tahap Analisis
Analisis leksikal
Analisis sintaktik
Analisis semantik
Tahap Sintesis
Optimasi kode
Pembangkitan kode
1/13/2020
Desain Kompiler
8:18 PM
Praprosesor
1/13/2020
Desain Kompiler
8:18 PM
Jenis Praprosesor
Pemrosesan makro
Pengikutsertaan berkas
Praprosesor rasional
Perluasan bahasa
1/13/2020
Desain Kompiler
8:18 PM
Pengikutsertaan Berkas
(File Inclusion)
Suatu praprosesor yg memungkinkan
diikutsertakannya beberapa berkas program yg
telah ditulis sebelumnya kedalam program yg
sedang ditulis.
Biasanya berkas program yg ditulis sebelumnya
merupakan segmen program yg sering sekali
digunakan, banyak manfaatnya, dan sering terjadi
sudah merupakan bagian dari sistem bahasa yang
digunakan.
Contoh: Pada bahasa C isi dari berkas global.h
dapat diikutsertakan dalam perintah yg sedang
ditulis dengan menggunakan perintah #include
global.h.
1/13/2020
Desain Kompiler
8:18 PM
Praprosesor Rasional
1/13/2020
Desain Kompiler
8:18 PM
Perluasan Bahasa
Praprosesor ini memungkinkan suatu bahasa untuk
berinteraksi dengan sistem atau bahasa lainnya.
Misalnya pada bahasa C yang ditambahkan
kemampuannya untuk dapat mengakses data
dalam suatu basis data. Untuk itu praprosesor
memungkin-kan digunakannya tanda ## yg
menyatakan bahwa bagian ini bukan merupakan
bagian dari bahasa C, tetapi berhubungan
dengan sistem suatu paket basis data lain yang
sudah baku. Dengan demikian bagian ini akan
diterjemahkan kedalam pemanggilan procedure
untuk melakukan akses basis data.
1/13/2020
Desain Kompiler
8:18 PM
Hasil Kompilasi
1/13/2020
Desain Kompiler
8:18 PM
Kode Assembly
1/13/2020
Desain Kompiler
8:18 PM
Assembler
Assembler dalam bentuk yg paling sederhana melakukan
pembacaan input dua kali (two-pass assembler).
Pembacaan pertama, setiap identifier yg menunjukkan
suatu lokasi tempat penyimpanan yg baru disimpan dalam
suatu tabel simbol assembler yg berbeda dengan tabel
simbol kompilator.
Pembacaan kedua, menerjemahkan setiap kode operasi
kedalam notasi biner dari bahasa mesin dan
menerjemahkan setiap identifier yg menyatakan suatu
tempat dengan alamat dari identifier tsb dalam tabel
simbol. Hasil dari pembacaan kedua biasanya dalam kode
mesin yg dapat dialihtempatkan.
1/13/2020
Desain Kompiler
8:18 PM
Editor Penghubung (Link-
editor)
Umumnya melakukan loading dan link-editing.
Loading: pengambilan kode mesin yg dapat
dialihletakkan, kemudian alamat-alamat yg
dapat dialihletakkan diganti dan kemudian
perintah beserta data yg diperoleh diletakkan
pada memori pada tempat yg seharusnya.
Link-editing: memungkinkan terbentuknya satu
program dari beberapa berkas yg masing-masing
merupakan kode mesin yg dapat dialihletakkan.
Berkas-berkas ini mungkin merupakan hasil dari
beberapa proses kompilasi yg berbeda, yg salah
satunya mungkin merupakan rutin yg telah
disediakan oleh sistem operasi dan dapat
Desain Kompiler
1/13/2020
8:18 PM
LEXICAL ANALYSIS
SYNTAX ANALYSIS
SEMANTIC ANALYSIS
SYMBOL ERROR
TABLE DETECTION
INTERMEDIATE
CODE GENERATOR
CODE OPTIMIZER
CODE GENERATOR
OUTPUT
1/13/2020
Desain Kompiler
8:18 PM
Analisis Leksikal
1/13/2020
Desain Kompiler
8:18 PM
Waktu Untuk Analisis Leksikal
1/13/2020
Desain Kompiler
8:18 PM
Contoh Proses Analisis
Leksikal
Contoh 1:
100 LET A=50
menjadi 100LETA=50
Contoh 2:
100 FOR I=0 TO 50
110 LET A(I)=0 : REM INIT ARRAY
120 NEXT I
menjadi
100FORI=0TO50\110LETA(I)=0\120NEXTI
Tujuan: menghemat memori.
1/13/2020
Desain Kompiler
8:18 PM
Analisis Sintaktik
Analisis sintaktik atau analisis hirarki atau tahap
parse tree.
Karakter atau token yang diperoleh pada
analisis leksikal disusun dan dikelompokkan
dalam suatu hirarki tertentu yang secara
keseluruhan mempunyai arti tertentu.
Sintaks selanjutnya disebut sebagai struktur dari
program atau grammar dari source program.
Contoh: post:=init+nilai*bil
2 1
1/13/2020
Desain Kompiler
8:18 PM
Analisis Semantik
Pengecekan pada struktur akhir yang telah
diperoleh dan diperiksa kesesuaiannya dengan
komponen program yang ada.
Hasil yang diperoleh dari pengkodean dapat
dinyatakan lebih tepat dan teliti.
Contoh: penggunaan single precision dan
double precision.
1/13/2020
Desain Kompiler
8:18 PM
Intermediate Code
Generator
Membentuk kode menengah pada proses
kompilasi.
Pada tahap ini dikenal dengan sistem three
address code yang terdiri dari instruksi-instruksi
yang berurutan dimana instruksi tersebut
biasanya mempunyai 3 operand.
Contoh:
temp1:=inttoreal(60)
temp2:=id3*temp1
1/13/2020
Desain Kompiler
8:18 PM
Code Optimizer
1/13/2020
Desain Kompiler
8:18 PM
Code Generator
1/13/2020
Desain Kompiler
8:18 PM