TEKNIK KOMPILASI

25
TUGAS TEKNIK KOMPILASI Oleh : Handika Teguh W. 083112706450014 TEKNIK INFORMATIKA UNIVERSITAS NASIONAL

description

Tugas matkul teknik kompilasi,

Transcript of TEKNIK KOMPILASI

Page 1: TEKNIK KOMPILASI

TUGAS TEKNIK KOMPILASI

Oleh :

Handika Teguh W.

083112706450014

TEKNIK INFORMATIKA

UNIVERSITAS NASIONAL

Page 2: TEKNIK KOMPILASI

DAFTAR ISI

BAB I COMPILER

BAB II INPUT DAN ANALISA LEKSIKAL

BAB III TATA BAHASA

BAB IV CONTEXT FREE GRAMMAR

BAB V TOP DOWN PARSING

BAB VI SCANNER

BAB VII ANALISIS SYNTAX

BAB VIII PREDIKTIVE PARSER

BAB IX ANALISIS SEMANTIK , KODE ANTARA DAN PEMBANGKITAN KODE

Page 3: TEKNIK KOMPILASI

BAB I

COMPILER

1. Sebutkan beberapa tingkatan bahasa berdasarkan tingkat ketergantungannya dengan mesin dan

jelaskanlah !

1. Bahasa Mesin

Merupakan bentuk terendah dari bahasa komputer, setiap instruksi dalam program

diprepresentasikan dengan kode numerik , yang secara fisik berupa deretan angka 0 dan 1

Sekumpulan instruksi dalam bahasa mesin bisa dibentuk menjadi microcode, yaitu

semacam prosedure dalam bahasa mesin.

2. Bahasa Assembly

Merupakan bentuk simbolik dari bahasa mesin. Setiap kode operasi memiliki kode

simbolik, misalnya: ADD untuk penjumlahan ( Addition) dan MUL untuk perkalian

( multiplication).

3. Bahasa Tingkat Tinggi (User Oriented)

Disebut tingkat tinggi karena lebih dekat dengan manusia. Bahasa ini memberikan

fasilitas lebih banyak, kontrol program yang terstruktur, kalang(nested), block, dan

prosedur. Contohnya: Pascal, Basic.

4. Bahasa Yang problem oriented

Bahasa ini memungkinkan penyelesaian untuk sustu masalah atau aplikasi yang spesifik.

Contohnya: SQL (Stucture Query Language) untuk aplikasi database,

Bahasa yang Problem Oriented kadang dimasukkan pula sebagai bahasa tingkat tinggi.

Page 4: TEKNIK KOMPILASI

2. Sebutkan keuntungan menggunakan bahasa tingkat tinggi !

1. Kemudahan untuk dipelajari, tidak membutuhkan latar belakang pengetahuan

pengetahuan mengenai perangkat keras (hardware) karena sifatnya yang machine

independent.

2. Lebih mendekati permasalahan yang akan diselesaikan.

3. Pemrograman tidak perlu mengetahui bagaimana representasi data k edalam bentuk

internal memory. Kemampuan untuk konversi data, seperti : floating point misalnya

sudah tersedia. Pekerjaan tersebut ditangani suatu sistem yang mentranslasikan program

bahasa tingkat tinggi ke dalam bahasa mesin.

4. Memberikan banyak pilihan struktur kontrol seperti kondisional (IF-THEN-ELSE).

5. Program lebih mudah di debug.

6. Kemampuan Stuktur data yang lebih baik sehingga memfasilitasi pengekspresian suatu

solusi dari masalah tertentu.

7. Karena ketersediaan feature seperti prosedur, bahasa tingkat tinggi memungkinkan suatu

deskripsi modular dan hirarkis dalam pemrograman . Suatu pekerjaan bisa diserahkan

pada suatu tim , dan memungkinkan pembagian kerja.

8. Kompatibilitas dan dokumentasi yang lebih baik dalam pengembangan program.

9. Tidak bergantung pada mesin ( machine independent) sehingga memiliki portabilitas

tinggi. Program hanya memerlukan sedikit perubahan untuk bisa dieksekusi pada mesin

yang berbeda arsitektur internalnya dan instruksi bahasa mesinnya. Portabilitas ini akan

mengurangi biaya.

3. Sebutkan dan jelaskan jenis-jenis dari translator !

