25 April 2013

TUGAS ANALISIS LEKSIKAL


NAMA           : GRIANDINI
NPM             : 13110041
KELAS          : 3 KA 33


ANALISIS LEKSIKAL

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 leksikal terdiri dari dua tahap. Tahap pertama adalah pemindaian (scanning); scanner biasanya dibuat berdasarkan prinsip Finite State Machine ("mesin dengan jumlah keadaan terbatas"). Pada tahap ini, scanner akan membaca input karakter-ke-karakter, mengubah keadaannya sendiri berdasarkan karakter yang tengah dibaca. Setiap kondisi final (input dianggap valid) akan dicatat, bersama dengan lokasi input. Pada akhirnya scanner akan menemui keadaan penolakan, yang tidak akan berubah dengan input karakter apapun. Deteksi rekursi semacam ini akan mengakhiri proses pemindaian dan memindahkan keadaan scanner ke keadaan final terakhir, dan karenanya menyimpan informasi jenis dan besar lexeme valid yang terpanjang di dalam input.
Namun lexeme tersebut belum punya nilai semantik apapun; pemberian nilai semantik pada setiap unit leksikal adalah tugas dari evaluator yang memeriksa semua karakter setiap lexeme dan memberinya nilai tertentu. Saat sebuah lexeme telah memiliki informasi mengenai tipe dan nilainya, ia dapat secara valid disebut sebagai token.
Analisis leksikal membuat pekerjaan membuat sebuah parser jadi lebih mudah; ketimbang 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 penganalisa leksikal sebagai sub-sistem yang paling intensif melakukan komputasi, terutama bila digunakan dalam sebuah kompilator. (Sumber : http://id.wikipedia.org/wiki/Analisis_leksikal )

Dibawah ini adalah contoh program sederhana untuk analisis leksikal menggunakan bahasa pemrograman C++. Program ini akan melakukan penginputan karakter dan akan memunculkan karakter yang telah diinput :

Source Codenya


OUTPUT PROGRAMNYA :
-  Pada bagian #include memberitahuakan preprosesor untuk menyertakan kode dari iostream, Berkas iostream berisi deklarasi untuk berbagai fungsi yang dibutuhkan oleh perangkat lunak, atau class-class yang dibutuhkan.
-Void main() Pernyataan ini mendeklarasikan fungsi utama, bahwa suatu program C++ dapat berisi banyak fungsi, yang harus selalu memiliki sebuah fungsi utama (main function).
-{ : Kurung kurawal buka menandakan awal program
-}  : Kurung kurawal tutup menandakan akhir program
-Cout adalah sebuah object dari  program C++ yang digunakan untuk mencetak string ke output standart, yang biasanya adalah layar computer.
-Fungsi getch() ini hanya digunakan untuk menghentikan suatu proses yang berjalan.


Setelah memasukan nama, npm , kelas, nilai uts dan uas, maka data yang sudah diinput akan ditampilkan oleh program. Dari program tersebut, akan kita baca setiap karakter demi karakter, contohnya :
# ->t_simbol > ->t_delimiter
include ->t_identifier # ->t_simbol
< ->t_delimiter include ->t_identifier
iostream.h ->t_identifier < ->t_delimiter
conio.h ->t_identifier " ->t_simbol
> ->t_delimiter ; ->t_simbol
void ->t_identifier 
main ->t_identifier >> ->t_simbol
( ->t_delimiter nama ->t_var
) ->t_delimiter ; ->t_simbol
{ ->t_delimiter cout ->t_identifier
clrscr ->t_identifier << ->t_simbol
( ->t_delimiter " ->t_simbol
) ->t_delimiter 
  • T_identifier merupakan reserved word dari bahasa pemrograman C++.
  • T_delimiter merupakan simbol yang bisa diabaikan (dibuang) oleh compiler. Contohnya tanda kurung, kurung kurawal, kurung siku.
  • T_simbol merupakan tanda-tanda khusus yang memiliki arti masing-masing.
  • T_var merupakan token untuk variabel.
  • T_string merupakan token untuk string, biasanya kalimat yang berada di dalam tanda kutip atau komentar.
  • T_int merupakan token untuk menyatakan integer. Biasanya ini menyatakan angka.