ANALISA SEMANTIK

ANALISA SEMANTIK

Analisa 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. 
fungsi analisis semantik adalah untuk menentukan makna dari serangkaian intruksi yang terdapat dalam program sumber. Contoh : W := (W+X)*(Y+Z)
maka penganalisa semantik harus mampu menentukan aksi apa yang akan dilakukan oleh operator-operator tersebut. untuk mengetahui makna, maka rutin analisa semantik akan memeriksa:
  • apakah variabel yang ada telah didefinisikan sebelumnya
  • apakah variabel tersebut tipenya sama
  • apakah operan yang akan dioperasikan tersebut ada nilainya 
pengecekan yang dilakukan oleh semantik yaitu memeriksa duplikasi,terdefinisi, dan memeriksa tipe.

Kode antara
kegunaannya :
  • untuk memperkecil usaha dalam membangun kompilator dari sejumlah bahasa ke sejumlah mesin
  • proses optimasi lebih mudah
  • bisa melihat program internal yang gampang dimengerti 
terdapat dua macam kode antara, yaitu :
  • Notasi Postfix
kita dapat mengubah kontrol program yang ada ke dalam notasi postfix. Misal :
IF<exp>THEN<statment1>ELSE<statement2>
diubah kedalam
<exp><label1>BZ<statement1><label2>BR    <statement2> ↓
                                                                        label1                   label2
keterangan : 
BZ = branch if zero ( zero = salah )  {bercabang/meloncat jika kondisi yang dites salah}
BR = branch                                      {bercabang/meloncat tanpa ada kondisi yang dites}

Arti Notasi Postfix diatas adalah sebagai berikut :
" jika kondisi ekspresi salah, maka intruksi akan meloncat ke label1 dan menjalankan statement2. bila kondisi ekspresi benar, maka statement1 akan dijalankan lalu meloncat ke label2. label1 dan label1 dan label2 sendiri menunjukkan posisi tujuan loncatan, untuk label1 posisinya tepat sebelum statement2, dan label2 setelah statement2"

Contoh Notasi Postfix :
A+B*C
2 + 5 * 3
Keterangan: A ,B ,C ,2 ,3 ,5 adalah Operand.
+,*  adalah Operator.

   Setelah kita mengenal dan mengetahui dengan Operand dan Operator, maka mari kita mengenal juga tingkat/ level yang ada didalam notasi tersebut:
-( ) (Kurung).
- ^ (Pangkat).
- * / (Perkalian / Pembagian).
- + - (Penjumlahan / Pengurangan).

Notasi ada 3 jenis, yaitu Prefix,Infix dan Postfix yang seperti kita ketahui di atas:

1.Prefix adalah notasi yang terbentuk atas operator dengan operand, dimana oprator didepan operand.
   contoh: A + B * C (infix).
   maka notasi prefixnya adalah: +A*BC.

   Pemecahannya:

                A+B*C

        Diketahui ada 3 operand yaitu: A, B, C dan 2 operand yaitu: +, *.proses dimulai dengan melihat dari hirarkhi oprator.Contoh diatas operator yang tertinggi adalah * kemudian +. Tanda * diapit oleh 2 operand yaitu B*C, prefixnya dengan menggabungkan operand dan memindahkan operator ke depan dari operand,sehingga fungsi B*C, notasi prefixnya menjadi *BC.

Sehingga hasil sementara dari notasi prefix adalah:
      A+*BC

Contoh Notasi N-Tuple : 
 Notasi tripel memiliki format sebagai berikut :

            <operator><operan><operan>

contoh, instuksi :
list eksekusi yang berisi urutan eksekusinya.
Contoh 1 :
  A:= B+C*D/E
  F:= C*D

List Instruksinya:
1. *, C, D
2. /, (1), E
3. +, B, (2)
4. :=, A, (3)
5. :=, F, (1)

List Eksekusinya :
1. 1
2. 2
3. 3
4. 4
5. 1
6. 5

Contoh 2 :
   X = ( A + B ) * ( C + D )
1. + , A , B
2. + , C , D
3. * , (1) , (2)
4. = , * , (3) 

Komentar

Postingan populer dari blog ini

Metode Parsing (Teknik Kompilasi)