1. Assembler

Source code adalah bahasa assembly, object code adalah bahasa mesin.

Contohnya: Turbo Assembler dan Macro Assembler.

Page 5: TEKNIK KOMPILASI

Gbr 1.3. Assembler

2. Kompilator (Compiler)

Source code adalah bahasa tingkat tinggi ( misal bahasa Pascal) , object code adalah

bahasa mesin atau bahasa assembly. Source code dan data diproses pada saat yang

berbeda.

Contohnya : Turbo Pascal.

Compile time adalah saat pengubahan source code ke object code .

Run time adalah saat eksekusi object code.

Compile time Run time

Gambar1.4. Proses kompilasi

3. Interpreter

Interpreter tidak membangkitkan object code, hasil translasi hanya dalam bentuk internal.

Contoh interpreter: BASICA/GW-BASIC, LISP,SMALLTALK.

Source code dan data diproses pada saat yang sama.

Page 6: TEKNIK KOMPILASI

Run time

Gambar 1.5. Proses Interpretasi

4. Jelaskan fungsi dari scanner,parser,dan analisis semantic !

• Scanner : memecah program sumber menjadi besaran leksik / token.• Parser : memeriksa kebenaran dan urutan kemunculan token.• Analisis Semantik : melakukan analisis semantik, biasanya dalam realisasi akan

digabungkan dengan intermediate code generator ( bagian yang berfungsi membangkitkan kode antara)

5. Buatlah program menggunakan Turbo C++ dan lakukan compile pada program tersebut !

#include<conio.h>

#include<iostream.h>

#include<math.h>

void main()

{

int no,n1,n2,n3,kali,tam,krg,bg,md;

cout<<" MENU OPERATOR "<<endl;

cout<<" ================================ "<<endl;

cout<<" 1. OPERATOR TAMBAH "<<endl;

cout<<" 2. OPERATOR KALI "<<endl;

Page 7: TEKNIK KOMPILASI

cout<<" 3. OPERATOR KURANG "<<endl;

cout<<" 4. OPERATOR BAGI "<<endl;

cout<<" 5. OPERATOR MOD "<<endl;

cout<<" 6. OPERATOR NAIK "<<endl;

cout<<" 7. OPERATOR TURUN "<<endl;

cout<<" 8. KELUAR PROGRAM "<<endl;

cout<<" ================================ "<<endl;

cout<<" MASUKKAN NOMOR : ";cin>>no;

cout<<" ================================ "<<endl;

switch(no)

{

case 1:

cout<<" OPERATOR TAMBAH "<<endl;

cout<<" ================================ "<<endl;

cout<<" Masukkan Nilai 1 =";cin>>n1;

cout<<" Nilai 1 Adalah "<<n1<<endl;

cout<<" Masukkan Nilai 2 =";cin>>n2;

cout<<" Nilai 2 Adalah "<<n2<<endl;

cout<<" Masukkan Nilai 3 =";cin>>n3;

cout<<" Nilai 3 Adalah "<<n3<<endl;

tam=n1+n2+n3;

cout<<" TOTAL OPERATOR TAMBAH = "<<tam<<endl;

cout<<" ================================ "<<endl;

break;

case 2:

cout<<" OPERATOR KALI "<<endl;

cout<<" ================================ "<<endl;

cout<<" Masukkan Nilai 1 =";cin>>n1;

cout<<" Nilai 1 Adalah "<<n1<<endl;

cout<<" Masukkan Nilai 2 =";cin>>n2;

cout<<" Nilai 2 Adalah "<<n2<<endl;

Page 8: TEKNIK KOMPILASI

cout<<" Masukkan Nilai 3 =";cin>>n3;

cout<<" Nilai 3 Adalah "<<n3<<endl;

kali=n1*n2*n3;

cout<<" TOTAL OPERATOR KALI = "<<kali<<endl;

cout<<" ================================ "<<endl;

break;

case 3:

cout<<" OPERATOR KURANG "<<endl;

cout<<" ================================ "<<endl;

cout<<" Masukkan Nilai 1 =";cin>>n1;

cout<<" Nilai 1 Adalah "<<n1<<endl;

cout<<" Masukkan Nilai 2 =";cin>>n2;

cout<<" Nilai 2 Adalah "<<n2<<endl;

cout<<" Masukkan Nilai 3 =";cin>>n3;

cout<<" Nilai 3 Adalah "<<n3<<endl;

krg=n1-n2-n3;

cout<<" TOTAL OPERATOR KURANG = "<<krg<<endl;

cout<<" ================================ "<<endl;

break;

case 4:

cout<<" OPERATOR BAGI "<<endl;

cout<<" ================================ "<<endl;

cout<<" Masukkan Nilai 1 =";cin>>n1;

cout<<" Nilai 1 Adalah "<<n1<<endl;

cout<<" Masukkan Nilai 2 =";cin>>n2;

cout<<" Nilai 2 Adalah "<<n2<<endl;

bg=n1/n2;

cout<<" TOTAL OPERATOR BAGI = "<<bg<<endl;

cout<<" ================================ "<<endl;

break;

case 5:

Page 9: TEKNIK KOMPILASI

cout<<" OPERATOR MOD "<<endl;

cout<<" ================================ "<<endl;

cout<<" Masukkan Nilai 1 =";cin>>n1;

cout<<" Nilai 1 Adalah "<<n1<<endl;

cout<<" Masukkan Nilai 2 =";cin>>n2;

cout<<" Nilai 2 Adalah "<<n2<<endl;

md=n1-n2;

cout<<" TOTAL OPERATOR MOD = "<<md<<endl;

cout<<" ================================ "<<endl;

break;

case 6:

cout<<" OPERATOR NAIK "<<endl;

cout<<" ================================ "<<endl;

cout<<" Masukkan Nilai 2 =";cin>>n2;

cout<<" Nilai 2 Adalah "<<n2<<endl;

++n2;

cout<<" Nilai = "<<n2<<endl;

cout<<" ================================ "<<endl;

break;

case 7:

cout<<" OPERATOR TURUN "<<endl;

cout<<" ================================ "<<endl;

cout<<" Masukkan Nilai 1 =";cin>>n1;

cout<<" Nilai 1 Adalah "<<n1<<endl;

++n1;

cout<<" Nilai = "<<n1<<endl;

cout<<" ================================ "<<endl;

break;

default:

cout<<" Created By DHIKA "<<endl;

cout<<" =============================================== "<<endl;

Page 10: TEKNIK KOMPILASI

break;

}

getch();

}

