News and Announcements

Tuesday, 23 March 2021

Analisis Leksikal

 Analisis leksikal atau scanner bertugas mengidentifikasi semua besaran pembangun bahasa (leksikal) yang ada pada kode sumber (source code).

Scanner menerima masukan kode sumber berupa serangkaian karakter kemudian memilah-milahnya ke dalam satuan leksikal, yaitu token.

Token-token ini akan menjadi masukan bagi analisis selanjutnya yaitu analisis sintaksis.

Dari fungsi scanner secara umum seperti telah disebutkan di atas, maka tugas scanner secara rinci adalah:

1. membaca serangkaian karakter dari kode sumber

2. mengenalinya ke dalam satuan leksikal

3. mengubahnya menjadi token dan menentukan jenis tokennya.

4. mengirimkan token ke proses analisis selanjutnya, yaitu analisis sintaksis

5. mengabaikan karakter white space (spasi, enter, ganti baris, penanda akhir file) dan komentar (remark) apabila ada di dalam kode sumber

6. menangani kesalahan

7. menangani tabel simbol

Scanner bekerja berdasarkan prinsip mesin finite state automata (FSA).

Diagram keadaan dapat digunakan untuk membantu mengkonstruksi scanner.


Besaran pembangun bahasa (leksikal) meliputi:

1. Identifier

Identifier atau pengenal dapat berupa:

a. kata tercadang atau kata kunci (reserve word) yang telah didefinisikan oleh bahasa pemrograman

b. kata yang dideklarasikan sendiri oleh pemakai (si pembuat program) disebut dengan variabel.

Contoh (dalam bahasa Pascal)

var

nama : string

alamat : string

jumlah_anak : byte

nominal_tabungan : real

begin

clrscr;

end.

Dari contoh di atas, maka identifier yang dideklarasikan sendiri oleh pemakai (variabel) adalah: nama, alamat, jumlah_anak, dan nominal_tabungan.

Sedangkan identifier kata tercadang (reserve word) adalah: var, string, byte, real, begin, clrscr, dan end. Selain contoh yang disebutkan di atas, masih banyak kata tercadang yang lainnya.

Untuk mendeklarasikan identifier oleh pemakai setiap bahasa pemrograman memiliki aturan yang berbeda-beda, demikian juga dengan identifier kata tercadang memiliki nama dan arti yang berbeda untuk setiap bahasa pemrograman.

Contoh

begin dan end

di bahasa Pascal  kata tercadang

di bahasa C  boleh digunakan untuk nama variabel

{ dan }

di bahasa Pascal  ‘kata’ lebih tepatnya delimiter atau pembatas untuk memberikan komentar pada kode sumber.

di bahasa C  delimiter untuk mengawali dan mengakhiri sebuah blok program


2. Nilai konstanta

Nilai konstanta disini dapat berupa: integer, real, boolean, character, string, dan sebagainya. Melalui contoh berikut ini, bedakan antara nilai (atau isi) dengan variabel yang digunakan untuk menyimpannya.

Contoh (dalam bahasa Pascal)

hitung_luas := panjang * lebar;

x := 1000;

ulang := false;

luas_lingkaran := 3.14 * jejari * jejari;

nama:= budi hartono;

Dari contoh di atas, maka: 1000, false, 3.14, ’budi hartono’ termasuk besaran leksikal berupa nilai konstanta. Sedangkan hirung_luas, panjang, lebar, x, ulang, luas_lingkaran, jejari, dan nama termasuk besaran leksikal identifier variabel.


3. operator dan delimineter

Operator aritmatika ( +, -, *, / )

Operator logika (<, =, >, <=, >=, !=, <>)

Delimiter berguna sebagai pemisah atau pembatas, contoh:

Karakter sebagai berikut ( ) { } ; . , :

Karakter white space, antara lain:

karakter spasi kode ASCII 32

karakter enter (carriage return) kode ASCII 13

karakter ganti baris (line feed)

karakter penanda akhir file (end of file)

No comments:

Post a Comment

About

Social Links