Professional Documents
Culture Documents
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
dari
{ T.val := E.val }
Teknik Kompilasi
11/ 6 - 8
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
Teknik Kompilasi
11/ 7 - 8
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