You are on page 1of 4

Pengantar Tekom- Dini Triasanti

ANALISIS SEMANTIK Analisis Semantik adalah proses setelah melewati proses scanning dan parsing. Pada tahap ini dilakukan pengecekan pada struktur akhir yang telah diperoleh dan diperiksa kesesuaiannya dengan komponen program yang ada. Secara global, fungsi dari semantic analyzer adalah untuk menentukan makna dari serangkaian instruksi yang terdapat dalam program sumber. Contoh : A := (A + B)*(C + D) maka penganalisis semantik harus mampu menentukan aksi apa yang akan dilakukan oleh operatoroperator tersebut. Dalam sebuah proses kompilasi, andaikata parser men umpai ekspresi seperti diatas, parser hanya akan mengenali simbol-simbol !:"! , !#! , dan !$!. Parser tidak tahu makna apa yang tersimpan dibalik simbol simbol tersebut. %ntuk mengenalinya, kompiler akan memanggil rutin semantik yang akan memeriksa :

Apakah &ariabel-&ariabel yang ada telah didefinisikan sebelumnya' Apakah &ariabel-&ariabel tersebut tipenya sama' Apakah operand yang akan dioperasikan tersebut ada nilainya', dan seterusnya. (ungsi ini terkait dengan tabel simbol. Pengecekan yang dilakukan oleh analisis semantik

adalah sebagai berikut : a) *emeriksa keberlakuan nama-nama meliputi pemeriksaan berikut.

Duplikasi : pada tahap ini dilakukan pengecekan apakah sebuah nama ter adi pendefinisian lebih dari dua kali. Pengecekan dilakukan pada bagian pengelola blok. +erdefinisi : *elakukan pengecekan apakah sebuah nama yang dipakai pada tubuh program sudah terdefinisi atau belum. Pengecekan dilakukan pada semua tempat kecuali blok.

b) *emeriksa tipe. *elakukan pemeriksaan terhadap kesesuaian tipe dalam statementstatement yang ada. *isalkan bila terdapat suatu operasi, diperiksa tipe operand. Contohnya bila ekspresi yang mengikuti instruksi ,( berarti tipenya boolean, akan diperiksa tipe identifier dan tipe ekspresi. -ila ada operasi antara dua operand, maka tipe operand pertama harus bisa dioperasikan dengan operand kedua. Analisa semantik sering berikutnya. KODE ANTARA /ode antara0Intermediate code merupakan hasil dari tahapan analisis, yang dibuat oleh kompilator pada saat mentranslasikan program dari bahasa tingkat tinggi. /egunaan dari kode 1 uga digabungkan pada pembangkitan kode antara yang menghasilkan .utput intermediate code, yang nantinya akan digunakan pada proses kompilasi

Pengantar Tekom- Dini Triasanti

antara sebagai berikut:

untuk memperkecil usaha dalam membangun kompilator dari se umlah bahasa ke se umlah mesin. Dengan adanya kode antara yang lebih machine independent maka kode antara yang dihasilkan dapat digunakan lagi pada mesin lainnya. Proses optimasi masih lebih mudah. -eberapa strategi optimisasi lebih mudah dilakukan pada kode antara daripada pada program sumber atau pada kode assembly dan kode mesin. -isa melihat program internal yang mudah dimengerti. /ode antara ini akan lebih mudah dipahami dari pada kode assembly atau kode mesin.

+erdapat dua macam kode antara, yaitu 2otasi Postfi3 dan 2-+uple NOTASI POSTFIX Sehari-hari kita biasa menggunakan operasi dalam notasi infi3 4letak operator di tengah). Pada notasi Postfi3 operator diletakkan paling akhir maka disebut uga dengan notasi Sufi3 atau 5e&erse Polish. Sintaks notasi Postfi3 : <operan><operan><operator> *isalkan ekspresi : (a + b)*(c + d) kalau kita nyatakan dalam postfi3 : ab + cd + * /ita dapat mengubah instruksi kontrol program yang ada ke dalam notasi Postfi3. *isal : IF<exp>THEN<st t!>E"#E<st t$> diubah ke dalam Postfi3 <exp><%abe%!>B&<st t!><%abe%$>B' <st t$> label6

label1 /eterangan : -7 -5 " branch if 8ero 48ero " salah) " branch

9bercabang0meloncat ika kondisi yang dites salah: 9bercabang0meloncat tanpa ada kondisi yang dites:

Arti dari notasi Postfi3 di atas adalah sebagai berikut. ;<ika kondisi ekspresi salah, maka instruksi akan meloncat ke =abel1dan men alankan statement6. -ila kondisi ekspresi benar, maka statement1 akan di alankan lalu meloncat ke =abel6. =abel1 dan =abel1 dan =abel6 sendiri menun ukan posisi tu uan loncatan, untuk =abel1 posisinya tepat sebelum statement6, dan =abel6 setelah statement6> Dalam implementasi ke kode antara, label bisa berupa nomor baris instruksi. %ntuk lebih 6

Pengantar Tekom- Dini Triasanti

elasnya bisa dilihat contoh berikut. IF E"#E c := e -ila diubah ke salam Postfi3 !!( !$( !)( !*( !0( !1( !2( !3( !4( $5( $!( $$( $)( $*( $0( 2otasi Postfi3 di atas bisa dipahami sebagai berikut.

a > b c := d

THEN

a b > $$ B& c d := $0 B' c e := + en,n-,. %abe%$/ + en,n-,. %abe%!/

-ila ekspresi 4a ? b) salah, maka loncat ke instruksi no.66 -ila ekspresi 4a ? b) benar, tidak ter adi loncatan, instruksi berlan ut ke 1@ sampai 1A, lalu loncat ke 6B.

Contoh lain : 6HI"E<exp>D7<stat> diubah ke postfi3 <exp><%abe%!> B&<stat><%abe%$> B'

label1 Contoh, instruksi a := ! 6HI"E a<0 D7 a := a + !

label6

Pengantar Tekom- Dini Triasanti

diubah ke notasi postfi3 men adi sebagai berikut : !5( !!( !$( !)( !*( !0( !1( !2( !3( !4( $5( $!( $$( $)( $*( $0( !) B' + en,n-,. %abe%$/ a ! := a 0 < $1 B& a a ! + := + en,n-,. %abe%!/

Analisis =e3ical Source Program 3:"y#3 +oken E token ,d1:",d6#,d1 +abel Simbol

Analisis Sintaksis Hassign? ,d1 :" ,d6 Code generator dan Analisis Semantik He3p? # ,d1

=DA F ADD G S+. F

You might also like