Lexical Analysis sering disebut dengan scanner, bertugas sebelum proses syntax Analyzer dan Intermediate Code dilakukan dimana tugas Lexical Analysis ini mendekomposisi program sumber menjadi bagian-bagian kecil.
Tugas-tugas Aturan Lexical atau Lexical Analysis secara detil adalah :
a. mengidentifikasi semua besaran yang membangun suatu bahasa
b. mentransformasikan ke token-token (symbol terminal dari teori bahasa automata)
c. menentukan jenis dari token-token
d. menangani kesalahan
e. menangani tabel symbol
f. scanner di desain untuk mengenali keyword, operator, identifier
contoh :
Besaran Lexical : (tergantung program)
Identifier dapat berupa keyword seperti if, else, begin .. end (pada Pascal) , integer (Pascal), int float (pada C)
Konstanta : besaran yang berupa bilangan bulat (integer), bilangan pecahan(float / real), Boolean (true/false), string, dll
Operator : operator aritmatika (+, -, *, /), operator logika(< = >)
Delimiter : berguna bagi pemisah atau pembatas, seperti kurung buka, kurung tutup, titik, koma, titik dua, titik koma, white_space
White_space : pemisah yang diabaikan oleh program, seperti : enter, spasi, ganti baris dan akhir file
Program sumber merupakan input dari penganalis leksikal ala scanner. Analisis leksikal mempunyai tujuan untuk memisahkan naskah program sumber yang masuk menjadi bagian leksikografis terkecil atau Token seperti konstanta, nama varibel, reserved word dan operator.
Scanner biasanya berinteraksi dengan parser melalui salah satu dari 2 cara berikut. Yang pertama, scanner dapat mengolah program sumber secara terpisah, sebagai satu fasa sebelum Parser mulai bekerja. Kemudian token disimpan dalam sebuah file atau dalam sebuah file besar. Cara kedua melibatkan antara Parser dan Scanner yang saling berinteraksi, scanner dipanggil oleh parser bila token berikut dalam program sumber diperlukan.
Token hasil pekerjaan scanner biasanya disajikan dalam bentuk Bilangan Penyajian internal berupa bilangan bulat (integer) yang unik.
Contoh :
Nama variabel 1 operator perkalian 8
Konstanta 2 operator pembagian 9
Label 3 tanda baca koma 10
Keyword 4 tanda baca titik dua 11
Operator penambahan 5 tanda baca titik koma 12
Operator penugasan 6 dan lain-lain
Operator pengurangan 7
Token tersebut disimpan dalam suatu tabel label serta nama variabel akan dimasukkan kedalam tabel identifier, sedangkan konstanta dimasukkan ke tabel konstanta dan suatu token yang tidak berkaitan dengan label (seperti operator) maka lokasinya adalah 0 (nol).
Lexical Analysis, contoh :
Statement : Fahrenheit := 32 + celcius * 1.8
Maka akan diterjemahkan ke dalam token-token sebagai berikut :
Identifier → Fahrenheit
Operator → :=
Integer → 32
Operator penjumlahan → +
Identifier → celcius
Operator perkalian → *
Real / float → 1.8
Statement : Jumlah A = A + B
GOTO KERJA
Buatlah tabel untuk penyajian Token :
Token Bilangan Penyajian Internal Lokasi Keterangan
Jumlah 3 1 Label
: 11 0 Delimiter
A 1 2 Identifier
= 6 0 Assignment
A 1 2 Identifier
+ 5 0 Operator Penjumlahan
B 1 3 Identifier
GOTO 4 0 Reserved word
KERJA 1 4 Identifier
Tidak ada komentar:
Posting Komentar