Mengatasi Cabaran Membina Parser
Soalan:
Memulakan usaha pembinaan parser, saya menghadapi kesukaran untuk memahami pendekatan. Pertimbangkan rentetan sampel:
{key1 = value1 | key2 = {key3 = value3} | key4 = {key5 = { key6 = value6 }}}
Output ideal menyerupai struktur peta bersarang:
map[key1] = value1
map[key2] = (map[key3] = value3)
map[key4] = (map[key5] = (map[key6] = value6))
Adakah ini pendekatan yang berdaya maju atau saya meneroka laluan yang salah?
Jawapan:
Mencipta penghurai ialah usaha pelbagai rupa yang memerlukan respons yang meluas.
Panduan:
-
Penghuraian Descent Rekursif: Pertimbangkan untuk mengkaji kaedah ini, yang dijelaskan dalam sumber seperti http://www.cs.binghamton.edu/~zdu/parsdemo/recintro.html.
-
Penghuraian Atas-Bawah: Terokai pendekatan ini, dibincangkan dalam sumber seperti http://javascript.crockford.com/tdop/tdop.html dan http://effbot.org/zone/simple-top-down-parsing. htm.
-
Kod Penghurai Pustaka Standard: Periksa kod penghurai sedia ada dalam pustaka standard Go (http://golang.org/src/pkg/go/parser/parser.go) untuk contoh praktikal.
-
Kuliah Rob Pike tentang Penulisan Lexer: Video ini (http://www.youtube.com/watch?v=HxaD_trXwRE) memberikan pandangan berharga dalam membina lexer, komponen penting penghurai.
-
Sumber Dalam Talian: Banyak artikel dan tutorial tentang penghuraian tersedia dalam talian. Walaupun sintaks mungkin berbeza bergantung pada bahasa yang dipilih, konsep asas tetap boleh dipindahkan ke Go.
Atas ialah kandungan terperinci Membina Parser: Keturunan Rekursif atau Atas Bawah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kenyataan:Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn