天天看點

《編譯原理實踐與指導教程》——導讀

《編譯原理實踐與指導教程》——導讀

**

前言

本書與機械工業出版社于2009年出版的南京大學趙建華、鄭滔和戴新宇所譯的《編譯原理》課本配合使用。該課本對應的英文版教材是美國哥倫比亞大學、斯坦福大學和avaya實驗室的alfred v. aho、monica s. lam、ravi sethi和jeffrey d. ullman所著的《compilers: principles, techiques and tools》,由于該書封面配有騎士和恐龍的圖案,也被稱為龍書。在下文中,如無特殊說明,課本均指該書(無論是中文翻譯版還是英文原版)。

需要指出的是,雖然本書配合課本使用,但其内容已經包括所有相關的資料,因而它是内在完整的。這意味着,即使教學時使用其他編譯原理相關的教材,本書仍能作為實踐課程的教材,而不會出現所需資料不完整的情況。

設計思想

通常而言,編譯原理實踐課程較難設計,原因是其對應的理論教材以傳授知識為主,離具體實踐有較大的距離。而正常的實踐課程大多會給出一門簡易語言的文法,要求學生實作對應于該語言的編譯器。由于缺乏規範化的指導,時常導緻要麼降低教學要求,允許學生較為随意地實作編譯器;要麼要求過高,緻使學生們無從下手,進而對編譯原理實踐課程産生較大的抵觸心理。針對這些問題,本書面向開設計算機學科的大專院校,提供一門接近實際c/c++的c––語言文法,給出了詳細的實驗步驟和指導過程,引導性地完成一個實際可用的編譯器,并提供了充分的測試樣例來驗證編譯器實作的正确性。

本書共分為四章,分别關注編譯器設計的四個重要階段—詞法分析與文法分析、語義分析、中間代碼生成以及目标代碼生成。每章都給出具體的實驗要求、實驗指導以及測試樣例等,它們共同覆寫了一個實用編譯器的設計與實作的全過程。

本書的實驗設計具有四個特點:一是接近實際,所采用的語言是c––,接近現實中常用的c/c++,這使得所設計的編譯器非常實用,甚至在特定的領域可以直接或經過少量修改後使用;二是配有指導教程,引導性地完成整個編譯器的設計與實作,不會出現面對實驗要求無從下手或不得不求助第三方資料的情況;三是具備驗證幫助,提供大量的測試樣例來驗證編譯器實作的正确性,而無需自行特别設計測試用例;四是難度可調,提供多種實驗執行方案,既可統一難度要求,也可區分必做内容和選做内容,更可實作分組方案,使得每個組隊實作不同的功能組合,激發學生的思考和鍛煉協作能力。

<a href="https://yq.aliyun.com/articles/117892">第1章 詞法分析與文法分析</a>

<a href="https://yq.aliyun.com/articles/117910">1.1 實驗内容</a>

<a href="https://yq.aliyun.com/articles/117935">1.2 實驗指導</a>