Anda di halaman 1dari 6

Nama: Salwa carelina maybrella

Nim: 201011401674

Kelas: 06TPLE005

1. Berikan pendapat anda terkait perbedaan dari Compiler dengan interpreter serta berikan
contohnya (15 Point)

Compiler dan interpreter adalah dua jenis perangkat lunak yang digunakan dalam
pengembangan dan eksekusi program komputer. Meskipun keduanya memiliki tujuan yang
sama, yaitu menerjemahkan kode sumber ke dalam instruksi yang dapat dijalankan oleh
komputer, ada perbedaan signifikan dalam cara kerja keduanya. Berikut adalah penjelasan
singkat tentang perbedaan antara compiler dan interpreter beserta contoh-contoh:

Compiler :

1. Compiler menerjemahkan seluruh kode sumber ke dalam bentuk instruksi yang dapat
dijalankan sebelum program dieksekusi.
2. Output dari compiler biasanya berupa file biner atau file eksekusi yang dapat dijalankan
secara langsung.
3. Compiler melakukan analisis sintaksis, analisis semantik, dan optimasi kode untuk
menghasilkan kode mesin yang efisien.
4. Contoh compiler yang populer adalah GCC (GNU Compiler Collection) untuk bahasa C/C++,
Java Compiler untuk bahasa Java, dan Python Compiler untuk bahasa Python.

Interpreter:

1. Interpreter menerjemahkan dan menjalankan kode sumber satu per satu saat program
sedang dieksekusi.
2. Interpreter tidak menghasilkan file eksekusi terpisah, melainkan menerjemahkan dan
menjalankan pernyataan secara langsung.
3. Interpreter melakukan analisis sintaksis dan analisis semantik setiap kali pernyataan
dijalankan, yang dapat mempengaruhi kinerja relatif lebih lambat dibandingkan dengan
compiler.
4. Contoh interpreter yang populer adalah Python Interpreter untuk bahasa Python, Perl
Interpreter untuk bahasa Perl, dan Ruby Interpreter untuk bahasa Ruby.

Contoh:

Misalkan kita memiliki kode program sederhana dalam bahasa Python yang mencetak
"Hello, World!":

print("Hello, World!")
Jika kita menggunakan compiler Python, seperti PyInstaller, kita dapat mengompilasi
kode tersebut menjadi file eksekusi terpisah. Setelah dikompilasi, kita dapat
menjalankan program tersebut tanpa memerlukan interpreter Python terpasang.
Namun, jika kita menggunakan interpreter Python, kita tidak perlu mengompilasi kode
tersebut. Kita dapat menjalankan kode langsung dengan menggunakan interpreter
Python yang terpasang di sistem kita.

Dalam kasus compiler, proses kompilasi terjadi sebelum program dieksekusi, sementara
dalam interpreter, proses interpretasi terjadi secara interaktif saat program sedang
dieksekusi.

2. Gambarkan grafik tahapan kompilasi serta berikan penjelasan dari tiap tahapan menurut
pemahaman anda! (15 point)

3. Berikut ini adalah pohon penurunan untuk memperoleh string "unpam" menggunakan tata
bahasa bebas konteks yang diberikan:

R
____|___
| |
U Mm
_|__ |
| | np
u nM
|
P

Pohon penurunan tersebut menunjukkan langkah-langkah penurunan yang dilakukan untuk


memperoleh string "unpam" dari simbol awal R.

Langkah-langkah penurunan:

R (Aturan produksi: R → UMm)


U (Aturan produksi: U → unM)
u (Aturan produksi: U → uM)
nM (Aturan produksi: U → unM)
n (Aturan produksi: M → np)
np (Aturan produksi: M → np) p (Aturan produksi: M → paU)
paU (Aturan produksi: M → paU)
pa (Aturan produksi: M → a)
Mm (Aturan produksi: R → UMm)
M (Aturan produksi: M → a)
a (Aturan produksi: M → a)
m (Aturan produksi: R → UMm)

