Dalam parser LR (0), setiap negara terdiri dari koleksi item LR (0), yang merupakan produksi yang dianotasi dengan suatu posisi. Dalam parser LR (1), setiap negara terdiri dari kumpulan item LR (1), yang merupakan produksi yang dianotasi dengan posisi dan karakter lookahead.
Diketahui bahwa diberi status dalam otomat LR (1), himpunan konfigurasi yang dibentuk dengan menjatuhkan tokenead lookup dari setiap item LR (1) menghasilkan himpunan konfigurasi yang sesuai dengan beberapa keadaan dalam otomat LR (0). Dalam pengertian itu, perbedaan utama antara otomat LR (1) dan otomat LR (0) adalah bahwa otomat LR (1) memiliki lebih banyak salinan keadaan dalam otomat LR (0), yang masing-masing dianotasi dengan lookahead informasi. Untuk alasan ini, LR (1) automata untuk CFG yang diberikan biasanya lebih besar dari parser LR (0) yang sesuai untuk CFG tersebut.
Pertanyaan saya adalah seberapa besar otomat LR (1) dapat. Jika ada simbol terminal berbeda dalam alfabet tata bahasa, maka pada prinsipnya kita mungkin perlu mereplikasi setiap negara dalam otomat LR (0) setidaknya satu kali per subset dari simbol terminal berbeda tersebut, yang berpotensi mengarah ke LR (1) ) automaton yang kali lebih besar dari automaton LR (0) yang asli. Mengingat bahwa masing-masing item dalam otomat LR (0) terdiri dari serangkaian item LR (0) yang berbeda, kita mungkin mendapatkan blowup yang lebih besar.
Yang mengatakan, saya sepertinya tidak bisa menemukan cara untuk membangun keluarga tata bahasa yang otomat LR (1) secara signifikan lebih besar daripada otomat LR (0) yang sesuai. Semua yang saya coba telah menyebabkan peningkatan ukuran yang sederhana (biasanya sekitar 2-4x), tetapi saya tidak bisa menemukan pola yang mengarah ke ledakan besar.
Adakah keluarga tata bahasa bebas konteks yang diketahui yang LR (1) automata secara eksponensial lebih besar daripada LR (0) automata yang sesuai? Atau diketahui bahwa dalam kasus terburuk, Anda tidak bisa benar-benar mendapatkan ledakan eksponensial?
Terima kasih!