Kuliah 2 : Analisis Leksikal

Slides:



Advertisements
Presentasi serupa
REKURSIF.
Advertisements

Kuliah 03 – Pengenalan Analisa Sintak
Chapter 6 Shift dan Reduksi.
Penguraian Bawah-Atas (Bottom-up Parsing)
Chapter 7 Penguraian LR.
Dasar Komputer & Pemrog 2 A minggu 4
Teori Bahasa dan Automata
Pengenalan Bahasa Pemrograman Pascal
CARA PENANGAN KESALAHAN
Pemrograman Visual (Borland Delphi 7.0)
Pengantar Teknik Kompilasi
PENYELEKSIAN KONDISI (PEMILIHAN)
Procedures, Functions and Methods
Algoritma Dasar Dalam membuat suatu program komputer, menyusun algoritma adalah langkah pertama yang harus dilakukan Dalam membuat algoritma dapat digunakan.
Pohon Urai (parse) dan Derivasi
Pengantar Teknik Kompilasi
Notasi Algoritma.
Teori Bahasa & OTOMATA.
TEORI BAHASA DAN OTOMATA
Syntax Analyzer (Parser) - Dasar
KONSEP dan NOTASI BAHASA
Pertemuan 3 BAHASA REGULAR
BAB V EKSPRESI REGULER 1. Penerapan Ekspresi Reguler
Analisis Leksikal.
Algoritma (Struktur, Tipe Data, Input/Output)
Notasi Algoritma.
Pengantar Teknik Kompilasi
Finite Automata I (FA) Pertemuan 23:
Pengurai Prediktif & Bottom Up Parsing (penguraian bawah atas)
Cara Penanganan Kesalahan
Teori Bahasa dan Automata
MATERI PERKULIAHAN TEKNIK KOMPILASI
MATERI PERKULIAHAN TEKNIK KOMPILASI
2. Mesin Turing (Bagian 2) IF5110 Teori Komputasi Oleh: Rinaldi Munir
KONSEP GRAMMAR & HIRARKI CHOMSKY
Cara Penanganan Kesalahan
Dasar-Dasar Pemrograman
Algoritma dan Struktur Data 1 pertemuan 4
Struktur Program Minimal
MENGENAL LEBIH LANJUT TENTANG
Pengantar Teknik Kompilasi
SEMANTIKS Pertemuan Ke-3.
By : Lisda Juliana Pangaribuan
Analisis leksikal (Scanner)
Pengantar Teknik Kompilasi
Pengantar Teknik Kompilasi
PEMROGRAMAN PASCAL ELEMEN PEMROGRAMAN PASCAL.
ANALISIS LEKSIKAL (Scanner)
Analisis leksikal ( SCANNER )
Cara Penanganan Kesalahan
Tipe data & Variabel 1. Aturan Leksikal. 2. Operator. 3. Statement
Pengantar Teknik Kompilasi
Pengantar Teknik Kompilasi
Tipe data & Variabel 1. Aturan Leksikal. 2. Operator. 3. Statement
ANALISIS LEKSIKAL.
Proses kompilasi COMPILATOR.
ALGORITMA DAN PEMROGAMAN
Konsep dan Notasi Bahasa
CARA PENANGAN KESALAHAN
2. Mesin Turing (Bagian 2) IF5110 Teori Komputasi Oleh: Rinaldi Munir
Pengantar Teknik Kompilasi
Struktur Data.
Pertemuan4.
Struktur Data.
Pengantar Teknik Kompilasi
Pengantar Teknik Kompilasi
Grammar dan Bahasa Automata
CARA PENANGAN KESALAHAN
Cara Penanganan Kesalahan
Pengantar Teknik Kompilasi
Transcript presentasi:

Kuliah 2 : Analisis Leksikal

Peranan membaca karakter input dan menghasilkan output berupa token.Token akan akan dipakai oleh pengurai parser sebagai input untuk analisa sintak membuang komentar, spasi,tab, newline dan karakter lain yang ‘tak berguna’, menghubungkan pesan kesalahan kompilator dengan program sumbernya. Contoh : baris dari program

Alasan pemisahan analisa leksikal dan Analisa penguraian (parsing) rancangan yang lebih sederhana Tugas parser akan rumit jika harus menangani komentar spasi dsb, Efisiensi, pemakaian teknik bufering tertentu untuk membaca input dan membagi bagi menjadi token token dapat mempercepat proses, Portabilitas, representasi simbol khusus atau nonstandard dapat diisolasi pada analisa leksikal

Beberapa istilah Leksim adalah sebarisan karakter program sumber yang sesuai dengan pola suatu token. Contoh :: const pi = 3.1416. Maka pi adalah leksim untuk token identier. Token adalah himpunan karakter yang mempunyai arti khusus, Pola Pattern adalah aturan pembentukan suatu token reserved string artinya string yang sudah ditentukan, dan tidak dapat diubah atau dipakai. Contoh : keywords

