Академический Документы
Профессиональный Документы
Культура Документы
Analisa Leksikal
Analisis leksikal adalah sebuah proses yang mendahului parsing sebuah rangkaian
karakter. Ia menerima masukan serangkaian karakter (seperti dalam dokumen plain-text
atau source code) dan menghasilkan deretan simbol yang masing-masing dinamakan token;
proses parsing akan lebih mudah dilakukan bila inputnya sudah berupa token.
Analisis leksikal terdiri dari dua tahap. Tahap pertama adalah pemindaian (scanning);
scanner biasanya dibuat berdasarkan prinsip Finite State Machine ("mesin dengan jumlah
keadaan terbatas"). Pada tahap ini, scanner akan membaca input karakter-ke-karakter,
mengubah keadaannya sendiri berdasarkan karakter yang tengah dibaca. Setiap kondisi final
(input dianggap valid) akan dicatat, bersama dengan lokasi input. Pada akhirnya scanner
akan menemui keadaan penolakan, yang tidak akan berubah dengan input karakter apapun.
Deteksi rekursi semacam ini akan mengakhiri proses pemindaian dan memindahkan
keadaan scanner ke keadaan final terakhir, dan karenanya menyimpan informasi jenis dan
besar 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, ia dapat secara valid disebut sebagai token.
Analisis leksikal membuat pekerjaan membuat sebuah parser jadi lebih mudah
ketimbang membangun 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, proses kerja analisis leksikal yang membaca lebih dari sekali
setiap karakter dari input yang diberikan menjadikan penganalisa leksikal sebagai sub-
sistem yang paling intensif melakukan komputasi, terutama bila digunakan dalam sebuah
kompilator.
Kompilator adalah sebuah program yang membaca suatu program yang ditulis dalam
suatu bahasa sumber (source language) dan menterjemah-kannya ke dalam suatu bahasa
sasaran (target language).
1
LA 1 Teknik Kompilasi - Leksikal
Kompilator Interpreter
Contoh: C, C++, java, pascal Contoh: Visual Basic
Menerjemahkan keseluruhan Menerjemahkan instruksi per instruksi
Akan dihasilkan executable program Tidak dihasilkan executable program
Akan dihasilkan object program Tidak dihasilkan object program
Proses kompilasi dapat digambarkan melalui sebuah kotak hitam (black box) berikut :
pesan-pesan kesalahan
(error messages)
program sumber
penganalisa leksikal
(scanner)
penganalisa sintaks
(parser)
pembangkit
kode antara
pengoptimal kode
pembangkit kode
bahasa sasaran
2
LA 1 Teknik Kompilasi - Leksikal
Listing Program
Contoh program di bawah ini menggunakan bahasa pemrograman C++. Program ini akan
melakukan penginputan karakter dan akan memunculkan karakter yang telah diinput tadi.
#include<iostream.h>
#include<conio.h>
void main()
{
clrscr();
char nama[40];
cout<<"Masukkan Nama : ";
cin>>nama;
cout<<"Nama anda ";
cout<<nama;
getch();
}
Output Program
Setelah user memasukkan nama, maka tampilan berikutnya adalah sebagai berikut:
Nama yang telah diinput oleh user, akan ditampilkan oleh program.
Analisa Leksikal
3
LA 1 Teknik Kompilasi - Leksikal