Analisis sintaks = analisis rumus kalimat. Dilakukan perkalimat, yang bisa berarti perbaris kode pada sebuah naskah kode.

Kedua:
Analisis kalimat dimplementasikan dalam bentuk pembentukan pohon urai.
Pohon urai dilakukan berdasarkan:
Blok demi blok
Kurung demi kurung
Operasi demi operasi
Ekspresi demi ekspresi.

Blok demi blok, dimulai dengan blok terluar sebagai node awal, lalu urai ke blok2 berikut. Lalu dari setiap blok diurai ekspresi demi ekspresi.

Pada suatu ekspresi, bila dinyatakan sebagai kurung demi kurung, maka dibuat anak pohon baru (yg bisa tetap tersambung induknya atau terpisah) yang menyatakan pohon kurung demi kurung mulai dengan kurung dengan prioritas tertinggi sebagai node paling awal.

Pada suatu eksprsi jika terdapat ekspresi yang mengandung operasi2, maka dilakukan pembentukan anak pohon baru (yg boleh tersambung dengan induk atau terpisah), kemudian pohon dibentuk berdasrkan prioritas operasi. Node awal diisi oleh operasi dengan prioritas tertinggi.

Ketiga:
Pohon urai adalah pohon binari, pohon yang setiap nodenya, jika terpecah maka terpecah maksimal dalam dua pecahan node.

Ketiga:
Selanjutnya, validitas pohon berarti validitas node demi node, daun demi daun, dilakukan dengan memeriksa konstruksi setiap node dengan node turunannya, atau konstruksi mandiri setiap daun, dengan memeriksa konsistensinya terhadap grammar bahasa bersangkutan.

·        Analisis Semantik

Merupakan analisis dengan melakukan pengecekan pada struktur akhir yang telah diperoleh dan diperiksa kesesuaiannya dengan komponen program yang ada.

Penganalisis semantik bekerja dengan memanfaatkan pohon sintaks yang telah dibuat oleh parser. Secara teoritis, proses analisis sintaks dan semantik adalah dua proses yang terpisah, tapi pada prakteknya hal itu sulit dilakukan karena kedua proses tsb sangat erat kaitannya dan sulit untuk dipisahkan.

Untuk mengetahui makna, maka rutin analisa semantik akan memeriksa :

a. Apakah variabel yang ada telah didefenisikan didefenisikan sebelumnya

b. Apakah variabel-variabel tersebut tipenya sama

c. Apakah operan yang akan dioperasikan tersebut ada nilainya dan seterusnya.

Pengecekan yang dilakukan oleh analisa semantik adalah:

Ø Memeriksa pemberlakuan nama-nama yang meliputi Duplikasi (pengecekan apakah sebuah nama terjadi duplikasi) dan Terdefenisi (Pengecekan apakah sebuah nama yang dipakai pada tubuh program sudah terdefenisi atau belum)

Ø Memeriksa tipe disini dilakukan pemeriksaan misal dalam penjumlahan

A+ B = C disini diperiksa apakah A,B dan C bertipe number atau tidak.

Setelah pengecakan dilakukan dan proses analisa semantik akan beraksi maka dibutuhkan tabel simbol. Tabel simbol digunakan untuk pembuatan dan implementasi dari analisa semantik Tabel simbol berfungsi untuk :

v Menyimpan inforamasi tentang :

· Nama variabel dan tipe datanya

· Informasi detail untuk record dan array

· Nama prosedur dan fungsi yang ada

· Jumlah, nama, tipe data dan parameter fungsi/prosedur

· Nama label

· Konstanta dan String

v Membantu memeriksa kebenaran semantic dari source code

v Membantu mempermudah dalam pembuatan intermediate code dan code

generation.

 

·        Analisis Leksikal

Analisis Leksikal merupakan antarmuka antara kode program sumber dan analisis sintaktik (parser). Scanner melakukan pemeriksaan karakter per karakter pada teks masukan, memecah sumber program menjadi bagian-bagian disebut Token.

Analisis Leksikal mengerjakan pengelompokkan urutan-urutan karakter ke dalam komponen pokok: identifier, delimeter, simbol-simbol operator, angka, keyword, noise word, blank, komentar, dan seterusnya menghasilkan suatu Token Leksikal yang akan digunakan pada Analisis Sintaktik.

Implementasi Analisis Leksikal

1. Pengenalan Token

- Scanner harus dapat mengenali token