Page 11: TEKNIK KOMPILASI

BAB II

INPUT DAN ANALISA LEKSIKAL

1. Jelaskan apa yang dimaksud dengan analisa 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.

2. Sebutkan aspek-aspek yang harus diperhatikan saat merancang sebuah bahasa !

1. Spesifikasi leksikal,

Misalnya setiap kata harus tersusun atas huruf mati dan huruf hidup yang disusun bergantian, atau setiap token harus dimulai dengan huruf dan selanjutnya boleh diikuti oleh huruf atau angka.

2. Spesifikasi sintaks,

Misalnya setiap kalimat mengikuti pola subyek- predikat- obyek atau ekspresi for-do mengikuti pola for-identifier-:= identifier-toidentifier-do-ekspresi.

3. Aturan-aturan semantik,

Misalnya kata yang mendahului kata kerja haruslah kata benda yang menggambarkan sesuatu yang hidup dan berkaki, atau operasi perkalian hanya bisa dilakukan antara dua operan dengan tipe yang sama.

3. Apa pengertian dari list error ? Menampilkan kesalahan-kesalahan yang terjadi pada suatu baris.

4. Berikan penjelasan tentang 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 tabel simbol. Sederetan karakter yang tidak mengikuti pola token akan dilaporkan sebagai token tak dikenal (unidentified token).

5. Berikan penjelasan tentang penganalisa syntax ! 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).

Page 12: TEKNIK KOMPILASI

BAB III

TATA BAHASA

1. Sebutkan penggolongan bahasa menurut hirarki Chomsky !

1. Grammar tipe ke-0 : Unrestricted Grammar (UG)

Ciri : α, β ∈ (V T |VN )*, |α |> 0

2. Grammar tipe ke-1 : Context Sensitive Grammar (CSG)

Ciri : α, β ∈ (V T |VN )*, 0 < |α | ≤ |β |

3. Grammar tipe ke-2 : Context Free Grammar (CFG)

Ciri : α ∈ V N , β ∈ (V T |VN )*

