#3 Analisa Leksikal
#3 Analisa Leksikal
ANALISA LEKSIKAL
(SCANNER)
Dewi Widyawati, S.Kom., M.Kom
DEFINISI ANALISIS LEKSIKAL (SCANNER)
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 ini melakukan penerjemahan masukan menjadi bentuk
yang lebih berguna untuk tahap- tahap kompilasi berikutnya.
Imagine recognizing “while” as ‘w’ ‘h’ ‘i’ ‘l’ ‘e’ .
STRUKTUR KOMPILER
PENGENALAN TOKEN
Sebuah token (lexeme or syntactic unit) adalah komponen dasar
leksikal dari program. Token adalah himpunan karakter yang
mempunyai arti khusus, dapat berupa :
• Kata kunci (key word), operator, identifier constant, rangkaian
huruf (literal string);
• Simbol baca, misalnya tanda kurung, koma, titik koma, dsb.
Misal: fi(a = = f(x)) dalam bahasa C, maka lexical analyzer
(Analisa Lexical) tidak dapat menjelaskan apa fi tersebut betul
sebagai identifier atau salah eja yang seharusnya adalah if.
Kesalahan ini akan dideteksi di fase lain yakni parser.
JENIS TOKEN
Identifier (e.g. variable & function names, etc.)
Keywords (like while, if, function, etc.)
Operators (like +, -, *, ++, +=, etc.)
Literals (constant values like 27.3, "Hello", etc.)
Punctuation (like kurung-buka, kurung-tutup, titik, koma, titik-
dua, titik-koma).
Delimiter . Berguna sebagai pemisah/ pembatas, pemisah yang
diabaikan oleh program, seperti (white-space). enter, spasi, ganti
baris, akhir file
Contoh Analisa Leksikal
TUGAS ANALISA LEKSIKAL
1. Membaca program sumber karaker demi karakter atau dari
satu state ke state yang lain.
2. Membaca karakter input & menghasilkan token.
3. Membuang komentar, spasi, tab, newline dan karakter lain
yang 'tak berguna'.
4. Menghubungkan pesan kesalahan kompilator dengan
program sumbernya. Contoh: baris dari program.
5. Mengenali identifier dan keyword. Menangani tabel simbol.
– Identifier = variables, arrays, function, token, dll
– Keyword = fixed characters: begin, end, if, dll.
TUGAS ANALISA LEKSIKAL
Konversi program sumber menjadi barisan token mengubah
program sumber yang dipandang sebagai barisan
byte/karakter menjadi token.
Menangani kerumitan sistem masukkan/keluaran karena
analisis leksikal biasanya berhubungan langsung dengan
kode sumber yang diwadahi file, maka analisis leksikal juga
bertindak sebagai benteng untuk komponen-komponen lain
di kompilator dalam mengatasi keanehan-keanehan sistem
masukkan/keluaran sistem operasi dan sistem komputer.
FUNGSI SCANNER
1. Melakukan pembacaan kode sumber dengan merunut karakter
demi karakter
2. Mengenali besaran leksik.
3. Mentransformasi menjadi sebuah token dan menentukan jenis
tokennya.
4. Mengirim token.
5. Membuang blank dan komentar dalam program.
6. Menangani kesalahan.
7. Beberapa scanners memasukkan simbol ke dalam tabel simbol
(dibahas kemudian).
Contoh Analisa Leksikal
Token:
latihan, tugas merupakan identifiers
Package, public, class, static, void,
main, String, args,
System.out.println merupakan
keywords
Hello, World merupakan literals
“{“, “}”, “[“,”]”, “(“, “)”, “;”
merupakan punctuation
Scanning Berdasarkan Finite State Machine
Hampir sebagian besar teknik yang digunakan untuk membangun
scanners menggunakan mesin stata hingga (MSHs)
MSHs dapat dengan mudah digunakan untuk mengenali
kontruksi bahasa (i.e. tokens) yang digambarkan dengan bahasa
regular