Menghuraikan C dengan Penghurai LR(1): Satu Usaha Yang Mustahil
Penghuraian LR ialah teknik yang berkuasa untuk menghuraikan tatabahasa tanpa konteks. Walau bagaimanapun, seperti yang dinyatakan oleh Wikipedia, C menimbulkan cabaran penting kepada penghurai LR. Artikel ini menyelidiki ciri khusus C yang menjadikannya tidak sesuai untuk menghuraikan dengan penghurai LR(1).
Peraturan Tatabahasa Ambiguous
Penghurai LR tidak direka untuk mengendalikan peraturan tatabahasa yang tidak jelas. Namun, C mengandungi pernyataan yang terkenal yang memperkenalkan kekaburan:
x * y ;
Pernyataan ini boleh ditafsirkan sebagai sama ada pengisytiharan y sebagai penunjuk untuk menaip x atau pendaraban x dan y, membuang hasilnya.
Terdapat Penghurai LR Pengehadan
Penghurai LR(1) hanya boleh melihat ke hadapan pada bilangan token yang terhad, biasanya satu atau dua. Had ini menghalang mereka daripada menyelesaikan kekaburan dalam kenyataan yang disebutkan di atas. Mereka perlu melihat maklumat yang datang kemudian dalam kod untuk membuat penentuan muktamad.
Pendekatan Alternatif
Penyusun yang berjaya menghuraikan C menggunakan pelbagai strategi untuk mengatasi batasan daripada penghurai LR tulen. Teknik ini termasuk:
Kesimpulan
Kesimpulannya sifat samar-samar peraturan tatabahasa tertentu dalam C menjadikannya mustahil untuk menghuraikan bahasa dengan pasti menggunakan penghurai LR(1). Penyusun yang berjaya menghuraikan C menggunakan teknik alternatif untuk menangani cabaran khusus yang ditimbulkan oleh bahasa tersebut.
Atas ialah kandungan terperinci Mengapa Penghurai LR(1) Tidak Boleh Mengendalikan C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!