2009-08-31 90 views
6

我想爲教育目的編寫一個解析器生成器,並且想知道是否有一些不錯的在線資源或解釋如何編寫解析器的教程。 Jack Crenshaw撰寫的「Let's Build a Compiler」一書。用於編寫解析器生成器的在線資源

我想爲LR(1)語法編寫解析器生成器。

我對生成動作和goto表背後的理論有一個體面的理解,但想要一些資源,這將幫助我實現它。

首選語言是C/C++,Java,儘管其他語言也可以。

謝謝。

回答

8

我同意別人的看法,龍書是LR解析的好背景。

如果你有興趣的遞歸下降解析器,一個極爲有趣的學習體驗是這個網站,它會引導您通過建立一個完全獨立的編譯器系統,該系統可以編譯本身和其他語言:

MetaII Compiler Tutorial

這是全部基於Val Schorre發表的一篇精彩的小型10頁技術論文:META II:面向句法的編譯器編寫語言來自誠實至神的1964年。我從1970年開始學習瞭如何構建編譯器。當你最終了解編譯器如何重新生成自己時,有一個令人興奮的時刻......

我知道我大學時代的網站作者,但與網站無關。

1

不是真的在線,但Dragon Book有相當詳細的LR解析討論。

2

如果你想去蟒蛇路線,我會建議以下。

我發現這兩個是非常有益的,保麥圭爾pyparsing的作者是超級幫助你來的時候遇到問題。 Python中的文本處理(Text Processing in Python)只是一個方便的參考,它可以幫助您在嘗試構建解析器時掌握正確的思路。

我還要指出,OO語言更適合作爲語言解析引擎,因爲它是可擴展的,而多態性是正確的方式(IMHO)。從狀態機的角度來看待問題而不是「在xyz末尾查找分號」將會證明您的解析器最終變得更加健壯。

希望有助於!

0

我發現在學習編寫LR解析器之前學習編寫遞歸下降解析器會更容易。說實話,經過多年的編寫解析器,我從來沒有覺得有必要編寫一個LR解析器。

我最近在CodeProject上編寫了一個名爲Implementing Programming Language Tools in C# 4.0的教程,它描述了遞歸下降解析技術。