Atribut - atribut suatu token Def : Informasi tambahan yang berhubungan dengan suatu token Contoh : nilai atribut dan token untuk statement FORTRAN, E = M*C**2, atribute ditulis dalam bentuk pasangan token dan atribut <id, pointer e entri tabel simbol untuk E> <assign_op, > <id, pointer e entri tabel simbol untuk M> <mult_op, > <id, pointer e entri tabel simbol untuk C> <exp_op, > <num, nilai integer 2>

Kesalahan leksikal Sedikit yang dapat dideteksi, Contoh :: jika fi ditemukan pada program C fi ( a == f (x)) ……….. penganalisa leksikal tidak dapat menentukan bahwa fi salah ejaan. Kesalahan ini akan dideteksi di fase lain yakni parser6

Yang dapat dilakukan jika ada kesalahan pada awal token menghapus karakterkarakter sampai token dapat dibentuk menghapus karakter yang berlebihan menyisipkan karakter yang hilang mengganti karakter dengan karakter yang benar mengubah posisi dua karakter yang berdampingan

Input Buffering Digunakan karena pada kebanyakan bahasa sumber penganalisa leksikalnya kadang kadang perlu mengetahui beberapa karakter tambahan di luar leksim untuk menentukan bahwa leksim yang ditemukan sesuai dengan salah satu pola token. Proses ini sangat memakan waktu.

Teknik Input Buffering: skema input dua buffer Suatu bufer dibagi menjadi 2 bagian masingmasing dapat memuat N karakter. N = satu blok disk (1024, 4096) N karakter input dibaca sekaligus oleh suatu perintah Jika terdapat < N karakter, EOF dibaca sebagai akhir input Dua pointer yang menunjuk buffer dipakai. Pada awalnya dua pointer menunjuk karakter pertama dari suatu leksim yang akan dicari. Karakter antara dua pointer adalah leksim yang akan dicari. Satu pointer forward membaca satu karakter sampai leksim sesuai dengan suatu pola. Jika sudah ditemukan pointer forward menunjuk bagian akhir kanan leksim lalu ke dua pointer menunjuk karakter berikutnya Jika pointer forward akan melewati bagian tengah buffer, sisi kanan buffer diisi. Jika akan melewati akhir buffer, sisi kiri diisi Kelemahan: tidak dapat diproses jika jarak yang harus ditempuh oleh pointer forward melebihi panjang buffer

Algoritma pointer forward if forward pada akhir bufer kiri then baca N karakter ke bufer kanan forward := forward+1 end else if forward pada akhir bufer kanan then baca N karakter ke bufer kiri pindahkan forward ke awal bufer kiri else forward := forward+1 Ada maksimal 2 kali test (akhir bufer kiri dan akhir buffer kanan) setiap kali baca satu karakter. Jadi maksimum ada 4N test.

Skema input dua buffer dengan sentinel Suatu karakter sentinel biasanya eof diletakkan pada akhir kedua sisi buffer. forward := forward +1 if forward not = eof then begin if forward pada akhir sisi kiri then begin baca N karakter ke bufer kanan forward := forward+1 else if forward pada akhir sisi kanan then begin baca N karakter ke bufer kiri pindahkan forward ke awal bufer kiri end else /* eof merupakan akhir input */ hentikan analisa leksikal Ada 2 ( n + 2 ) test

Spesifikasi token: definisi Alfabet / kelas karakter adalah sembarang himpunan simbol, banyaknya hingga. Contoh : {0,1}, ASCII EBCDIC, string terhadap alfabet adalah barisan hingga dari simbol simbol, dibentuk dari alfabet. (Dalam teori bahasa, Panjang string S, |S| adalah banyaknya simbol yang muncul pada S. String kosong ( ) adalah string yang panjangnya nol, Bahasa adalah sembarang himpunan string terhadap alfabet tertentu Penggabungan string x dan y (concatenation) ditulis sebagai xy

Beberapa istilah pada string S prefik dari S adalah string yang diperoleh dengan menghapus nol atau lebih simbol-simbol akhir string S sufik dari S adalah string yang diperoleh dengan menghapus nol atau lebih simbol-simbol awal string S, substring S adalah string yang diperoleh dengan menghapus prefik dan sufik dari S proper prefik , sufik atau substring S adalah sembarang string tak kosong x yang merupakan prefik, sufik atau substring dimana x not= S subbarisan dari S adalah sembarang string yang dibentuk dengan menghapus (tidak harus berdampingan) nol atau lebih simbol dari S

Operasi operasi pada bahasa: union, concatenation, closure

Contoh

Ekspresi beraturan (Regular Expression)

Ref: ASU-Fig 3.12

Ref: ASU-fig 3.13

Ref: ASU – fig 3.14

Any questions?