The IELR (1) Algoritma Parsing
The IELR algoritma (1) parsing dikembangkan pada tahun 2008 oleh Joel E. Denny sebagai bagian dari gelar Ph.D. penelitian di bawah pengawasan Brian A. Malloy di Universitas Clemson. Algoritma IELR (1) adalah variasi dari apa yang disebut algoritma "minimal" LR (1) yang dikembangkan oleh David Pager pada tahun 1977 , yang merupakan variasi dari algoritma parsing LR (k) yang ditemukan oleh Donald Knuth pada tahun 1965 . IE in IELR (1) adalah singkatan dari eliminasi ketidakcukupan (lihat bagian terakhir).
Algoritma LR (1)
The LR (1) bagian dari IELR (1) singkatan L TDE ke kanan, R ightmost derivasi dengan 1 lookahead tanda. LR (1) parser juga disebut parser kanonik. Kelas algoritma parsing ini menggunakan strategi parsing bottom-up, shift-mengurangi parsing dengan stack dan tabel transisi status menentukan tindakan selanjutnya yang akan diambil selama parsing.
Secara historis, algoritma LR (1) telah dirugikan oleh kebutuhan memori yang besar untuk tabel transisi mereka. Perbaikan Pager adalah untuk mengembangkan metode menggabungkan keadaan transisi ketika tabel transisi dihasilkan, secara signifikan mengurangi ukuran tabel. Dengan demikian algoritma Pager membuat LR (1) parser kompetitif dengan strategi parsing lainnya sehubungan dengan efisiensi ruang dan waktu. Frasa "minimal LR (1) parser" mengacu pada ukuran minimal tabel transisi yang diperkenalkan oleh algoritma Pager.
Keterbatasan Algoritma Pager
Algoritma LR minimal (1) menghasilkan tabel transisi berdasarkan tata bahasa input tertentu untuk bahasa yang akan diuraikan. Tata bahasa yang berbeda dapat menghasilkan bahasa yang sama. Memang, dimungkinkan untuk tata bahasa non-LR (1) untuk menghasilkan bahasa yang dapat diurai LR (1). Dalam praktiknya, generator parser LR (1) menerima tata bahasa non-LR (1) dengan spesifikasi untuk menyelesaikan konflik antara dua kemungkinan transisi negara ("konflik pengurangan-konflik") untuk mengakomodasi fakta ini. Denny dan Malloy menemukan bahwa algoritma Pager gagal menghasilkan parser yang cukup kuat untuk mem-parsing bahasa LR (1) ketika disediakan tata bahasa non-LR (1) tertentu meskipun tata bahasa non-LR (1) menghasilkan bahasa LR (1).
Denny dan Malloy menunjukkan bahwa batasan ini tidak hanya bersifat akademis dengan menunjukkan bahwa Gawk dan Gpic, yang keduanya banyak digunakan, perangkat lunak dewasa, melakukan tindakan parser yang salah.
Perbaikan IELR (1)
Denny dan Malloy mempelajari sumber kekurangan algoritma Pager dengan membandingkan tabel transisi yang dihasilkan oleh algoritma Pager dengan tabel transisi dari tata bahasa LR (1) yang setara dan mengidentifikasi dua sumber dari apa yang mereka sebut kekurangan yang muncul dalam tabel transisi dari Pager's algoritma tetapi tidak dalam tabel transisi LR (1). Algoritma IELR (1) ( Inadequacy Elimination LR (1)) Denny dan Malloy adalah algoritma yang dirancang untuk menghilangkan kekurangan ini ketika membuat tabel transisi yang ukurannya hampir identik dengan ukuran algoritma Pager.