Powered By Blogger

Entri Populer

Selasa, 19 April 2011

Aturan Lexical atau Lexical Analysis (Scanner)



Berhubungan dengan bahasa, 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