Anda di halaman 1dari 6

Teknik Kompilasi

10 / 1 - 6

SYNTAX DIRECTED TRANSLATION


DEFENISI DAN KONSEP
Mengasosiasikan semantic rule dengan produksi Konsep syntax-directed translation
input string parse tree dependency graph evaluasi semantic rule

Syntax-directed definition sebagai generalisasi CFG dimana setiap symbol grammar diasosiasikan suatu atribut Atribut terdiri 2 bagian : Synthesized attribute inherited attribute

Teknik Kompilasi

10 / 2 - 6

ATRIBUT SINTETIS
Annotated parse tree menunjukkan harga atribut pada setiap node. Attribut simbol disebelah kiri produksi grammar dievaluasi berdasarkan attribut simbol disebelah kanan, contohnya :
Produksi L E E E + T E T T T * F T F F (E) F digit Sematik Rule Print (E.val) E.val := E.val + T.val E.val := T.val T.val := T.val * F.val T.val := F.val F.val := E.val F.val := digit.lexval

Attribut simbol terminal diberikan oleh lexical analyzer

Teknik Kompilasi

10 / 3 - 6

INHERITED ATTRIBUTES
Attribute suatu node ditentukan oleh atrribut dari rootnya, contoh :
Produksi D TL T int T real L L1 , id L id Sematik Rule L.int := T.type T.type := integer T.type := real L1.type := L.in addtype(id.entry, L.in) addtype(id.entry, L.in)

DEPENDENCY GRAPHS
Menunjukkan urutan evaluasi atribut suatu node. contoh atribut sintetis : E E1 + E2 Dependency graph :
E val E1 val + E2 val

Teknik Kompilasi

10 / 4 - 6

Dependency graph untuk atribut inheritansi adalah :


D T real
in

4
type in

in

5 L ,

L 8 , id2

6 id3 2 entry 3
entry

7 10

L Id1

1 entry

Dari graph adalah :

diatas,

urutan

evaluasi

a4 := real; a5 := a4; addtype ( id3.entry, a5 ); a7 := a5; addtype ( id2.entry, a7 ); a9 := a7; addtype ( id1. entry, a9 );

Teknik Kompilasi

10 / 5 - 6

SYNTAX TREE
Merupakan bentuk lebih sederhana parse tree Operator atau keywords tidak akan muncul pada leaves tetapi muncul sebagai parent dari suatu node. Semantic rules merupakan procedure untuk membuat node dan mengisi field dari node.

KONSTRUKSI POHON SINTAKS


Gunakan fungsi dibawah untuk membuat node ekspressi dengan operator binary dan mengembalikan suatu pointer ke node terbaru. mknode(op, left, right) Membuat node operator dengan label op dan 2 field yang berisi pointer terhadap left dan right

Teknik Kompilasi

10 / 6 - 6

mkleaf(id, entry) Membuat suatu node identifier dengan label id dan field yang berisi entry serta suatu pointer ke simbol table entry untuk identifier mkleaf(num, val) Membuat suatu node bilangan dengan label num dan suatu field berisi val Contoh : Suatu ekspresi : a 4 + c Dalam sekuens ini bahwa : p1, p2, , p5 adalah node pointer dan entrya, entryb adalah pointer entry simbol table untuk identifier a dan c, untuk jelasnya :

1) 2) 3) 4) 5)

p1 := mkleaf (id, entrya); p2 := mkleaf (num, 4); p3 := mknode (-, p1, p2); p4 := mkleaf (id, entryc); p5 := mknode (+, p3, p4)

Anda mungkin juga menyukai