Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Analisis leksikal (Scanner)

Presentasi serupa


Presentasi berjudul: "Analisis leksikal (Scanner)"— Transcript presentasi:

1 Analisis leksikal (Scanner)
Istiqomah, S.Kom. [Teknik Kompilasi UNIKOM 2013]

2 Proses Kompilasi Object Code

3 Definisi Bagian dari proses compiler yang berfungsi untuk mengubah deretan karakter-karakter menjadi deretan token-token. Misalnya : Imagine recognizing ‘while’ as ‘w’ ‘h’ ‘i’ ‘l’ ‘e’

4 Tugas Scanner Melakukan pembacaan kode sumber dengan menurut karakter demi karakter Mengenali besaran leksik/token Mentransformasi menjadi sebuah token dan menentukan jenis token nya Mengirimkan token Membuang / mengabaikan blank dan komentar dalam program Menangani kesalahan Menangani tabel simbol

5 Alat Bantu Scanner bekerja berdasarkan mesin FSA yang ada pada bahasa regular Untuk membantu mengkonstruksi scanner dapat menggunakan diagram keadaan

6 Besaran Leksik/Token Besaran leksikal/token meliputi : Identifier
Nilai Konstanta Operator dan Delimiter

7 1. Identifier Token yang bisa berupa keyword atau nama
keywords adalah kata kunci yang sudah didefinisikan oleh suatu bahasa seperti BEGIN, END, IF, ELSE dalam Pascal. Nama dideklarasikan sendiri oleh pemakai,seperti nama sebuah variabel.

8 1. Identifier (lanjutan)
Contoh : VAR nomor : INTEGER; suhu : REAL; VAR, INTEGER dan REAL termasuk token identifier berupa keyword. Nomor dan suhu termasuk token identifier berupa nama

9 2. Nilai Konstanta Adalah suatu konstanta yang terdapat pada program
Berupa konstanta integer, real, Boolean, character, string dan sebagainya Misal : N : = R + 5 * 10 Kata : = kata1 + ‘makan’ A : = 0.333 Selesai : = True Maka 5, 10, ‘makan’, 0.333, TRUE termasuk token nilai konstanta dalam program tersebut

10 3. Operator dan Delimeter
Operator misalnya operator matematika (+, -, *, /) dan operator logika (<, =, >) Delimeter berguna sebagai pemisah/pembatas, misalnya ( ), ;, :, white-space (spasi yang diabaikan di dalam program), enter, end of file.

11 Contoh Ada urutan karakter yang disebut dengan statement :
fahrenheit := 32 + celcius * 1,8, Token yang terbentuk : identifier  Fahrenheit operator  := integer  32 operator penjumlahan  + identifier  celcius operator perkalian  * real  1,8

12 Implementasi Scanner Scanner biasanya diimplementasikan sebagai sebuah prosedur yang dipanggil oleh Parser. Prosedur Scan sederhana: Didefinisikan dulu Procedure GetChar untuk mengambil sebuah karakter dari file input. Procedure GetChar; begin Read (FileInput, Kar); end;

13 Implementasi Scan Sederhana
Dimana : FileInput: text, Kar: character Pada scanner kita akan maju satu-satu per karakter untuk mendapatkan token. Selanjutnya kita akan buat Procedure Scan. Procedure Scan Begin While Kar=‘ ‘ do GetChar {selama ketemu spasi maju terus} repeat

14 Case kar OF ‘<‘: begin GetChar; Case Kar OF ‘=‘: begin token:=t_LE; exit end; ‘>’: begin token:=t_NE; exit end; Else Begin token:=t_L; exit; end; ‘=‘: begin token:=t_E exit;end; ‘>’: begin If Kar=‘=‘ then begin token:=t_GE;exit;end; begin token:=t_G;exit;end; End;

15 ‘{‘: begin Repeat getChar; { maju sampai ketemu penutup komentar} until Kar= ‘ }’ GetChar; {lanjutkan maju, tanpa memperoleh token} end; EOF: exit; {akhir file} Until false {sampai ketemu sebuah token atau akhir file} End;

16 Implementasi Scan Sederhana
Dari procedure scan didapatkan himpunan token : Token={ <,>,=,<=,>=,<} Atau dibaca sebagai token-token: t_L (less), t_G(greater),t_E(equal),t_LE,t_GE,t_NE(not equal)

17 Latihan: Tentukan Token Leksikal yang terbentuk dari potongan program berikut: BEGIN ……………………….. ………………………. LuasSegitiga := alas*tinggi*0.5; Readln; END.

18 Latihan: Buatlah prosedur scan sederhana yang mampu membaca bilangan bulat dan identifier : Bilangan bulat : diawali digit 0..9, bisa diikuti digit Identifier : diawali A..Z, a..z, bisa diikuti A..Z, a..z, 0..9.


Download ppt "Analisis leksikal (Scanner)"

Presentasi serupa


Iklan oleh Google