Anda di halaman 1dari 5

1ugas 8esume 1eknlk kompllasl nama Angga Padlwl[aya

MaLkul 1eorl 8ahasa AuLomaLa nlm 10109901


kelas ll17k
$ a g e

Merupakan Teknik dalam melakukan pembacaan suatu program yang ditulis dalam bahasa sumber,
kemudian diterjemahkan ke dalam suatu bahasa lain yang disebut bahasa sasaran. Dalam melakukan proses
penerjemahan tersebut, sudah barang tentu kompilator akan melaporkan adanya keanehan-keanehan atau
kesalahan yang mungkin ditemukannya. Proses penerjemahan yang dilakukan oleh kompilator ini disebut
proses kompilasi (compiling).
Bila dipandang sepintas lalu, maka akan timbul beranekaragam kompilator yang dapat dibuat antara
lain sebagai berikut :
Bahasa Sumber seperti bahasa FORTRAN, PASCAL, C dan juga bahasa-bahasa lainnya yang siIat
dan pemakaiannya agak spesiIik atau khusus, seperti bahasa untuk program DBASE, SPSS dan lain
sebagainya.
Bahasa Sasaran dapat berupa bahasa sumber lain seperti C, FORTRAN dan lain sebagainya atau
Bahasa Mesin (Machine Language) yang digunakan oleh suatu prosessor mikro atau sumber
komputer besar maupun komputer super.
Sejarah perkembangan suatu kompilator sudah dimulai sejak lama, yaitu pada saat mulai ditemukannya
komputer pada awal 1950-an. Sejak waktu tersebut teknik dan cara pembentukan suatu kompilator telah
berkembang dengan sangat pesat dan pembentukkan suatu kompilator dapat dilakukan makin mudah.
Demikian pula program bantu (tools) untuk membuat suatu kompilator sudah dapat diperoleh sehingga
pembentukan suatu kompilator dapat dilakukan dengan cepat.
Kompilator pertama yang dibuat adalah kompilator untuk bahasa FORTRAN yang pada saat itu
dikembangkan dengan memakan sejumlah tenaga ahli yang setara dengan pekerjaan yang dilakukan oleh 18
orang. Dengan adanya program bantu dan tata cara pembentukan yang sistematis dan tertata dengan baik serta
pendeIinisian struktur bahasa yang cermat, maka suatu kompilator untuk bahasa yang terstruktur seperti
PASCAL atau C dapat dikembangkan.
Proses kompilasi dari suatu kompilator pada dasarnya dapat dibagi ke dalam 2 bagian utama yaitu bagian
analisis dan bagian sintesis.
Tahap analisis program yang ditulis dalam bahasa sumber dibagi dan dipecah ke dalam beberapa
bagian yang kemudian akan dipresentasikan ke dalam suatu bentuk antara dari program sumber.
Operasi-operasi yang dilakukan oleh program sumber ditentukan dan dicatat dalam suatu struktur
pohon (tree) yang disebut dengan nama pohon sintaks (sintax tree) Dalam hal ini setiap nodal pada
tree tersebut menyatakan suatu operasi, sedangkan anak dari nodal (titik) tersebut memberikan
argumen yang diperlukan

1ugas 8esume 1eknlk kompllasl nama Angga Padlwl[aya
MaLkul 1eorl 8ahasa AuLomaLa nlm 10109901
kelas ll17k
$ a g e

Secara umum proses dalam tahap analis terdiri dari 3 bagian utama, yaitu :
1. Proses analisis leksikal
2. Proses analisis sintaktik
3. Proses analisis semantik
Tahap sintesis yang berikutnya program sasaran dibentuk berdasarkan representasi antara yang
dihasilkan pada tahap analisis.
Untuk tahap sintetis terdiri dari 2 bagian utama, yaitu
4. Proses yang menghasilkan kode (code generator)
5. Proses optimasi kode (code optimizer)
Sebelum Bahasa sasaran dapat dihasilkan, dalam melakukan ini tiap bagian utama akan berhubungan
dan berkomunikasi dengan suatu berkas tabel yang disebut tabel simbol (symbol table) yaitu suatu tabel yang
berisi semua simbol yang digunakan dalam bahasa sumber. Selain kompilator masih diperlukan beberapa
program lainnya sebelum dapat dibentuk bahasa sasaran yang dapat dijalankan. Seperti suatu bahasa sumber
dapat dituliskan dalam beberapa modul yang terpisah dan disimpan dalam beberapa Iile yang terpisah.
Untuk menanggulangi hal ini, maka suatu program khusus yang disebut dengan suatu praprosesor
digunakan untuk mengumpulkan modul-modul yang saling lepas ini ke dalam suatu program baru. Praposesor
dapat pula melengkapi singkatan-singkatan atau ungkapan-ungkapan maupun kependekan-kependekan yang
digunakan dalam bahasa sumber seperti pendeI













1ugas 8esume 1eknlk kompllasl nama Angga Padlwl[aya
MaLkul 1eorl 8ahasa AuLomaLa nlm 10109901
kelas ll17k
$ a g e


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).
Proses kompilasi dapat digambarkan melalui sebuah kotak hitam (black box) berikut :



Proses kompilasi dikelompokkan ke dalam dua kelompok besar :
1. analisa : program sumber dipecah-pecah dan dibentuk menjadi bentuk antara (intermediate
representation)
2. sintesa : membangun program sasaran yang diinginkan dari bentuk antara

Fase-Iase proses sebuah kompilasi adalah sebagai berikut :



1ugas 8esume 1eknlk kompllasl nama Angga Padlwl[aya
MaLkul 1eorl 8ahasa AuLomaLa nlm 10109901
kelas ll17k
$ a g e



Program sumber merupakan rangkaian karakter. Berikut ini hal-hal yang dilakukan oleh
setiap Iase pada proses kompilasi terhadap program sumber tersebut :
1. 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 table simbol.
Sederetan karakter yang tidak mengikuti pola token akan dilaporkan sebagai token tak dikenal
(unidentified token).
Contoh : Misalnya pola token untuk identifier I adalah : I huruf(hurufangka)*. Lexeme ab2c dikenali
sebagai token sementara lexeme 2abc atau abC tidak dikenal.
2. 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 : Misalnya sintaks untuk ekspresi if-then E adalah : E if L then, L IOA, I
huruf(hurufangka)*, O ~~, A 01...9. Ekspresi if a2 9 then adalah ekspresi
sesuai sintaks; sementara ekspresi if a2 9 do atau if then a2B 9 tidak sesuai. Perhatikan bahwa contoh
ekspresi terakhir juga mengandung token yang tidak dikenal.
3. 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.
4. Pembangkit kode antara : membangkitkan kode antara (intermediate code) berdasarkan pohon parsing.
Pohon parse selanjutnya diterjemahkan oleh suatu penerjemah yang dinamakan penerfemah berdasarkan
sintak (syntax-directed translator). Hasil penerjemahan ini biasanya merupakan perintah tiga alamat
(three-address code) yang merupakan representasi program untuk suatu mesin abstrak. Perintah tiga
alamat bias berbentuk quadruples (op, arg1, arg2, result), tripels (op, arg1, arg2). Ekspresi dengan satu
argumen dinyatakan dengan menetapkan arg2 dengan - (strip, dash).
5. Pengoptimal kode : melakukan optimasi (penghematan space dan waktu komputasi), jika mungkin,
terhadap kode antara.
6. Pembangkit kode : membangkitkan kode dalam bahasa target tertentu (misalnya bahasa mesin).

1ugas 8esume 1eknlk kompllasl nama Angga Padlwl[aya
MaLkul 1eorl 8ahasa AuLomaLa nlm 10109901
kelas ll17k
$ a g e


Berikut ini akan diberikan sebuah contoh skema penerjemahan suatu ekspresi dalam bahasa sumber,
yaitu : position : initial rate * 60.


Keterangan :
- id adalah token untuk identifier. Tiga lexeme untuk token ini adalah position, initial, dan rate.
- penganalisa semantik secara logika membangkitkan pohon parse.
- penganalisa semantik mendeteksi mismatch type. Perbaikan dilakukan dengan memanggil procedure
inttoreal yang mengkonversi integer ke real.
- 6uadruples dari : temp2 : id3 * temp1 adalah (*,id3,temp1,temp2), id1 : temp3 adalah (assign,temp3,-
,id1), temp1 : inttoreal(60) adalah (inttoreal,60,-,temp1).
- pembangkit kode dalam contoh ini menghasilkan kode dalam bahasa mesin.

Anda mungkin juga menyukai