Powered By Blogger

Entri Populer

Selasa, 19 April 2011

Konsep Semantik Bahasa Pemrograman (Semantik Analisis)


  • Dari pembahasan bab-bab terdahulu maka kita ketahui bahwa proses ini merupakan proses kelanjutan dari proses kompilasi sebelumnya, yaitu analisa leksikal (scanning) dan analisa sintaks (parsing)
  • Bagian terakhir dari tahapan analisis adalah analisis semantik
  • Memanfaatkan pohon sintaks yang dihasilkan dari parsing
  • Proses analisa sintaks dan analisa semantik merupakan 2 proses yang sangat erat kaitannya dan sulit untuk dipisahkan
  • Contoh : A = (A + B) * (C + D)
  • Parser hanya akan mengenali simbol-simbol ‘:=’, ‘+’, ‘*’, parser tidak mengetahui makna dari simbol-simbol tersebut
  • Untuk mengenali makna dari simbol-simbol tersebut, maka compiler memanggil routine semantics

Untuk mengetahui makna, maka routine ini akan memeriksa :

  1. apakah variabel yang ada telah didefinisikan sebelumnya
  2. apakah variabel-variabel tersebut tipenya sama
  3. apakah operand yang akan dioperasikan tersebut ada nilainya, dst
  4. menggunakan tabel simbol
  5. pemeriksaan bisa dilakukan pada tabel identifier, tabel display, dan tabel block

Pengecekan yang dilakukan dapat berupa :

  1. Memeriksa penggunaan nama-nama (keberlakuannya)

    1. Duplikasi
Apakah sebuah nama terjadi pendefinisian lebih dari 2 kali. Pengecekan dilakukan pada bagian pengelolaan block
    1. Terdefinisi
Apakah nama yang dipakai pada program sudah terdefinisi atau belum. Pengecekan dilakukan pada semua tempat kecuali block

  1. Memeriksa Tipe
Melakukan pemeriksaan terhadap kesesuaian tipe dalam statement yang ada, misalnya bila terdapat suatu operasi, diperiksa tipe operandnya.
     
Contoh :

·         Ekspresi yang mengikuti If berarti tipenya Boolean, akan diperiksa tipe identifier dan tipe ekspresinya
·         Bila ada operasi antara 2 operand maka tipe operand yang pertama harus dioperasikan dengan operand yang kedua

Analisa semantik sering juga digolongkan dengan Intermediate Code yang akan menghasilkan output Intermediate Code.

Tidak ada komentar:

Posting Komentar