(2 revisi perantara oleh satu pengguna lainnya tidak ditampilkan)
Baris 1:
'''Analisis leksikal''' ([[bahasa Inggris]]: ''lexical analysis'') adalah sebuah proses yang mendahului [[parsing]]. Ia menerima masukan serangkaian karakter (seperti dalam dokumen plain-textberbentuk [[teks biasa]] atau source[[kode codesumber]]) dan menghasilkan deretan simbol yang masing-masing dinamakan '''token'''; proses parsingpenguraian akan lebih mudah dilakukan bila inputnya sudah berupa token.
== Tahapan ==
Analisis leksikal terdiri dari dua tahap. Tahap pertama adalah '''pemindaian'''. ('''''scanning'''''); scannerPemindai biasanya dibuat berdasarkan prinsip: Finite State Machine ("mesin dengan jumlah keadaan terbatas"). Pada tahap ini, scanner[[pemindai]] akan membaca inputmasukan karakter-ke-karakter, mengubah keadaannya sendiri berdasarkan karakter yang tengahsedang dibaca. SetiapPencatatan akan dilakukan pada setiap kondisi finalakhir (inputberupa masukan yang dianggap valid) akan dicatat, bersama dengan lokasi inputmasukan. Pada akhirnya, scannerpemindai akan menemui keadaan penolakan, yang tidak akan berubah dengan inputmasukan karakter apapun. Deteksi rekursi semacam ini akan mengakhiri proses pemindaian dan memindahkan keadaan scannerpemindai ke keadaan finalakhir yang terakhir,. danKarena karenanya menyimpanini, informasi jenis dan besar [[leksem]] valid yang terpanjang di dalam inputmasukan akan disimpan.
NamunLeksem lexemeyang tersebuttersimpan belum punyamemiliki nilai semantik apapun;. pemberianPemberian nilai semantik pada setiap unit leksikal adalah tugas dari '''evaluator'''pengevaluasi yang memeriksa semua karakter setiap lexemeleksem dan memberinya nilai tertentu. Saat sebuah lexemeleksem telah memiliki informasi mengenai tipe dan nilainya, ia dapat secara valid disebut sebagai token.
== Manfaat ==
Analisis leksikal membuat pekerjaan parser jadi lebih mudah; daripada membangun nama setiap fungsi dan variabel dari karakter-karakter yang menyusunnya, dengan analisis leksikal, parser cukup hanya berurusan dengan sekumpulan token dan nilai [[sintaksis]] masing-masing. Terlepas dari efisiensi pemrograman yang dapat dicapai dengan penggunaannya, proses kerja analisis leksikal yang membaca lebih dari sekali setiap karakter dari input yang diberikan menjadikan '''penganalisis leksikal''' sebagai sub-sistem yang paling intensif melakukan komputasi, terutama bila digunakan dalam sebuah [[kompilator]].