Analisa Leksikal ( Scanner)
Mudah – mudahan tulisan ini bisa bermanfaat untuk teman – teman .........
Analisis Leksikal / pembacaan Sekilas (Scanner). Dalam kaitan ini aliran karakter yang membentuk program sumber dibaca dari kiri ke kanan dan dikelompokkan dalam apa yang disebut token yaitu barisan dari karakter yang dalam suatu kesatuan mempunyai suatu arti tersendiri.
Scanner adalah pembacaan huruf demi huruf, perubahan huruf demi huruf yang kemudian menjadi satu kesatuan disebut tokenisasi.
Macam – macam tokenisasi :
1. Identifier
2. Operator
3. Keyword
4. Literal
5. Value / Constanta
Model dasar untuk membentuk suatu Analisis Leksikal adalah Finite-State Automata, 2 aspek penting pembuatan Analisis Leksikal adalah :
1. Menentukan token-token bahasa.
2. Mengenali token-token bahasa dari program sumber.
3.
Tugas Analisa leksikal
Tugas – tugas analisa leksikal antara lain :
a. Melakukan pembacaan kode sumber dengan merunut karakter demi karakter.
b. Mengenali besaran leksik (identifier, keywords, dan konstanta).
c. Mentransformasi menjadi sebuah token dan menentukan jenis tokennya.
d. Mengirimkan token.
e. Membuang atau mengabaikan white-space dan komentar dalam program.
f. Menangani kesalahan.
g. Menangani tabel symbol
Tahap Pelaksanaan Analisa Leksikal
- Pada single one pass
Terjadi interaksi antara scanner dan parser. Scanner dipanggil saat parser memerlukan
token berikutnya. Pendekatan ini lebih baik karena bentuk internal program sumber
yang lengkap tidak perlu dibangun dan disimpan di memori sebelum parsing dimulai.
Tugas – tugas analisa leksikal antara lain :
a. Melakukan pembacaan kode sumber dengan merunut karakter demi karakter.
b. Mengenali besaran leksik (identifier, keywords, dan konstanta).
c. Mentransformasi menjadi sebuah token dan menentukan jenis tokennya.
d. Mengirimkan token.
e. Membuang atau mengabaikan white-space dan komentar dalam program.
f. Menangani kesalahan.
g. Menangani tabel symbol
Tahap Pelaksanaan Analisa Leksikal
- Pada single one pass
Terjadi interaksi antara scanner dan parser. Scanner dipanggil saat parser memerlukan
token berikutnya. Pendekatan ini lebih baik karena bentuk internal program sumber
yang lengkap tidak perlu dibangun dan disimpan di memori sebelum parsing dimulai.
- Pada separate pass / multi pass
Scanner memproses secara terpisah, dilakukan sebelum parsing. Hasil scanner
disimpan dalam file. Dari file tersebut, parsing melakukan kegiatannya. Scanner
mengirim nilai-nilai integer yang mempresentasikan bentuk internal token, bukan nilainilai
string. Keunggulan cara ini adalah ukurannya kecil dan tetap. Parser sangat lebih efisien bekerja dengan nilai integer yang mempresentasikan simbol daripada string
nyata dengan panjang variabel.
Implementasi Analisa Leksikal
Perancangan sebuah bahasa harus memperhatikan tiga aspek berikut :
1. Spesifikasi leksikal, misalnya setiap kata harus tersusun atas huruf mati dan huruf hidup yang disusun bergantian, atau setiap token harus dimulai dengan huruf dan selanjutnya boleh diikuti oleh huruf atau angka.
2. Spesifikasi sintaks, misalnya setiap kalimat mengikuti pola subyek-predikat-obyek atau ekspresi for_do mengikuti pola for-identifier-:=-identifier-to-identifier-do-ekspresi.
3. Aturan-aturan semantik, misalnya kata yang mendahului kata kerja haruslah kata benda yang menggambarkan sesuatu yang hidup dan berkaki, atau operasi perkalian hanya bisa dilakukan antara dua operan dengan tipe yang sama.
Tidak ada komentar:
Posting Komentar