2011-06-02 82 views
50

我想學習如何編寫詞法分析器。我的大學課程有一個任務,我們必須寫一個解析器(和一個詞法分析器),但這是給我們的,沒有任何指令或反饋(超出標記),所以我沒有真正從中學到很多東西。我在哪裏可以學習編寫詞法分析器的基礎知識?

尋找這個主題後,我只能找到相當先進的寫作,重點放在我覺得領先於我所在的幾個領域的領域。我想討論一下爲一個非常簡單的語言編寫詞法分析器的基礎知識,我可以用它作爲研究令人費解的更復雜的語言的基礎。

在這個階段,我並不是真正對最佳實踐或優化技術感興趣,而是傾向於關注基本要素。有什麼好的資源讓我開始?

回答

42

基本上有兩種主要的方法來寫一個詞法分析器:

  1. 創建手寫一個在這種情況下,我建議this small tutorial
  2. 使用一些詞法生成器工具,如lex。在這種情況下,我建議閱讀教程選擇特定的工具。

另外我想從LLVM文檔推薦Kaleidoscope tutorial。它貫穿於一種簡單的語言的實現,特別是演示如何編寫一個小的詞法分析器。本教程有一個C++和Objective Caml版本。

關於這個問題的經典教科書是Compilers: Principles, Techniques, and Tools也被稱爲龍書。然而,這可能屬於「相當先進的寫作」範疇。

+2

萬花筒教程是真正爲我解答這個問題的部分。 – 2015-07-12 19:50:34