首頁  >  文章  >  後端開發  >  建構解析器:遞歸下降還是自上而下?

建構解析器:遞歸下降還是自上而下?

Barbara Streisand
Barbara Streisand原創
2024-11-07 04:45:03403瀏覽

Building a Parser: Recursive Descent or Top-Down?

應對建構解析器的挑戰

問題:

開始解析器建置工作時,我遇到理解困難的方法。考慮範例字串:

{key1 = value1 | key2 = {key3 = value3} | key4 = {key5 = { key6 = value6 }}}

理想的輸出類似於巢狀映射結構:

map[key1] = value1
map[key2] = (map[key3] = value3)
map[key4] = (map[key5] = (map[key6] = value6))

這是一種可行的方法還是我正在探索錯誤的路徑?

答案:

創建解析器是一項多方面的工作

指導:

  1. 遞歸下降解析: 考慮研究這種方法,在諸如http://www.cs.binghamton.edu/~zdu/parsdemo/recintro.html。
  2. 自頂向下解析: 探索這種方法,在http:// 等資源中進行了討論javascript.crockford.com/tdop/tdop.html 和http:// effbot.org/zone/simple-top-down-parsing.htm.
  3. Go 標準庫解析器程式碼: 檢查Go 標準庫中現有的解析器程式碼(http: / /golang.org/src/pkg/go/parser/parser.go)查看實際範例。
  4. Rob Pike 關於詞法分析器寫作的講座: 影片(http://www.youtube.com/watch?v=HxaD_trXwRE) 提供了建構詞法分析器(解析器的一個組成部分)的寶貴見解。
  5. 線上資源:線上提供了大量有關解析的文章和教學。雖然語法可能因所選語言而異,但基本概念仍然可以轉移到 Go。

以上是建構解析器:遞歸下降還是自上而下?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn