halo sahabat blogger kali ini saya akan menshare pelajaran yang telah saya pelajari di matakuliah algoritma di kampus saya yang berjudul Sekilas Analisa Leksikal.
Pertama-tama mari kita kenal dahulu apa itu Syntax ??!!.
Syntax merupakan aturan Gramatical/Komposisi suatu program yang mengatur tata cara penulisan huruf,angka,dan karakter lain.
Macam-macam Analisa Syntax :
- Analisa Leksikal (Scanner)
Analisa Leksikal atau Scanner bertugas mengidentifikasi semua besaran yang membangun suatu bahasa pada suatu program sumber.Lalu apa tugas scanner itu?
Tugas Scanner sebagai berikut :
- Membaca kode sumber dengan menurut karakter demi karakter.
- Mengenali besaran resit
- Mentransformasi jadi sebuah token dan menentukan jenis tokennya.
- Mengirimkan token
- Membuang atau mengabaikan blank dan komentar dalam program
- Menangani kesalahan
- Menangani tabel Simbol
Itulah tugas-tugas dari Scanner atau analisa Leksikal.Mungkin jika kita yang menganalisa syntax akan memakan cukup waktu tapi bagi kompilator itu hanya memakan sepersekian detik waw subhanallah haha..
Selanjutnya kita harus mengetahui apa saja yang di scan oleh Scanner,dan sekarang kita akan mempelajari tentang Besaran Leksikal .
Besaran Leksikal :
- Identifier :
a. Keyword
Kata kunci yang sudah didefinisikan oleh suatu bahasa pemrograman.
Contohnya seperti Let,print,if-then,if-else,for,dll
b. Variabel
Nama didefinisikan sendiri oleh pemakai.
Contohnya jika kita mendefinisikan variabel terserah kita seperti A,B,variabel1,variabel2,dll
- Nilai Konstanta
Nilai Konstanta bisa bertipe Integer,Real,Boolean,Character,String dsb..
- Operator
Opertor bisa berupa operator Aritmatika,Logika,dll
Contoh : Aritmatika : +,-,/,*,%
Logika : && (AND),| (OR),<,>,=,dll
- Delimeter/Pembatas
Contohnya seperti (,),titik(.),koma(,),;,:,<spasi>,dll
Nah kita kan sudah tau besaran-besaran leksikal mari kita ke Contoh soal/kasusnya
Buat Analisa Leksikal untuk potongan program (pascal)berikut :
var A:Integer;
begin
A := A+2;
end.
//lalu kita akan membuat analisanya dalam bentuk tabel :
Token | Besaran Leksikal | Lokasi |
var | Keyword | 0 |
A | Variabel | 1 |
: | Delimeter | 0 |
Integer | Keyword | 0 |
; | Delimeter | 0 |
Begin | Keyword | 0 |
A | Variabel | 1 |
:= | operator logika | 0 |
A | Variabel | 1 |
+ | Operator aritmatika | 0 |
2 | Konstanta Integer | 2 |
; | Delimeter | 0 |
end | keyword | 0 |
. | delimeter | 0 |
Jadi maksud dari tabel tersebut adalah semua token yang ada di potongan program diatas di scan semua mulai dari var sampai titik(.).
Sedangkan lokasi adalah lokasi atau nomor memori yang ditempati.Pada tabel diatas lokasi hanya di tempati oleh "Variabel dan Konstanta".Apabila variabel nya masih sama maka memorinya tetap sama,dalam tabel diatas var A di scan 3x namun lokasinya tetap 1, lalu dilanjutkan konstanta 2.
iya sama-sama,semoga bisa membantu
BalasHapusClick to see the code!
To insert emoticon you must added at least one space before the code.