出版時間:2007-6 出版社:高等教育出版社 作者:徐國定 頁數(shù):249
內(nèi)容概要
編譯原理是高等學(xué)校計算機專業(yè)的一門專業(yè)基礎(chǔ)課程。本書系統(tǒng)地介紹程序語言編譯程序的構(gòu)造方法,內(nèi)容涉及詞法分析、句法分析、語義分析、目標(biāo)代碼生成、代碼優(yōu)化和出錯處理。為了讓讀者深刻理解編譯程序的工作過程,本書以自動機理論為模型敘述經(jīng)典的詞法分析和句法語義分析的方法。此外,還給出了編譯程序編寫工具的原理和代碼生成的詳細(xì)過程。本書力圖使讀者對編譯程序的工作原理有一個完整的了解,并具有設(shè)計編譯程序及其編寫工具的基本能力。 本書可以作為高等學(xué)校計算機專業(yè)、軟件學(xué)院“編譯原理”課程教材或參考書,也可作為相關(guān)從業(yè)人員的參考讀物。
書籍目錄
第一章 概論 1.1 程序語言和語言處理程序 1.2 編譯程序組成 習(xí)題第二章 詞法分析 2.1 正則表達式 2.2 有限狀態(tài)自動機 2.3 詞法分析的實現(xiàn) 習(xí)題第三章 LL和LR句法分析法 3.1 上下文無關(guān)文法和下推自動機 3.2 自頂向下句法分析 3.3 產(chǎn)生式選擇集合的計算 3.4 自底向上名法分析 習(xí)題第四章 其他句法分析法 4.1 簡單優(yōu)先關(guān)系和簡單優(yōu)先文法 4.2 弱優(yōu)先文法和簡單混合策略優(yōu)先文法 4.3 運算符優(yōu)先文法 習(xí)題第五章 語義處理 5.1 中間代碼表示法 5.2 句法制導(dǎo)翻譯 習(xí)題第六章 符號表管理 6.1 符號表內(nèi)容 6.2 符號表的數(shù)據(jù)結(jié)構(gòu) 6.3 塊結(jié)構(gòu)語言的符號表構(gòu)造 習(xí)題第七章 運行時刻存儲管理第八章 常見程序結(jié)構(gòu)的翻譯第九章 代碼生成和代碼優(yōu)化第十章 出錯恢復(fù)參考文獻
章節(jié)摘錄
版權(quán)頁: 插圖: 對于允許過程可以遞歸調(diào)用的程序語言,編譯程序無法采用靜態(tài)存儲管理方法。由于過程允許遞歸,某一過程A很可能已被調(diào)用了若干次,但只有最近被調(diào)用的一次正處于執(zhí)行狀態(tài),而過程A的其余各次調(diào)用正等待相應(yīng)下次調(diào)用的返回。這樣,前幾次過程A調(diào)用時屬于該過程數(shù)據(jù)區(qū)中的內(nèi)容必須保存起來,以便下一次調(diào)用返回時繼續(xù)使用。對這種語言來說,其存儲管理必須是動態(tài)的。動態(tài)存儲管理的方法是使用運行棧,讓過程的每次執(zhí)行和過程的調(diào)用記錄相對應(yīng)。每調(diào)用一次過程,就把該過程的調(diào)用記錄下推入運行棧,過程最近一次調(diào)用執(zhí)行結(jié)束就把棧頂?shù)恼{(diào)用記錄從運行棧中彈出。圖7.4是當(dāng)主過程調(diào)用過程p、過程p調(diào)用過程q且過程q又第二次調(diào)用過程q時,運行棧分配的示意圖。 將過程的每次執(zhí)行和一個過程調(diào)用記錄相對應(yīng)的辦法解決了過程可以遞歸調(diào)用所引起的問題。過程q執(zhí)行中又調(diào)用過程q,這表明過程q的第二次執(zhí)行必須比過程q的第一次執(zhí)行先結(jié)束。因此,當(dāng)過程q的第二次執(zhí)行結(jié)束時,將q的第二次調(diào)用記錄彈出運行棧,然后恢復(fù)過程q的第一次執(zhí)行。此時,下推棧頂部仍是過程q的第一次調(diào)用記錄。這就保證了過程的執(zhí)行與過程調(diào)用記錄之間的對應(yīng)關(guān)系。 為了使過程執(zhí)行時能訪問本次過程調(diào)用記錄中的數(shù)據(jù)、過程調(diào)用記錄的下推和彈出,設(shè)置運行時刻工作單元SP和TOP。運行時刻工作單元SP始終指向正在執(zhí)行的過程所對應(yīng)的調(diào)用記錄的某一特定單元,而運行時刻工作單元TOP則始終指向當(dāng)時下推??臻e存儲區(qū)的首地址。
圖書封面
評論、評分、閱讀與下載