4. Grammar tipe ke-3 : Regular Grammar (RG)

Ciri : α ∈ V N , β ∈ {V T , V T VN } atau α ∈ V N , β ∈ {V T , V N VT }

2. Apa yang dimaksud dengan diagram keadaan ? Jelaskanlah !

Page 13: TEKNIK KOMPILASI

Diagram Keadaan (State Transition Diagram ) digunakan untuk mendapatkan token (token adalah simbol terminal pada teori bahasa automata), yaitu melakukan analisis leksikal terhadap program sumber.

3. Sebutkan fungsi dari notasi BNF dan gambarkan simbolnya !

Aturan –aturan produksi dapat dinyatakan dalam bentuk BNF (Backus Naur Form/ Backus Norm Form ). Notasi BNF telah banyak dipakai untuk melakukan definisi formal bahasa pemrograman.

::= Identik dengan simbol pada aturan produksi

| Idem dengan simbol serupa pada aturan produksi

< > Mengapit simbol variabel / non terminal

{ } Pengulangan 0 sampai n kali

4. Buatlah diagram sintaksnya dari aturan produksi T → F*T | F/ T | F

T

5. Buatlah diagram BNF dari aturan produksi E → T | T+E | T- E, T → a

Notasi BNF :

E ::= <T> | <T> + <E> | <T>- <E>, T ::= a

*

/

Page 14: TEKNIK KOMPILASI

BAB IV

CONTEXT FREE GRAMMAR

1. Tuliskan bentuk umum dari CFG!

CFG : A → α , A ∈V N, α ∈(V N | V T )*

2. Buatkan derivasi dan parsing dari G = {I → HI HIA, H → abc...z, A → 012...9} dengan I adalah simbol awal.

Berikut ini kedua cara analisa sintaks untuk kalimat x23b.

cara 1 (derivasi) cara 2 (parsing)

I ⇒ IH I

⇒ IAH

⇒ IAAH I H

⇒ HAAH

⇒ xAAH I A b

⇒ x2AH

⇒ x23H I A 3

⇒ x23b

H 2

x

3. Sebutkan macam-macam metoda parsing dan jelaskan !

Ada 2 metoda parsing : top-down dan bottom-up.

Parsing top-down :

Parsing dimulai dari simbol awal S sampai kalimat x

Parsing bottom-up :

Page 15: TEKNIK KOMPILASI

Parsing dimulai dari kalimat x sampai simbol awal S

4. Jelaskan tentang metoda brute force !

Kelas metoda dengan backup, termasuk metoda Brute-Force, adalah kelas metoda parsing yang menggunakan produksi alternatif, jika ada, ketika hasil penggunaan sebuah produksi tidak sesuai dengan simbol input. Penggunaan produksi sesuai dengan nomor urut produksi.

5. Sebutkan dua kelas metoda parsing top down !

1. kelas metoda dengan backup,

Contoh: metoda Brute-Force

2. kelas metoda tanpa backup

Contoh: metoda recursive descent.

Page 16: TEKNIK KOMPILASI

BAB V

TOP DOWN PARSING

1. Jelaskan perbedaan antara parsing top down dan parsing bottom up !

Parsing top-down : Diberikan kalimat x sebagai input. Parsing dimulai dari simbol awal S sampai

kalimat x nyata (atau tidak nyata jika kalimat x memang tidak bisa diturunkan dari S) dari

pembacaan semua leaf dari pohon parsing jika dibaca dari kiri ke kanan.

Parsing bottom-up : Diberikan kalimat x sebagai input. Parsing dimulai dari kalimat x yang nyata

dari pembacaan semua leaf pohon parsing dari kiri ke kanan sampai tiba di simbol awal S (atau

tidak sampai di S jika kalimat x memang tidak bisa diturunkan dari S)

2. Jelaskan ketentuan produksi yang digunakan pada metode recursive descent !

Jika terdapat dua atau lebih produksi dengan ruas kiri yang sama maka karakter pertama dari semua ruas kanan produksi tersebut tidak boleh sama. Ketentuan ini tidak melarang adanya produksi yang bersifat rekursi kiri.

3. Berikan contoh GPS !

I ⇒ I H

⇒ H H

⇒ H b

