2008-09-29 51 views
3

它一直在我的大腦中徘徊一段時間。計算機科學文本書方式做文本/ xml /無論解析

我已經對編譯器/ Flex/Byson和東西進行了一些調查,但我從來沒有找到一個很好的參考,詳細談論「解析堆棧」,或如何去實現一個。

有沒有人知道我可以趕上的好參考?

編輯:我感謝所有的編譯器引用,我會得到一些列出的書,但我的主要重點是解析本身,而不是你用它後做什麼。

回答

3

這是對迪瑪的回答,你接受的答案是正確的。雖然解析與自動機理論相關並不是一個錯誤的答案,但我覺得這裏有一些誤解。

  • 首先,有限狀態自動僅能夠識別正則語言(例如正則表達式)。爲了識別上下文無關的語言,你需要下推自動機,這是更強大。有關更多自動機及其與不同類別語言的關係,請參閱http://en.wikipedia.org/wiki/Automata_theory#Classes_of_automata

  • 其次,解析不同於確認。識別一個字符串只會告訴你這個字符串是否是用你的語法生成的語言。解析器的目的是生成一個具體的語法樹,它既困難又通常更有用。

有各種各樣的分析方法,在那裏,所以很難給你一個具體的參考,將告訴你你需要知道......什麼一般情況下,你應該明白top-down parsingbottom-up parsing之間的區別。但這裏是由分析器生成的情況下,僱了幾個常用的技巧,你有興趣的概述:

編輯: 我再次撞到這個問題很抱歉,我剛好橫跨描述regular languages and finite automatacontext-free languages and push-down automata之間的關係,兩個優秀的文章。對於發現這個問題的人可能會感興趣。

+0

的確,你的答案更有用。 – 2011-04-25 21:14:25

0

嘗試amazon

編譯器構造就是一個很好的例子

10

Dragon book!我最近用它編寫了一個用RTF編寫的模板文件的處理語言的編譯器(用PHP編寫)...

0

檢查出「Brinch Hansen on Pascal Compilers」..它是在1985年編寫的,但是我去年使用它編寫了一門關於編譯器的課程(Per Brinch Hansen ofcourse),並發現它非常簡潔並且對編譯器設計很有幫助。

1

解析器基本上是一個有限狀態機,又稱有限自動機。你應該找到一本關於計算理論的書,其中討論了有限自動機以及諸如常規語言,上下文無關語言等。

+0

FSM可以識別常規語言,但是您需要PDA來識別上下文無關的語言。此外,自動機只能*識別*它所沒有的語言中的字符串*將它翻譯成語法樹。 – 2011-04-22 20:34:21