Você está na página 1de 16

Analisis leksikal

Kelompok 4:
1. Abdul Aziz Kusuma
2. Alfin Zaldi
3. Anggia Garnita Rosandi
Pembahasan

• Letak analisis leksikal pada struktur kompiler


• Pengenalan analisis leksikal
• Scanning berdasarkan MSH
• Tugas analisis leksikal
Struktur Kompiler
Keterangan
Apa itu Analisis Leksikal?

• Masukan bagi sebuah compiler/interpreter adalah program


sumber yang strukturnya berupa deretan dari karakter-
karakter
– or rather unstructured
• Pemrosesan individual karakter yang ketidakefisiennya sangat
tinggi
» Imagine recognizing ‘while’ as ‘w’ ‘h’ ‘i’ ‘l’ ‘e’
• Oleh karenanya, hal pertama yang kita perhatikan adalah
bentuk kode sumbernya
Apa itu Analisis Leksikal?

• A Lexical Analyzer (scanner) mengubah deretan karakter-


karakter menjadi deretan token-token
– i.e. a scanner “tokenizes” the input
• Sebuah token (lexeme or syntactic unit) adalah komponen dasar
leksikal dari program
Analisis Leksikal – Token

• Token adalah level entitas yang paling rendah dalam diagram


sintaks
• Jenis-jenis token antara lain:
– identifiers (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 ‘;’, ‘:’, ‘,’, etc.)
Analisis Leksikal–Tokens

• Consider a simple program and its tokens:


Contoh
Contoh(2)
Fungsi Scanner

• Melakukan pembacaan kode sumber dengan merunut karakter


demi karakter
• Mengenali besaran leksik
• Mentransformasi menjadi sebuah token dan menentukan jenis
tokennya
• Mengirim token
• Membuang blank dan komentar dalam program
• Menangani kesalahan
• Beberapa scanners memasukkan simbol ke dalam tabel simbol
(dibahas kemudian)
Scanning berdasarkan MSH

• 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
Membangun Scanner

• Bagaimana scanner berinteraksi dengan parser?


– parser akan menjadi bagian selanjutnya dari kompilasi
• Perhatikan gambar berikut:
Aksi Scanner [1]

• Karena scanner mengubah dari stata ke stata, maka harus


dilakukan sesuatu dengan karakter-karakter tersebut untuk
mengenali sesuai dengan pembentukan token yang akan
dikembalikan pada tahap parser
• Dalam beberapa kasus, harus menambahkan character
seperti terlihat pada pembentukan token dan
memanfaatkannya (menjadikan karakter masukan berikutnya
menjadi kelihatan)
– E.g. when scanning characters in an identifier
Aksi Scanner [2]

• Dalam kasus lainnya harus menjaga character dan


mengembalikan dalam token lengkap

• Aksi kemungkinan lainnya adalah menghilangkan


karakter agar lebih sederhana
– E.g. karakter pada komentar
TERIMAKASIH