You are on page 1of 8

Teknik Kompilasi

11/ 1 - 8

BOTTOM-UP EVALUATION
Synthesized attribute dievaluasi dengan metode bottom-up parsing. Harga dari synthesized attribute disimpan dalam stack ( extra fields ) Pada saat reduksi : Harga yang baru dihitung berdasarkan harga dari symbol yang sudah ada di stack Untuk produksi A XYZ : Sebelum reduksi dilakukan evaluasi terhadap harga X, Y , dan Z.

L-ATTRIBUTE
Syntax directed definition adalah bersifat L-attribute jika setiap attribute dari produksi AX1X2......Xn adalah synthesized atau inherited attribute dari Xj yang tergantung hanya pada :

Teknik Kompilasi

11/ 2 - 8

1. Attribute dari simbol X1,X2,...Xj1 yang terletak disebelah kiri XJ 2. Atribut Inherited dari A
Contoh : S-attribute definition bersifat L-attribute. Syntax directed definition berikut tidak bersifat L-attribute, karena atribut simbol Q tergantung pada atribut simbol R yang terletak disebelah kanannya TRANSLATION SCHEMES Merupakan Context Free Grammar dimana atribut tergabung dengan simbol-simbol grammar dan semantic action pada sisi kanan dari produksi Semantic action dituliskan diantara braces ( { } )

Teknik Kompilasi

11/ 3 - 8

Contoh : rest + term { print (+) } rest1 Parse tree dari produksi tersebut :
rest + term { print (+) } rest1

Contoh translation schemes yang merubah notasi infix menjadi notasi postfix berikut :
E TR R addop T { print (addop.lexeme) } R1 T num {print (num.val)}

Teknik Kompilasi

11/ 4 - 8

TOP-DOWN TRANSLATION
Eliminasi left recursion untuk mentransformasi translation schemes dengan attributes sintetis. Translation schemes dengan grammar left recursive sebagai berikut :
G: E E1 + T E E1 T ET T (E) T num { E.val := E1.val + T.val} { E.val := E1.val - T.val} { E.val := T.val} { T.val := E.val} { T.val := num.val}

Bila input suatu ekspresi : 9-5+2 maka translation schemes adalah : 95-2+
Input 9 5 2 + Grammar Tnum Tnum EE1+T Tnum EE1+T Translation Scheme Transformasi R1.i: = T.val = 9 R2.i := T.val = 5 R.i = R1.i R2.i = 4 R.s = R.i R1.i: = T.val = 2 R.i = R.i R1.i = 6 R.s = R.i

Teknik Kompilasi

11/ 5 - 8

Secara lengkap transformasi grammar diatas menjadi :


ET R R+ T R RT R R T( E ) { R.i := T.val } { E.val := T.val } { R1.i := R.i + T.val } { R.s := R1.s } { R1.i := R.i - T.val } { R.s := R1.s } { R.s := R.i }

dari

{ T.val := E.val }

T num { T.val := E.val }

Teknik Kompilasi

11/ 6 - 8

Urutan evaluasi untuk ekspresi diatas adalah :


E

T .v a l = 9

R .i = 9

n u m .v a l = 9

- T .v a l = 5

R .i = 4

n u m .v a l = 5

+ T .v a l = 2

R .i = 6

n u m .v a l = 2

Mengubah syntax directed definition menjadi translation scheme :


Production E E1 + T E E1 - T ET T (E) T id T num Semantic Rules E.nptr := mknode (+,E1.nptr,T.nptr) E.nptr := mknode (-,E1.nptr,T.nptr) E.nptr := T.nptr T.nptr := E.nptr T.nptr := mkleaf (id, id.entry) T.nptr := mkleaf (num, num.val)

Teknik Kompilasi

11/ 7 - 8

Translation scheme untuk symbol E :


EE1 + T { E.nptr := mknode ( +, E1. nptr, T.nptr )} EE1 - T { E .nptr := mknode ( - E1.nptr, T.nptr )} ET { E.nptr := T.nptr }

Transformasi Translation scheme untuk mengkonstruksi pohon sintaks menjadi : ET R R+ T R1 RT R1 R T( E ) T id T num { R.i := T.nptr } { E.nptr:= R.s } { R1.i := mknode (+,R.i, T.nptr)} { R.s := R1.s} { R1.i := mknode (-,R.i, T.nptr)} { R.s := R1.s} { R.s := R.i } { T.nptr := E.nptr} { T.nptr := mkleaf (id, id.entry) } {T.nptr := mkleaf (num, num.val) }

Teknik Kompilasi

11/ 8 - 8

Proses pembentukan syntax tree dari translation scheme tersebut untuk input a-4+c
E T id n p tr R T num n p tr i + R T id + id to e n tr y fo r c n p tr i R s

id to e n try fo r a

num

You might also like