Lompat ke konten Lompat ke sidebar Lompat ke footer

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 harus dihitung berdasarkan harga dari symbol yang sudah ada di stack (extra field).

Untuk produksi A | XYZ

Sebelum reduksi dilakukan evaluasi terhadap harga X, Y dan Z. 

L-attribute

  1. Syntax directed definition bersifat L-attribute jika setiap atribut dari produksi A X1, X2, ..., Xj-1 yang terletak disebelah kiri Xj
  2. Inherited attribute A

 Catatan: 

Setiap S - attribute definition bersifat L - attribute, karena batasan (1) dan (2) hanya berlaku untuk inherited attribute.

Contoh:

Syntax directed definition di bawah ini tidak bersifat L - attribute karena inherited attribute Q.i dan simbol grammar Q tergantung pada attribute symbol R yang terletak di sebelah kanannya.

Production   Semantic Rules
A -> L M   L.i:=1(A.i)
    M.i:=m(L.s)
    A.s:=f(M.s)
A -> Q R   R.i:=r(A.i)
    Q.i:=q(R.s)
    A.s:=f(Q.s)

Translation schemes

  • Merupakan context free di mana semantic action ditambahkan pada sisi kanan dari produksi.
  • Semantic action dituliskan di antara tanda { dan }

Contoh:

rest   + term {print (' + ')} rest1

Parse tree dari produksi tersebut:

Parse Tree

Contoh translation schemes yang mengubah notasi infix menjadi notasi postfix.

E TR

R  addop T {print(addop.lexeme)}R1|

T num {print(num.val)}

Parse tree untuk input 9-5+2 dengan menggunakan grammar diatas adalah:

Translation Schemes