Dimungkinkan untuk menguraikan dokumen menggunakan pass tunggal dari mesin negara. Apa manfaatnya memiliki dua lintasan, yaitu. memiliki lexer untuk mengonversi teks menjadi token, dan memiliki pengurai untuk menguji aturan produksi pada token itu? Mengapa tidak memiliki satu pass yang menerapkan aturan produksi langsung ke teks?
15
Jawaban:
Anda tidak harus memisahkan mereka. Orang menggabungkannya menjadi parser tanpa pemindai .
Kerugian utama parser tanpa pemindai tampaknya adalah bahwa tata bahasa yang dihasilkan agak rumit - lebih rumit daripada kombinasi yang sesuai dari ekspresi reguler yang melakukan lexing dan tata bahasa bebas konteks yang melakukan parsing pada token-stream. Secara khusus, tata bahasa untuk parsing tanpa pemindai cenderung mengarah pada ambiguitas. Lebih mudah untuk menghapus ambiguitas bagi tata bahasa yang bekerja pada token-stream.
Manfaat pragmatis menggunakan fase lexing dimuka yang didedikasikan adalah bahwa Anda tidak memasangkan parser berikutnya dengan detail leksikal. Ini berguna selama pengembangan bahasa pemrograman awal, ketika detail leksikal dan sintaksis masih sering berubah.
sumber