本書主要介紹程序設(shè)計(jì)語言的編譯程序的設(shè)計(jì)技術(shù),主要由編譯程序的基本結(jié)構(gòu)、形式語言和自動(dòng)機(jī)理論的基礎(chǔ)知識(shí)、編譯過程各階段的工作原理和實(shí)現(xiàn)方法三部分構(gòu)成。
編譯原理是計(jì)算機(jī)專業(yè)開設(shè)的一門重要的專業(yè)課程,旨在介紹程序設(shè)計(jì)語言的編譯程序的構(gòu)造過程、原理和方法。從教學(xué)角度來說,編譯原理與程序設(shè)計(jì)基礎(chǔ)、離散數(shù)學(xué)和數(shù)據(jù)結(jié)構(gòu)等課程聯(lián)系緊密,它作為后幾門課程的綜合應(yīng)用,能夠?qū)ο嚓P(guān)課程內(nèi)容的深入理解和鞏固發(fā)揮良好的作用。從技術(shù)角度來說,程序設(shè)計(jì)語言的編譯過程涉及的理論與技術(shù)有利于更好地形成計(jì)算機(jī)軟件到硬件乃至軟硬件協(xié)同的概念,也適用于各種系統(tǒng)軟件、應(yīng)用軟件的設(shè)計(jì)和實(shí)現(xiàn)。從思維角度來說,編譯原理涉及的形式語言理論和自動(dòng)機(jī)理論建立了一種對(duì)問題進(jìn)行抽象、描述和識(shí)別,進(jìn)而從本質(zhì)上認(rèn)識(shí)、分析和解決問題的思維方法,對(duì)工科學(xué)生和技術(shù)人員抽象思維能力的培養(yǎng)有積極的意義。本書適合作為高等院校計(jì)算機(jī)專業(yè)本科生教材,亦可供準(zhǔn)備參加碩士研究生入學(xué)考試的考生及從事計(jì)算機(jī)應(yīng)用和軟件開發(fā)工作的工程技術(shù)人員參考。編譯原理相關(guān)理論的專業(yè)性強(qiáng),內(nèi)容抽象、難理解,因此本書在編寫過程中始終堅(jiān)持以通俗易懂的語言表達(dá)實(shí)現(xiàn)對(duì)學(xué)生抽象思維能力的培養(yǎng)。本書在闡釋編譯各階段涉及的原理、方法和技術(shù)的過程中,對(duì)算法的思想、設(shè)計(jì)過程和具體內(nèi)容均給出了詳細(xì)的說明,引導(dǎo)讀者設(shè)身處地,一步一步地體會(huì)其分析和實(shí)現(xiàn)過程,整個(gè)過程強(qiáng)調(diào)問題的抽象描述和分析思路。在厘清、弄透算法知識(shí)的同時(shí),提升讀者分析問題、解決問題的能力。全書共10章。第1章簡(jiǎn)單介紹編譯的基本概念、過程和編譯程序的生成,并對(duì)形式語言和文法的相關(guān)知識(shí)進(jìn)行說明。從第2章開始,按編譯的過程逐一介紹編譯各階段的任務(wù)、原理和基本實(shí)現(xiàn)技術(shù),包括詞法分析、語法分析、語義分析、中間代碼生成、運(yùn)行時(shí)存儲(chǔ)空間的組織、代碼優(yōu)化、目標(biāo)代碼生成等內(nèi)容。為幫助讀者鞏固知識(shí)點(diǎn),把握重點(diǎn)和難點(diǎn),掌握解題方法,本書在每章最后都給出了精選的習(xí)題。書中的例題和習(xí)題均以C語言為背景,算法也以C語言的格式給出,從而做到了與程序設(shè)計(jì)基礎(chǔ)、數(shù)據(jù)結(jié)構(gòu)等先修課程的較好融合。后續(xù)將出版與本書配套的學(xué)習(xí)輔導(dǎo)和實(shí)驗(yàn)用書,為本書的每一章配套內(nèi)容矩陣、例題分析和練習(xí)測(cè)試。實(shí)驗(yàn)包括獨(dú)立的局部算法實(shí)驗(yàn)和綜合實(shí)驗(yàn)。本書第1~5章由史涯晴獨(dú)自編寫,第6~10章由賀汛、史涯晴共同編寫。由于編者水平有限,書中難免存在不當(dāng)和疏漏之處,敬請(qǐng)廣大讀者批評(píng)指正。編 者2020年5月26日于南京