Hb adalah sentensial dan b adalah simple frase (dibandingkan dengan Q1β Q2 maka Q= H, β = b, dan Q = ε) Perhatikan : simple frase (b) adalah yang terakhir diturunkan

I ⇒ I H

⇒ I b

⇒ H b

Hb adalah sentensial dan H adalah simple frase (dibandingkan dengan Q1β Q2 maka Q= ε, β = H, dan Q = b) Perhatikan : simple frase (H) adalah yang terakhir diturunkan

4. Gambarkan relasi preseden dan GPS !

Page 17: TEKNIK KOMPILASI

• Relasi preseden adalah relasi antara 2 simbol grammar (baik V T maupun V N ) dimana paling

tidak salah satu simbol tersebut adalah komponen handel.

• Misalkan S dan R adalah 2 simbol. Ada 3 relasi preseden yang : ←, ↔ , dan →

Relasi : R → S Relasi : R ↔ S Relasi : R ← S

5. Berikan contoh metode brute !

Terdapat grammar/tata bahasa G = (V,T,P,S), dimana

V= (“E”,”T”,”F”) Simbol NonTerminal (variable)

T= (“i”,”*”,”/” ,”+”,”-”) Simbol Terminal

S=”E” Simbol Awal / Start simbol

String yang diinginkan adalah i * i

aturan produksi (P) yang dicobakan adalah

1. E → T | T + E | T - E

T → F | F * T | F / T

F → i

2. E → T | E+T | E-T

T → F | T* F | T / F

F → i

accept (diterima)

Meskipun ada rekursif kiri, tetapi tidak diletakkan sebagai aturan yang paling kiri

3. E → E+T | E-T | T

T → T* F | T / F | F

Page 18: TEKNIK KOMPILASI

F → i

Rekursif kiri, program akan mengalami loop.

Page 19: TEKNIK KOMPILASI

BAB VI

SCANNER

1. Sebutkan tugas-tugas scanner !

1. Melakukan pembacaan kode sumber dengan merunut karakter demi karakter.2. Mengenali besaran leksik3. Mentransformasi menjadi sebuah token dan menentukan jenis tokennya.4. Mengirimkan token.5. Membuang/mengabaikan blank dan komentar dalam program.6. Menangani kesalahan.7. Menangani tabel simbol.

2. Jelaskan dan gambarkan posisi penganalisa sintaks (parser) !

- Deretan token : dihasilkan oleh Penganalisa Leksikal (Scanner)

- Pohon parse : suatu pohon dimana akarnya (root) adalah simbol awal

grammar (starting symbol), setiap node dalam (inner

node) adalah simbol nonterminal, dan daunnya (leaf)

dibaca dari kiri ke kanan adalah deretan token masukan.

3. Apa yang dimaksud dengan kesalahan syntax ?! Syntax terjadi jika pola deretan token tidak memenuhi ketentuan pola yang telah ditentukan grammar untuk parser.

4. Mengapa grammar yang terpilih untuk melakukan scanner harus grammar RG,bukan CFG ?!

Page 20: TEKNIK KOMPILASI

Karena perbedaan cara pandangRG dengan CFG terhadap sebuah token yang mengalir antara scanner dan parser. BagiRG (scanner) sebuah token (kecuali reserve word) adalah sebuah kalimat dimana setiapkarakter pembentuk token tersebut adalah simbol terminal. Sebaliknya bagi CFG (parser) sebuah token adalah sebuah simbol terminal dimana sederetan tertentu token akan membentuk sebuah kalimat.

5. Apa yang dimaksud dengan pohon parser ?

suatu pohon dimana akarnya (root) adalah simbol awal grammar (starting symbol), setiap node dalam (inner node) adalah simbol nonterminal, dan daunnya (leaf) dibaca dari kiri ke kanan adalah deretan token masukan.

Page 21: TEKNIK KOMPILASI

BAB VII

ANALISIS SYNTAX

1. Apa yang dimaksud dengan tree ?

suatu graph terhubung tidak sirkuler, yang memiliki satu simpul (node)/vertex disebut akar (root) dan dari situ memiliki lintasan ke setiap simpul.

2. Bagaimana cara melakukan parsing?

• Penurunan terkiri ( leftmost derivation)

Simbol variabel terkiri yang diperluas terlebih dahulu.

• Penurunan terkanan ( rightmost derivation)

Simbol variabel terkanan yang diperluas terlebih dahulu.

3.Berikan contoh parsing dengan penurunan terkiri !

S → a AS | a,

A → SbA | ba

Penurunan kiri :

S => aAS

=> aSbAS

=> aabAS

=> aaabbaS

=> aabbaa

4.Berikan contoh parsing dengan penurunan terkini !

S → a AS | a,

A → SbA | ba

S => aAS

Page 22: TEKNIK KOMPILASI

=> aAa

=> aSbAa

=> aSbbaa

=> aabbaa

5. Bagaimana ciri-ciri metode recursive descent parser ?

Secara rekursif menurunkan semua variabel dari awal sampai bertemu terminal dan tidak pernah mengambil token secara mundur (no back-track).

Metode parser yang digunakan adalah LL(1) parser yaitu memparsing satu simbol non terminal dengan metode top down parsing yang tidak mengandung left recursive

Page 23: TEKNIK KOMPILASI

BAB VIII

PREDICTIVE PARSER

1. Gambarkan model dari predictive parser !

2. Apa yang dimaksud dengan stack ?

berisi simbol grammar (V N atau V T ). Pada keadaan awal stack hanya berisi $ danS (simbol awal).

3. Jelaskan kedua fungsi dari parsing M table !

Kedua fungsi tersebut adalah First(X), X ∈(V N | VT ) dan Follow(Y), Y ∈V N .

First(X) adalah himpunan simbol terminal yang merupakan simbol pertama dari X atau

merupakan simbol pertama dari simbol-simbol yang dapat diturunkan dari X.

Follow(Y) adalah himpunan simbol terminal yang dapat muncul tepat di sebelah kanan

Ymelalui nol atau lebih derivasi.

4. Apa yang dimaksud dengan parsing M table !

array 2 dimensi M(A,a), dimana A adalah simbol nonterminal dan adalah simbol terminal (token) atau simbol $. Nilai M(A,a) adalah :sebuah produksi A → α atau tanda-tanda kesalahan (keduanya akan dibahas kemudian)

5. Diketahui grammar E TE’,buatkanlah algoritma parsing tabelnya !

◊ E → TE’ :

Karena : First(TE’) = Fisrt(T) = {(, id} maka menurut (1a) :M(E, () = M(E, id) = E → TE’

Page 24: TEKNIK KOMPILASI

BAB IX

ANALISIS SEMANTIK , KODE ANTARA DAN PEMBANGKITAN KODE

1. Apa fungsi dari semantic analyzer secara global !?

Secara global, fungsi dari semantic analyzer adalah untuk menentukan makna dari serangkaian instruksi yang terdapat dalam program sumber. Fungsi ini adalah sesuatu yang unik dan berbeda dengan bagian lain dari keseluruhan proses kompilasi.

2. Jelaskan pengecekan yang dilakukan oleh analisis semantic !

a. Memeriksa keberlakukan nama-nama meliputi pemeriksaan berikut.

- Duplikasi

- Terdefinisi

b. Memeriksa tipe.

Melakukan pemeriksaan terhadap kesesuaian tipe dalam statement- statement.

3. Apa yang dimaksud dengan kode antara ?

Kode antara (intermediate code) adalah sebuah representasi yang disiapkan untuk mesin abstrak tertentu.

4. Apa kegunaan dari kode antara ?

• Untuk memperkecil usaha dalam membangun kompilator dari sejumlah bahasa ke sejumlah mesin. Dengan adanya kode antara yang lebih machine independent maka kode antara yang dihasilkan dapat digunakan lagi pada mesin lainnya.

• Proses optimasi masih lebih mudah. Beberapa strategi optimisasi lebih mudah dilakukan pada kode antara daripada pada program sumber atau pada kode assembly dan kode mesin.

• Bisa melihat program internal yang gampang dimengerti. Kode antara ini akan lebih mudah dipahami daripada kode assembly atau kode mesin.

Page 25: TEKNIK KOMPILASI

5. Jelaskan tentang notasi postfix !

Sehari-hari kita biasa menggunakan operasi dalam notasi infix ( letak operator di tengah). Pada notasi Postfix operator diletakkan paling akhir maka disebut juga dengan notasi Sufix atau reverse Polish.Sintaks notasi Postfix; < operan> < operan> < operator>.