Anda di halaman 1dari 5

TEKNIK KOMPILASI 3

NAMA-NAMA ANGGOTA KELOMPOK 3

1. Felisitas Bergita W. Tobin (23119099)


2. Elisabeth Feronika Fahik (23119103)
3. Maria Jelsiani Bhanda (23119104)
4. Maria Lidwina Bau (23119106)
5. Agrianus Erwin Bere (23119111)
6. Yane Rouk (23119113)
7. Maria Imakulata Fay (23119117)
8. Yuvensius A. Uskenat (23119120)
9. Maria Novi (23119121)
10. Pius Bernardus H. Losor (23119122)
1. Tahapan Teknik Kompilasi
Tahapan kompilasi dibagi menjadi 2 bagian besar , yaitu :

 Phase Analysis

 Lexical Analyzer

 Syntax Analyzer

 Semantic Analyzer

 Phase Synthesis

 Intermediate Code Generator

 Code Optimizer

 Code Generator

Fase – fase tersebut digambarkan dalam diagram berikut :

Phase Analysis
1. Lexical Analyzer

Lexical analyzer merupakan tahapan awal yang dilakukan di compiler. Biasa suka disebut
juga sebagai scanner.

Proses utama yang dilakukan dalam Lexical Analyzer adalah : mengubah suatu baris
kalimat input menjadi ‘token’ lalu mengelompokkan ke dalam urutan ( lexemes ) ,
penghilangan whitespace , konversi konstanta numerik menjadi tipe data yang spesifik /
tertentu

Barisan token tersebut merupakan kumpulan string yang memiliki jenis pola tertentu dgn
bentuk <token-name , attribute-value> . Lalu selanjutnya , token tersebut akan dikirimkan ke
tahapan selanjutnya , yaitu Syntax Analysis

2. Syntax Analyzer
Syntax analyzer biasa disebut juga analisis parser karena proses yang dilakukan dalam
tahapan ini adalah hasil dari lexical analysis (token) akan disusun serta dikelompokkan
dalam suatu struktur tertentu yang memiliki definisi secara spesifik.

Dari struktur tersebut , program yang dibangun dari struktur tersebut dapat diidentifikasi ( di
dalamnya terdapat variable-variable yang dibutuhkan seperti statement , expression , dll ).

Tahapan syntax analyzer yaitu :

1. Pengurutan token yg merupakan hasil lexical analysis

2. Melanjutkan dengan memanggil proses selanjutnya , yaitu Semantic Analyzer

3. Semantic Analyzer

Tahapan ini adalah pusat dari tahapan kompilasi karena dari struktur syntaktik dari
proses-proses sebelumnya diproses dan struktur objek executable sudah mulai dibentuk.

Tahapan ini menjadi jembatan antara analysis dan synthesis dari suatu kompilasi.

Hasil akhir dari tahapan ini adalah suatu kode yang executable dalam kompilasi yang
sederhana yang kemudian dimanipulasi dengan berbagai optimization dari translator
sebelum akhirnya benar-benar executable dihasilkan.

Berikut contoh proses Phase Analysis :


Phase Synthesis
4. Intermediate Code Generator

Proses untuk me-generate code berdasarkan parsing tree (sesuai dengan rumus / syntax
yang berhubungan ).

Hasil dari proses ini adalah suatu perintah yang merupakan 3-address-
code ataupun quadruples.

5. Code Optimizer

Proses untuk mengoptimisasi code yang telah mengalami proses-proses sebelum akhirnya
dibentuk suatu code executable.

Dalam tahapan ini , salah satunya yaitu dilakukan proses pengurangan redundancy dalam
code sehingga lebih efficient dan effective.

6. Code Generator

Proses untuk membuat code yang dikenal oleh bahasa mesin yang merupakan suatu
bahasa assembler.

Biasanya , code tersebut terdiri dari suatu perintah dengan address dan akumulator yang
masing-masing terdiri dari 1 komponen.

Berikut contoh dari diagram Phase Synthesis :


2. Analisis Leksikal
Analisis leksikal adalah sebuah ronde yang mendahului parsing sebuah rangkaian
karakter. Beliau menerima masukan serangkaian karakter (seperti dalam dokumen plain-text
atau source code) dan menghasilkan deretan simbol yang masing-masing
dinamakan token; ronde parsing akan semakin gampang dilakukan bila inputnya sudah
berupa token.

Analisis leksikal terdiri dari dua tahap. Tahap pertama adalah pemindaian (scanning);
scanner kebanyakan dihasilkan berdasarkan prinsip Finite State Machine ("mesin dengan
banyak adanya terbatas"). Pada tahap ini, scanner akan membaca input karakter-ke-
karakter, mengubah adanyanya sendiri berdasarkan karakter yang tengah dibaca. Setiap
kondisi final (input dianggap valid) akan dicatat, bersama dengan lokasi input. Pada
kemudiannya scanner akan menemui adanya penolakan, yang tak akan berubah dengan
input karakter apapun. Deteksi rekursi semacam ini akan mengakhiri ronde pemindaian dan
memindahkan adanya scanner ke adanya final terakhir, dan karenanya menyimpan
informasi jenis dan akbar lexeme valid yang terpanjang di dalam input.

Namun lexeme tersebut belum punya nilai semantik apapun; pemberian nilai semantik pada
setiap unit leksikal adalah tugas dari evaluator yang memeriksa semua karakter setiap
lexeme dan memberinya nilai tertentu. Saat sebuah lexeme telah memiliki informasi
mengenai tipe dan nilainya, beliau dapat secara valid disebut sbg token.

Analisis leksikal membuat pekerjaan membuat sebuah parser jadi semakin mudah;
ketimbang mendirikan nama setiap fungsi dan variabel dari karakter-karakter yang
menyusunnya, dengan analisis leksikal parser cukup hanya berurusan dengan sekumpulan
token dan nilai sintaksis masing-masing. Terlepas dari efisiensi pemrograman yang dapat
dicapai dengan penggunaannya, ronde kerja analisis leksikal yang membaca semakin dari
sekali setiap karakter dari input yang diberikan menjadikan penganalisa leksikal sbg sub-
sistem yang paling intensif memperagakan komputasi, terutama bila dipakai dalam
sebuah kompilator.

Anda mungkin juga menyukai