Rumah > pembangunan bahagian belakang > Golang > Membina Parser: Keturunan Rekursif atau Atas Bawah?

Membina Parser: Keturunan Rekursif atau Atas Bawah?

Barbara Streisand
Lepaskan: 2024-11-07 04:45:03
asal
466 orang telah melayarinya

Building a Parser: Recursive Descent or Top-Down?

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 }}}
Salin selepas log masuk

Output ideal menyerupai struktur peta bersarang:

map[key1] = value1
map[key2] = (map[key3] = value3)
map[key4] = (map[key5] = (map[key6] = value6))
Salin selepas log masuk

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:

  1. Penghuraian Descent Rekursif: Pertimbangkan untuk mengkaji kaedah ini, yang dijelaskan dalam sumber seperti http://www.cs.binghamton.edu/~zdu/parsdemo/recintro.html.
  2. 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.
  3. 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.
  4. 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.
  5. 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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan