Anda di halaman 1dari 8

TEKNIK KOMPILASI

Disusun Oleh :
Arbima Prayoga
2255201042

Dosen Pengampu :

GUNTORO,S.T.,M.KOM

TEKNIK INFORMATIKA
FAKULTAS ILMU KOMPUTER
UNIVERSITAS LANCANG KUNING
2023/2024
1. Apa yang kamu ketahui tentang penggolongan bahasa pemrograman berdasarkan
tingkat ketergantungannya dengan mesin?
Jawab: Karena komputer tidak mengerti bahasa alami(bahasa manusia),
komputer hanya mengerti bahasa mesin.
Dalam bahasa mesin perintah perintah direpresentasikan oleh dua angka saja
yaitu 0 dan 1.
Untuk membuat perintah mengetikkan huruf "A" misalnya, perlu rangkaian angka
0 dan 1, yaitu "01000001". 0 berarti
tidak ada arus, 1 berarti ada arus Bayangkan betapa susahnya mengoperasikan
komputer jika setiap orang harus
menghafalkan rangkaian angka angka tersebut. Oleh karena itulah diciptakan
bahasa permrograman yang menjadi
perantara manusia dengan komputer, manusia tidak perlu lagi menghafalkan
setiap instruksi yang harus
diperintahkan, manusia tinggal menggunakan bahasa permrograman. Bahasa
pemrograman tersebut
kemudian diterjemahkan oleh Interpreter/Compiler menjadi bahasa mesin,
setelah diterjemahkan barulah
komputer mengerti. Ibarat Turis yang berkunjung ke indonesia perlu penerjemah
agar turis tersebut bisa berkomunikasi dengan orang yang dikunjunginya.

2. Jelaskan perbedaan Kompilator (compiler) dengan Intepreter?


Jawab: Perbedaan Compiler dengan Interpreter
Pada compiler, kode sumber akan dikonversi menjadi machine code sebelum
program tersebut dijalankan. Sementara, interpreter mengkonversi source code
menjadi machine code secara langsung ketika program dijalankan.

3. Berikan penjelasan dari istilah-istilah berikut:

a. Kompilator

b. Translator

c. Intepreter

d. Assembler
Jawab:
-kompilator = Istilah kompiler muncul karena dulu ada program yang
menggunakan subrutin-subrutin atau pustaka-pustaka untuk keperluan yang
sangat khusus yang dikumpulkan menjadi satu sehingga diistilahkan kompilasi
(kumpulan/paduan).
• Input berupa source code program seperti Pascal, C, C++.
• Object code adalah bahasa assembly.
• Source code dan data input diproses pada saat yang berbeda.
• Compile time adalah saat pengubahan dari source code menjadi object code.
• Runtime adalah saat eksekusi object code dan dapat menerima input data
Data user.
• Output : bahasa assembly. Kemudian oleh linker dihasilkan file EXE

-Translator = translator adalah program yang menerjemahkan suatu kalimat dari


bahasa asal ke bahasa target. Mirip dengan kompilator, translator memiliki
komponen berupa : scanner, parser, dan code generator[HOL92].Scanner
berfungsi memecah kode sumber menjadi rangkaian token, parser berfungsi
mencocokkan rangkaian token dengan grammar bahasa, sedangkan code
generator berfungsi menerapkan aturan penerjemahan dan menulis hasil
keluaran.

-Interpreter = Interpreter tidak menghasilkan object code. Hanya menghasilkan


translasi internal.
• Input dapat berasal dari source code maupun dari inputan program dari user.
• Source code dan inputan data user diproses pada saat yang bersamaan.
• Pada interpreter: program tidak harus dianalisis seluruhnya dulu, tapi
bersamaan dengan jalannya program.
• Keuntungan: mudah bagi user, debuging cepat
• Kekurangan: eksekusi program lambat, tidak langsung menjadi program
executable.

-Assembler = sebuah program komputer untuk menerjemahkan Bahasa Assembly


intinya, sebuah representasi
menmonic dari bahasa mesin menjadi kode objek. Sebuah assembler silang (lihat
kompilator silang)
memproduksi kode untuk satu jenis prosesor, tetapi dapat dijalankan di prosesor
lain.

4. Sebutkan dan jelaskan tahap-tahap kompilasi?


Jawab: Tahapan kompilasi dibagi menjadi 2 bagian besar, yaitu : Phase Analysis
dan Phase Synthesis dan penjelasan sebagai berikut :
- Phase Analysis :
Lexical Analyzer
Pada Compiler, lexical analyzer biasa disebut juga sebagai scanner. Lexical
analyzer adalah tahapan pertama yang dilakukan pada compiler. Proses yang
dilakukan pada tahapan ini adalah membaca program sumber karakter per
karakter. Satu atau lebih (deretan) karakter karakter ini dikelompokkan
menjadi suatu kesatuan mengikuti pola kesatuan kelompok karakter (token)
yang ditentukan dalam bahasa sumber dan disimpan dalam table simbol,
sedangkan karakter yang tidak mengikuti pola akan dilaporkan sebagai token
tak dikenal.
Syntax Analyzer
Setelah tahapan lexical analyzer selesai berikutnya adalah tahapan syntax
analyzer atau biasa juga disebut Parser. Pada tahapan ini token yang
didapatkan dari hasil lexical analysis diurutkan atau disusun lalu
dikelompokkan ke dalam suatu struktur tertentu secara spesifik.
Semantic Analyzer
Setelah tahapan syntax analyzer selesai berikutnya adalah tahapan semantic
analyzer. Tahapan semantic analyzer merupakan tahapan yang penting karena
merupakan pusar dari tahapan kompilasi, dan juga merupakan jembatan
antara fase analysis dan fase synthesis pada compiler. Pada tahapan ini
program sumber akan diperiksa untuk mencari kemungkinan kesalahan
semantic dengan cara memanfaatkan struktur hirarkikal yang dihasil dari
tahapan syntax analyzer. Pada tahapan ini akan dihasilkan suatu kode yang
executable pada kompilasi yang sederhana lalu dimanipulasi dengan berbagai
optimization dari translator sampai nanti benar-benar executable dihasilkan.

Phase Synthesis :
Intermediate Code Generator
Intermediate code generator merupakan tahapan awal dari phase synthesis.
Proses yang dilakukan pada tahapan ini me-generate atau membangkitkan
suatu code berdasarkan parsing tree, lalu selanjutnya diterjemahkan ke dalam
bentuk three address code, quadruples atau triples.
Code Optimizer
Setelah melakukan tahapan intermediate code generator berikutnya yang
dilakukan adalah tahapan code optimizer. Adapun yang dilakukan pada
tahapan ini adalah mengoptimisasi code sehingga menjadi code yang
executable. Tahapan ini dilakukan untuk mempercepat waktu eksekusi dari
suatu program dengan cara menghilangkan redudansi pada code.
Code Generator
Tahapan code generator ini merupakan tahapan terakhir pada proses
kompilasi. Pada tahapan ini akan dilakukan penentuan register untuk masing-
masing variable lalu instruksi-instruksi dalam bentuk antara akan
diterjemahkan ke dalam Bahasa mesin, dan akhirnya akan menghasilkan
relocatable machine code atau assembly code.
Symbol Table Manager
Symbol Table adalah sebuah struktur data dengan record-record untuk setiap
identifier dengan field-field untuk setiap atribut dari identifier tersebut.Error
Handler Error handler merupakan bagian dari compiler untuk menangani dan
melaporkan jika ditemukan suatu error.

5. Sebutkan dan jelaskan klasifikasi bahasa menurut hirarki Chomsky !


Jawab : Dalam hirarki chomsky, terdapat empat level bahasa yaitu level 0 (Natural
Language), level 1 (Contex sensitive), level 2 (Bebas Konteks), dan level 3
(Regular). Dari setiap level tersebut terdapat aturan-aturan produksi yang
membatasinya. Contoh-contoh aturan produksi untuk setiap level bahasa :
1. Level 0 (Natural Language)
Bahasa manusia termasuk kedalam tipe ini, dimana tidak ada batasan untuk
aturan produksinya.
Contoh :
a. Abc → aa
b. Bc → aBaB
c. CaB → aaBaaBa

2. Level 1 (Contex sensitive)


Panjang string di ruas kiri (α) panjang string ruas kanan (b).
Contoh :
a. Ab → aBa
b. cD → aB
c. dEd → FabCa

3. Level 2 (Bebas Konteks)


α adalah sebuah simbol variabel, dan batasannya bertambah bahwa ruas kiri
harus tetap satu simbol variabel.
Contoh :
a. A → aa
b. B → aBD
c. C → FGaa
4. Level 3 (Regular)
Batasannya bertambah lagi, dimana ruas kanan maksimal memiliki sebuah simbol
variabel yang terletak paling kanan. Artinya bisa memiliki simbol terminal dengan
jumlah tidak dibatasi, tetapi bila terdapat simbol variabel maka simbol variabel
tersebut hanya berjumlah satu (1) dan terletak paling kanan.
Contoh :
a. A → aa
b. B → aaB
c. C → aaaaa
TUGAS 2
1. Sebutkan dan jelasan beberapa contoh produk yang ada dipasaran untuk:
a. Kompilator
b. Intepreter
Jawab:
a. Kompilator :
Dalam dunia computer kompilator (compiler) diartikan sebagai penterjemah ke
bahasa assembly yang kemudian diterjemahkan lagi menjadi kode objek sehingga
perintahperintahnya akan dikenali oleh mesin (computer). Dengan adanya
penterjemah ini, computer akan merespon perintah user (pengguna).

beberapa contoh produk yang ada di pasaran untuk :


1. Kompilator Pascal Australian Atomic Energy Commission untuk IBM 370
Mainframe
2. Borland Pascal dan Turbo Pascal yang dikembangkan oleh Borland International
untuk MS-Dos dan untuk Windows 3.1 atau sebagai aplikasi 16-bit untuk Windows
95.
3. Delphi dari Codegear / Borland International yang menghasilkan aplikasi 32-bit
untuk Windows 95/98/NT/Me/2000/XP/Vista.
4. Kylix dari Borland International yang menghasilkan aplikasi 32-bit untuk Linux.
5. UCSD Pascal untuk PDP-11 dan komputer Apple II, dan kemudian untuk IBM-PC
di bawah MS-Dos dijalankan pada sistem operasinya sendiri.

b. Intrepeter :
Perangkat lunak yang mampu mengeksekusi code program (yang ditulis oleh
programmer) lalu menterjemahkannya ke dalam mesin Sehingga mesin melakukan
instruksi yang diminta oleh programmer tersebut. Perintah- perintah yang dibuat
oleh programmer tersebut dieksekusi baris demi baris, sambil mengikuti logika
yang terdapat di dalam kode tersebut. Proses ini sangat berbeda dengan compiler,
dimana pada compiler, hasilnya sudah langsung berupa satu kesatuan perintah
dalam bentuk bahasa mesin, dimana proses penterjemahan dilaksanakan sebelum
program tersebut dieksekusi. beberapa contoh produk yang ada di pasaran untuk
Cobol, PHP dan ASP.

2. Tuliskan perbandingan komponen-komponen mutu kompilator yang tampak pada


beberapa kompilator yang ada di pasaran (misalkan: Turbo Pascal, Turbo C, Microsoft
C, Java, Visual Basic dll.)
Jawab :
a. Turbo Pascal
1. Bahasa Pascal tidak bersifat case sensitive.
2. Secara historis, komentar dalam bahasa pascal diidentifikasikan sebagai {
seperti ini }, atau (* seperti ini *), dan bisa terdiri atas beberapa baris. Versi
lanjutan Borland Pascal juga mendukung model komentar seperti yang
terdapat pada C++. // seperti ini, yang berlaku pada satu baris.
3. Sintaksis case yang lebih fleksibel daripada Pascal standar.
4. Himpunan hanya bisa memiliki hingga 28 (256) anggota.
5. Standar, string dengan panjang yang tetap didukung, namun terdapat pula
tipe data String yang lebih fleksibel.

b. Turbo C

Turbo C++ membebaskan programmer dari keharusan menuliskan program yang


rumit, sebab berbasis pemrograman berorientasi objek (OOP, Object Oriented
Programming). Hal ini memungkinkan program lebih cepat dikembangkan.

c. Microsoft Visual C++

Adalah sebuah produk Integrated Development Environment untuk bahasa


pemrograman C dan C++ yang dikembangkan Microsoft. Visual C++ merupakan salah
satu bagian dari paket Microsoft Visual Studio. Bahasa ini merupakan bahasa
pemrograman tingkat tinggi

d. Java

Java adalah bahasa pemrograman yang dapat dijalankan di berbagai komputer


termasuk telepon genggam. Bahasa ini awalnya dibuat oleh James Gosling saat masih
bergabung di Sun Microsystems, yang saat ini merupakan bagian dari Oracle dan
dirilis tahun 1995.

e. Visual basic

Visual Basic merupakan sebuah bahasa pemrograman yang menawarkan Integrated


Development Environment visual untuk membuat program perangkat lunak berbasis
sistem operasi Microsoft Windows dengan menggunakan model pemrograman.

f. Turbo basic

Turbo Basic merupakan kompiler yang benar-benar menghasilkan kode biner yang
langsung dapat dijalankan pada sistem operasi MS-DOS.
g. Quick basic

Dilengkapi dengan sistem pemrogramanyang terstruktur, Quick Library, on-line help


yang terpadu, editor yang efisien (bisa merapikan teks serta memberitahukan
kesalahan syntax penulisan suatu perintah).

3. Daftar Pusaka
http://kardian2011.blogspot.com/2011/03/pengertian-kompiler-dan- interpreter.html-

https://id.wikipedia.org/wiki/Turbo_Assembler

https://id.m.wikipedia.org/wiki/Visual _Basic

https://id.m.wikipedia.org/wiki/Microsoft _Visual C%2B%2B

https://id.m.wikipedia.org/wiki/Java

Anda mungkin juga menyukai