Dalam pohon penurunan ini, setiap simpul menunjukkan simbol yang dihasilkan dalam setiap
langkah penurunan. Garis-garis horizontal menunjukkan hubungan antara langkah-langkah
penurunan, sedangkan garis-garis vertikal menunjukkan hubungan antara non-terminal dan
terminal yang dihasilkan.

4. Untuk membuat pohon sintaks (syntax tree) dari ekspresi "r - 8 + 4 + 21!", kita dapat
menggunakan Backus-Naur Form (BNF) yang menggambarkan aturan sintaksis dari ekspresi
tersebut. Namun, perlu diingat bahwa dalam BNF, tanda seru (!) tidak digunakan sebagai simbol
matematika. Oleh karena itu, saya akan mengasumsikan bahwa tanda seru (!) adalah operator
faktorial dalam ekspresi ini.

Berikut adalah pohon sintaks (syntax tree) dari ekspresi “r – 8 + 4 + 21!”:

+
/|\
- 21!
/\
r +
/\
8 4

Pohon sintaks tersebut menggambarkan struktur hierarkis dari ekspresi matematika yang
diberikan. Setiap simpul dalam pohon menunjukkan operator atau operand yang terlibat dalam
ekspresi.

Langkah-langkah untuk membentuk pohon sintaks tersebut adalah sebagai berikut:

 Mulai dengan operator pertama, yaitu "-". Simbol "-" menjadi akar (root) dari pohon
sintaks.
 Tambahkan operand pertama ke simpul kiri dari akar, yaitu simbol "r".
 Tambahkan operator kedua, yaitu "+" sebagai anak kanan dari akar.
 Tambahkan operand kedua, yaitu "8", sebagai anak kiri dari operator "+".
 Tambahkan operand ketiga, yaitu "4", sebagai anak kanan dari operator "+".
 Tambahkan operator ketiga, yaitu "+" sebagai anak kanan dari operator "+" sebelumnya.
 Tambahkan operand keempat, yaitu "21!", sebagai anak kiri dari operator "+" terakhir.

Dengan demikian, pohon sintaks tersebut mencerminkan struktur hierarkis dari ekspresi
"r - 8 + 4 + 21!" dan memperlihatkan hubungan antara operator dan operand dalam
ekspresi tersebut.

5. Tata Bahasa dibawah ini adalah sebagai berikut:


S → R | MM | E
E → +aE | r | ε
C → ERm | ε
R → aEr | eCrm | ε

Untuk menyederhanakan tata bahasa ini, kita dapat menghilangkan beberapa produksi yang
tidak diperlukan dan menggabungkan beberapa produksi dengan pola yang serupa. Berikut
adalah penyederhanaan tata bahasa tersebut:

S → R | MM | E
E → +aE | r | ε
C → ERm | ε
R → aEr | eCrm | ε

Penjelasan proses penyederhanaan:

 Tidak ada penyederhanaan yang dapat dilakukan pada aturan produksi S karena setiap
produksi memiliki simbol yang berbeda.
 Pada aturan produksi E, kita dapat menghilangkan ε (epsilon) karena ε tidak
menyumbangkan kontribusi dalam pembentukan string yang valid. Jadi, aturan produksi
E menjadi:

E → +aE | r

Pada aturan produksi C, kita dapat menghilangkan ε (epsilon) karena ε tidak menyumbangkan
kontribusi dalam pembentukan string yang valid. Jadi, aturan produksi C menjadi:

C → ERm

Pada aturan produksi R, terdapat beberapa penyederhanaan yang dapat dilakukan:

Menggabungkan produksi R yang menghasilkan ε (epsilon) dengan produksi R yang mengandung


simbol non-terminal lainnya. Jadi, aturan produksi R menjadi:

R → aEr | eCrm | aErCrm

Menggabungkan produksi R yang menghasilkan ε (epsilon) dengan produksi R yang mengandung


simbol non-terminal C. Jadi, aturan produksi R menjadi:

R → aErCrm

Setelah melakukan penyederhanaan, tata bahasa menjadi:


S → R | MM | E

E → +aE | r

C → ERm

R → aErCrm

Anda mungkin juga menyukai