應對建構解析器的挑戰
問題:
開始解析器建置工作時,我遇到理解困難的方法。考慮範例字串:
{key1 = value1 | key2 = {key3 = value3} | key4 = {key5 = { key6 = value6 }}}
登入後複製
理想的輸出類似於巢狀映射結構:
map[key1] = value1
map[key2] = (map[key3] = value3)
map[key4] = (map[key5] = (map[key6] = value6))
登入後複製
這是一種可行的方法還是我正在探索錯誤的路徑?
答案:
創建解析器是一項多方面的工作
指導:
-
遞歸下降解析: 考慮研究這種方法,在諸如http://www.cs.binghamton.edu/~zdu/parsdemo/recintro.html。
-
自頂向下解析: 探索這種方法,在http:// 等資源中進行了討論javascript.crockford.com/tdop/tdop.html 和http:// effbot.org/zone/simple-top-down-parsing.htm.
-
Go 標準庫解析器程式碼: 檢查Go 標準庫中現有的解析器程式碼(http: / /golang.org/src/pkg/go/parser/parser.go)查看實際範例。
-
Rob Pike 關於詞法分析器寫作的講座: 影片(http://www.youtube.com/watch?v=HxaD_trXwRE) 提供了建構詞法分析器(解析器的一個組成部分)的寶貴見解。
-
線上資源:線上提供了大量有關解析的文章和教學。雖然語法可能因所選語言而異,但基本概念仍然可以轉移到 Go。
以上是建構解析器:遞歸下降還是自上而下?的詳細內容。更多資訊請關注PHP中文網其他相關文章!