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 :
- 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.
Syntax-Directed
Translation
Kode antara (Intermadiate Code) adalah sebuah
representasi yang disiapkan untuk mesin abstrak tertentu. Dua sifat yang harus
dipenuhi oleh kode antara adalah :
- dapat
dihasilkan dengan mudah
- mudah
ditranslasikan menjadi program sasaran (target program)
Representasi kode antara biasanya terbentuk tiga
alamat (three-address code), baik berbentuk quadruples ataupun triples.
Kode antara (intermediate code) dibentuk dari sebuah
kalimat x dalam bahasa context free. Kalimat x ini adalah keluaran dari parser.
Kalimat ini tentu saja dapat dinyatakan dalam representasi pohon parsing (parse
tree).
Syntax-directed translation adalah suatu urutan
proses yang mentranslasikan parse tree menjadi kode antara. Tahap pertama dari
pembentukan kode antara adalah evaluasi atribut setiap token dalam kalimat x. Yang
dapat menjadi atribut setiap token adalah semua informasi yang dapat disimpan
di dalam tabel simbol. Evaluasi dimulai dari parse tree.
Pandang sebuah node n yang ditandai sebuah token x
pada parse tree. Kita tuliskan x.a untuk menyatakan atribut a untuk token x
pada node n tersebut. Nilai x.a pada node n tersebut dievaluasi dengan
menggunakan aturan semantik (semantic rule) untuk atribut a. Aturan semantik
ini ditetapkan untuk setiap produksi dimana x adalah ruas kiri produksi. Sebuah
parse tree yang menyertakan nilai-nilai atribut pada setiap nodenya dinamakan Annonated
parse tree. Kumpulan aturan yang menetapkan aturan-aturan semantik untuk setiap
produksinya dinamakan syntax-directed definition.
Teknik-teknik
Pendeskripsian Semantik Bahasa Pemrograman
a. Operational Semantic
Pendekatan ini mendefinisikan suatu mesin buatan
(Abstract) dengan instruksi-instruksi primitif, tidak perlu realistik, tetapi
cukup sederhana supaya tidak muncul kesalahpahaman. Deskripsi semantik dari
bahasa pemrograman menentukan suatu translasi ke kode.
b.
Denotational Semantic
Pada pendekatan ini, diberikan suatu fungsi yang
memetakan program-program komputer yang ditunjuk ke dalam bentuk nilai-nilai
abstrak secara matematika (angka, nilai, kebenaran, fungsi matematika, dsb).
c. Axiomatic Semantic
Pada pendekatan ini didefinisikan suatu tindakan
program yang dibangun dengan properti logika yang menyimpan status komputer
sebelum dan sesudah eksekusi.
d.
Algebraic Semantic
Pada pendekatan ini dipertimbangkan suatu objek
komputasi yang menjadi syarat-syarat dalam aljabar multi-sorted. Program mengimplementasikan
fungsi yang dapat diwujudkan dengan suatu persamaan diantara syarat-syarat
tersebut.
e. Structured Operational atau Natural Semantic
Seperti dalam pengambilan keputusan secara alamiah
dengan logika. Program diberi suatu arti dari aturan yang diturunkan yang
menggambarkan penilaian gagasan suatu bahasa.
Tidak ada komentar:
Posting Komentar