2011-07-12 142 views
1

我只是一個發燒友程序員。我有龍書,我一直在試圖理解遞歸解析器是如何工作的,但對我來說非常困難。我也一直在研究語言源代碼,但即使是小語言也非常複雜。小語言學習解析器

例如: Lua是大約18K的代碼 行桑達約爲20K 圖標約爲41K 埃德(文本編輯器),只有約2.7K,但似乎我所知道的語言非常不同。

任何人都可以推薦一個小小的語言來學習嗎?它是否有用並不重要。

維基百科是指「微小的編程語言,但沒有鏈接到它。

感謝您的閱讀,帕特里克

回答

0

看看在ANTLR維基發現calculator example。從那裏,你可以試試。其他一些任務,如在泰倫斯帕爾的class site底部解析CSV文件,或練習

+0

好的很好,謝謝馬特 – Patrick

0

我建議像C學習一些語言的BNF:http://www.cs.man.ac.uk/~pjj/bnf/c_syntax.bnf

因爲學習代碼根本無助於理解遞歸解析器。圖BNF是什麼,研究C_syntax bnf,嘗試編寫一些代碼並在紙上解析它 - 我寫了我的編譯器,所以這是我的開始,試圖瞭解它是如何工作的。

+0

謝謝伊戈里斯。我遇到了幾次BNF,但從來沒有理解它的全部目的,我會放棄這一點,謝謝 - Patrick – Patrick

+0

我認爲[鏈接](http://www.garshol.priv.no/download/text/bnf.html )會幫助你很多,因爲也有自上而下的解析器解釋。 –

1

Tiny原來由Jack Crenshaw爲他的基於pascal的教程'Lets build a compiler'開發,現在教程已經從我有的鏈接中移出!我相信有一些人在一些課程中使用過它,或者類似的東西來教授編譯器背後的想法。

這裏有http://www.e-booksdirectory.com/details.php?ebook=1137e

一個版本,它代表它輸出組件針對MC680x0處理器在80年代後期的雅達利ST/comodore的Amiga型家用電腦使用。

所述的代碼是一個介紹,它大部分不是複雜的代碼,它很簡單,只是工作,解析器是一個非常基本的設計。