Tugas 1 Teknik Kompilasi – Introduction to Compiler

Pengertian Teknik Kompilasi

Teknik Kompilasi merupakan teknik dalam melakukan pembacaan suatu program yang ditulis dalam bahasa sumber, kemudian diterjemahkan ke dalam suatu bahasa lain yang disebut bahasa sasaran. Proses penerjemahan yang dilakukan oleh kompilator ini disebut proses kompilasi (compiling).

reg

Dalam melakukan proses penerjemahan tersebut, sudah barang tentu kompilator akan melaporkan adanya keanehan-keanehan atau kesalahan yang mungkin ditemukannya.

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 sifat dan pemakaiannya agak spesifik 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.

Teknik teknik /Tahapan Kompilasi

 

Untitled

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 secara umum proses dalam tahap analis terdiri dari 3 bagian utama, yaitu :

  • · Proses analisis leksikal
  • · Proses analisis sintaktik
  • · Proses analisis semantic

1. Analisis Leksikal/Analisis Linier (Scanner).

Analisis ini melakukan penerjemahan masukan menjadi bentuk yang lebih berguna untuk tahap-tahap kompilasi berikutnya. Analisis Leksikal merupakan antarmuka antara kode program sumber dan analisis sintaktik (parser). Tugas utama penganalisis leksikal adalah memecah tiap baris source menjadi token-token.

Pekerjaan yang dikerjakannya antara lain:

– Membuang komentar

– Menyeragamkan huruf kapital menjadi huruf kecil atau sebaliknya

– Membuang white space

– Menginterpretasikan kompiler directive

– Berkomunikasi dg symbol table

– Mebuat listing

2. Analisis Sintaktik

Analisis Sintaktik/Analisis Hirarki/Parsing. Dalam tahap ini karakter atau token yang diperoleh pada analisis leksikal disusun dan dikelompokkan dalam suatu hirarki tertentu yang secara keseluruhan mempunyai arti tertentu..

Sintak adalah susunan kalimat dan aturan-aturan dalam membentuk kalimat disebut grammar. Penganalisis sintak dalam bidang kompilasi sering disebut dengan Parser. Untuk menganalisis kalimat biasanya digunakan bantuan parse-tree

.Analisis Sintaktik berfungsi menghasilkan pohon sintaks program sumber yang didefinisi grammar. Simbol terminal pohon sintaks adalah token-token yang dihasilkan scanner. Sebelum akhirnya kode eksekusi benar-benar dihasilkan.

3. Analisis Semantik

Disini dilakukan pengecekan pada struktur akhir yang telah diperoleh dan diperiksa kesesuainnya dengan komponen program yang ada. Merupakan pusat dari tahapan translasi, struktur sintaktik yang dikenali oleh Analisis Sintaktik diproses, dan struktur objek eksekusi sudah mulai dibentuk. Analisis semantik kemudian menjadi jembatan antara analisis dan sintesis dari translasi.

Analisis Semantik menghasilkan suatu kode objek yang dapat dieksekusi dalam translasi sederhana, tetapi biasanya bentuk dari kode objek yang dapat dieksekusi ini merupakan bentuk internal dari final program eksekusi, yang kemudian dimanipulasi oleh tahap optimisasi dari translator sebelum akhirnya kode eksekusi benar-benar dihasilkan.

1

Tahap sintesis yang berikutnya program sasaran dibentuk berdasarkan representasi antara yang dihasilkan pada tahap analisis.

Untuk tahap sintetis terdiri dari 3 bagian utama, yaitu :

1. Intermediate Code

2. Proses yang menghasilkan kode (code generator)

3. Proses optimasi kode (code optimizer)

1. Intermediate Code

membangkitkan kode berdasarkan pohon parsing(Parse Tree). Pohon parse selanjutnya diterjemahkan oleh suatu penerjemah yang dinamakan penerjemah 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 bisa berbentuk quadruples (op, arg1, arg2, result), tripels (op, arg1, arg2). Ekspresi dengan satu argumen dinyatakan dengan menetapkan arg2 dengan – (strip, dash)

Ada dua macam intermediate code yaitu

Notasi Postfix dan N-Tuple

1. Notasi POSTFIX

<Operand> <Operand> < Operator>

Misalnya :

( a +b ) * ( c+d )

maka Notasi postfixnya

ab+ cd+ *

2. Triple Notation

Notasi pada triple dengan format <operator> <operand> <operand>

Contoh:

A := D * C + B / E

Jika dibuat intermidiate code triple:

1. * , D, C

2. /, B, E

3. +, (1), (2)

4. :=, A, (3)

2. Code Generation

Code Generator/Pembentukan Kode. Dimana dalam tahap ini dibentuk antara dari bahasa sumber yang berupa suatu pohon sintaks diterjemahkan ke dalam suatu bahasa assembler atau bahasa mesin.

Bentuk antara yang diperoleh biasanya merupakan suatu perintah 3 alamat atau suatu kuadrupel (3-address code atau quadruples), sedangkan bahasa mesin yang dihasilkan adalah suatu bahasa assembler yang merupakan suatu perintah 1 alamat, 1 akumulator.

3. Code Optimizer

Code Optimizer/Optimasi Kode. Hasil pembentukan kode yang diperoleh kemudian dibuat kompak lagi dengan melakukan beberapa teknik optimasi supaya dapat diperoleh program yang lebih efesien.

Dalam hal ini dilakukan beberapa hal seperti pendeteksian suatu ekspresi yang sering terjadi, sehingga pengulangan tidak perlu terjadi dan lain sebagainya.

This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *