People Innovation Excellence
 

Menghilangkan Left Recursive (perulangan)

Ketika kita menghilangkan left recursive pada sebuah grammar, perlu diperhatikan bahwa tidak semuanya grammar hanya memiliki jenis left recursive yang terlihat secara langsung (immediate left-recursive). Dibawah ini adalah contoh immediate left recursive dimana dapat dilihat bawah S memanggil dirinya sendiri secara langsung dan terletak disebelah kiri.

S -> Sab | AbA

A -> a | b

Ada juga left recursive yang tidak dapat langsung dikenali, contohnya adalah pada CFG dibawah ini.

S -> Aa | b

A -> Ac | Sd | f

Pada CFG diatas kita melihat adanya left recursive secara langsung di unit produksi A (A -> Ac), namun kita tidak melihat adanya left recursive secara langsung di unit produksi S. Jika diperhatikan lagi unit produksi S dapat diderivasi menjadi Aa (S -> Aa), lalu A dapat diderivasi lagi menjadi Ac |Sd |f. Jika A diderivasi menjadi Sd maka sebenarnya terjadi perulangan (inner-loop) yang mengandung left recursive (karena letak perulangan berada di sisi kiri). Oleh karena itu kita perlu melakukan eliminasi left recursive langsung dan tidak langsung ini secara bertahap.

Cara pertama yang dapat dilakukan adalah dengan menggantikan aturan produksi S pada unit produksi A. Jadi S yang terdapat pada aturan A -> Sd dapat diganti dengan kemungkinan pilihan derivasi untuk S tersebut (S -> Aa | b) sehingga akan menjadi A -> Aad | bd.

S -> Aa | b

A -> Ac | Aad | bd | f

Setelah menggantikan S tersebut maka kita dapat mehilangkan left recursive yang berada pada unit produksi A.

Sehingga CFG yang akan dihasilkan adalah seperti dibawah ini.

S -> Aa | b

A -> bdA’ | fA’

A’ -> cA’ | adA’ | e

References:

Aho, A.V., Ravi, S., & Ullman, J.D. (2007). Compiler : Principle, techniques and tools. 2nd. Addison-Wesley. New York. ISBN : 0321491696


Published at :
Written By
Novita Hanafiah., S.Kom., M.Sc
Lecturer of Computer Science | School of Computer Science

Periksa Browser Anda

Check Your Browser

Situs ini tidak lagi mendukung penggunaan browser dengan teknologi tertinggal.

Apabila Anda melihat pesan ini, berarti Anda masih menggunakan browser Internet Explorer seri 8 / 7 / 6 / ...

Sebagai informasi, browser yang anda gunakan ini tidaklah aman dan tidak dapat menampilkan teknologi CSS terakhir yang dapat membuat sebuah situs tampil lebih baik. Bahkan Microsoft sebagai pembuatnya, telah merekomendasikan agar menggunakan browser yang lebih modern.

Untuk tampilan yang lebih baik, gunakan salah satu browser berikut. Download dan Install, seluruhnya gratis untuk digunakan.

We're Moving Forward.

This Site Is No Longer Supporting Out-of Date Browser.

If you are viewing this message, it means that you are currently using Internet Explorer 8 / 7 / 6 / below to access this site. FYI, it is unsafe and unable to render the latest CSS improvements. Even Microsoft, its creator, wants you to install more modern browser.

Best viewed with one of these browser instead. It is totally free.

  1. Google Chrome
  2. Mozilla Firefox
  3. Opera
  4. Internet Explorer 9
Close