Professional Documents
Culture Documents
ANALISIS SINTESIS
Analisa Analisa
Analisa Intermediate Kode Kode
Leksikal Sintaks
Semantik Code Generator Optimasi
(Scanner) (Parser)
TABEL SIMBOL
Analisa Semantik
Analisis semantic masih termasuk dalam bagian front end (bagian yang
menangani analisis source program)
Contoh :
A := (A+B) * (C+D)
Parser hanya akan mengenali simbol-simbol :=, + dan *, parser tidak mengetahui
makna dari symbol-symbol tersebut.
Oleh karena itu, untuk mengenali simbol-simbol tersebut, maka menggunakan analisis
semantik.
Analisa Semantik
Terdefinisi
Apakah nama yang dipakai pada program sudah terdefinisi atau belum.
Pengecekan dilakukan pada semua tempat kecuali block
Analisa Semantik
Pengecekan yang dilakukan oleh analisis semantik adalah :
2. Memeriksa tipe
Melakukan pemeriksaan terhadap kesesuaian tipe dalam statement statement
yang ada, Misalnya bila terdapat suatu operasi, diperiksa tipe operand nya.
Contohnya bila expresi yang mengikut IF berarti tipenya boolean, akan diperiksa
tipe identifier dan tipe ekspresinya. Bila ada operasi antara dua operand maka tipe
operand pertama harus bisa dioperasikan dengan operand yang kedua
Kode Antara
Kode antara / intermediate code merupakan hasil dari tahapan analisis yang dibuat oleh kompilator pada saat
mentranslasikan program dari bahasa tingkat tinggi.
Semua instruksi kontrol program yang ada diubah menjadi notasi postfix, misalnya :
IF <exp> THEN <stmt1> ELSE <stmt2>
Diubah ke dalam postfix menjadi :
<exp> <label1> BZ <stmt1> <label2> BR <stmt2>
Notasi Postfix
Dalam bentuk Postfix
Contoh :
11 a 19
IF a > b THEN c := d ELSE c := e
12 b 20 25
13 > 21 BR
operator N 1 operand
<operator> <operand> 1. *, D, C
<operand> 2. /, B, E
Contoh : 3. +, (1), (2)
A := D * C + B / E 4. :=, A, (3)
Triple Notation
Bila dibuat kode antara triple :
Contoh lain : 1. >, x, y
3. -, a, b
x := a b
4. :=, x, (3)
ELSE
5. BR, , (8)
x := a + b 6. +, a. b
7. :=, x (6)
Triple Notation
1. *, D, C, T1
<operator> <operan> <operan>
2. /, B, E, T2
<hasil>
3. +, T1, T2, A
Contoh :
A:=D*C+B/E
PEMBANGKITAN KODE
Hasil dari tahapan analisis akan diterima oleh bagian pembangkitan kode (code
generator).
Disini kode antara dari program biasanya ditranslasikan ke bahasa assembly
atau bahasa mesin.
Misalnya: (A+B)*(C+D) dan diterjemahkan kedalam bentuk quadruple:
1. +, A, B, T1
2. + , C, D, T2
3. *, T1, T2, T3
PEMBANGKITAN KODE
Dapat ditranslasikan ke dalam bahasa assembly dengan akumulator tunggal :
LDA A {muat isis A ke akumulator}
ADD B {tambahkan isi ke akumulator dengan B}
STO T1 {simpan isi ke akumulator T1}
LDA C
ADD D
STO T2
LDA T1
MUL T2
STO T3
PEMBANGKITAN KODE
Output dari code generator akan diterima oleh code optimimzer, misalnya untuk kode
assembly diatas dapat dioptimasi menjadi :
LDA A
ADD B
STO T1
LDA C
ADD D
MUL T1
STO T2
Proses perjalanan sebuah instruksi
Terima Kasih