- 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 :
- apakah variabel yang ada telah didefinisikan sebelumnya
- apakah variabel-variabel tersebut tipenya sama
- apakah operand yang akan dioperasikan tersebut ada nilainya, dst
- menggunakan tabel simbol
- pemeriksaan bisa dilakukan pada tabel identifier, tabel display, dan tabel block
Pengecekan yang dilakukan dapat berupa :
- Memeriksa penggunaan nama-nama (keberlakuannya)
- Duplikasi
Apakah sebuah nama terjadi pendefinisian lebih dari 2 kali. Pengecekan dilakukan pada bagian pengelolaan block
- Terdefinisi
Apakah nama yang dipakai pada program sudah terdefinisi atau belum. Pengecekan dilakukan pada semua tempat kecuali block
- 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