- Terlebih dahulu dideskripsikan token-token yang harus dikenali

 

2. Pendeskripsian Token

- Menggunakan reguler grammar. Menspesifikasikan aturan-aturan pembangkit token-token dengan kelemahan reguler grammar menspesifikasikan token berbentuk pembangkit, sedang scanner perlu bentuk pengenalan.

-   Menggunakan ekspresi grammar. Menspesifikasikan token-token dengan ekspresi reguler.

-  Model matematis yang dapat memodelkan pengenalan adalah finite-state acceptor (FSA) atau finite automata.

 

3. Implementasi Analisis Leksikal sebagai Finite Automata

Pada pemodelan analisis leksikal sebagai pengenal yang menerapkan finite automata, analisis leksikal tidak cuma hanya melakukan mengatakan YA atau TIDAK. Dengan demikian selain pengenal, maka analisis leksikal juga melakukan aksi-aksi tambahan yang diasosiasikan dengan string yangsedang diolah.

Analisis leksikal dapat dibangun dengan menumpangkan pada konsep pengenal yang berupa finite automata dengan cara menspesifikasikan rutin-rutin (aksi-aksi) tertentu terhadap string yang sedang dikenali.

 

4. Penanganan Kesalahan di Analisis Leksikal

Hanya sedikit kesalahan yang diidentifikasi di analisis leksikal secara mandiri karena analisis leksikal benar-benar merupakan pandangan sangat lokal terhadap program sumber. Bila ditemui situasi dimana analisis leksikal tidak mampu melanjutkan proses karena tidak ada pola token yang cocok, maka terdapat beragam alternatif pemulihan. yaitu:

- "Panic mode" dengan menghapus karakter-karakter berikutnya sampai analisis leksika menemukan token yang terdefinisi bagus

- Menyisipkan karakter yang hilang

- Mengganti karakter yang salah dengan karakter yang benar

- Mentransposisikan 2 karakter yang bersebelahan.

Salah satu cara untuk menemukan kesalahan-kesalahan di program adalah menghitung jumlah transformasi kesalahan minimum yang diperlukan untuk mentransformasikan program yang salah menjadi program yag secara sintaks benar.

 

·        Analisis Sintaksis

Analisis sintak lebih sering disebut penguraian (parsing). Tujuan utama dari analisis sintak adalah memeriksa apakah urutan token-token yang dihasilkan sesuai dengan tata bahasa dari bahasa yang bersangkutan. Misalnya bahasa C mengenal kalimat: jumlah++; yang berarti menaikkan harga variabel jumlah dengan angka satu. Tetapi kalimat di atas akan salah jika dikompilasi dengan kompilator bahasa Pascal, karena tidak sesuai dengan tata bahasa Pascal.

Dalam analisis sintak, tata bahasa yang digunakan untuk mendefinisikan aturan sintak suatu bahasa disebut tata bahasa bebas konteks (Context Free Grammar). Tata bahasa ini memiliki empat komponen penting yaitu himpunan simbol terminal, himpunan non-terminal, himpunan produksi dan simbol awal. Dalam bahasa pemrograman, yang disebut terminal adalah token. Contoh terminal adalah token. Contoh token misalnya kata kunci (keyword) if, while, dan identifier serta bilangan. Sedangkan non-terminal merupakan variabel-variabel sintak yang menyatakan himpunan terminal maupun non-terminal. 

Dalam proses parsing terjadi proses penggantian suatu non terminal dengan sederetan himpunan non terminal dan terminal yang berada dalam sisi kanan produksnya. Proses ini disebut sebagai derivasi. Contohnya non-terminal if_stmt merupakan himpunan terminal if, then, else, dan non-terminal expr dan stmt, yang membentuk aturan produksi : if_stmt ?? if expr then stmt else stmt. Dari semua simbol non-terminal yang digunakan, ada satu simbol yang bertindak sebagai simbol awal, yaitu simbol yang pertama kali diderivasi. Aturan produksi menggambarkan bagaimana kombinasi non-terminal dan terminal yang benar menurut tata bahasa yanbg bersangkutan. Dalam proses penguraian, token-token yang dihasilkan dalam analisis leksikal dibentuk menjadi pohon urai (parse tree).

Komentar

Postingan populer dari blog ini

LATIHAN SOAL

TEKNOLOGI TERBARU KOMUNIKASI DATA

Judul: Analisis Leksikal dalam Rancangan Sistem Informasi Data