出版時(shí)間:2009-1 出版社:電子工業(yè)出版社 作者:王曉斌,陳文宇 著 頁(yè)數(shù):324
Tag標(biāo)簽:無(wú)
前言
由于我的年事已高,本次改版由跟隨我二十余年、從事程序設(shè)計(jì)語(yǔ)言和編譯教學(xué)、科研的王曉斌副教授和陳文宇副教授執(zhí)筆。他們能很好地繼承我的風(fēng)格,深入淺出地分析程序設(shè)計(jì)語(yǔ)言的結(jié)構(gòu)、編譯的基本技術(shù)。他們有豐富的教學(xué)經(jīng)驗(yàn),在科研工作中曾實(shí)現(xiàn)過(guò)幾個(gè)語(yǔ)言的編譯系統(tǒng);他們年富力強(qiáng),對(duì)近年來(lái)語(yǔ)言的發(fā)展有更多、更深刻的理解。這些都是他們寫(xiě)好本教材的基本保證。? 本書(shū)是一本適合大多數(shù)學(xué)校計(jì)算機(jī)專業(yè)的廣口徑教材,按照CC2001和CCC2002教程改寫(xiě),覆蓋了編程語(yǔ)言(PL)模塊的全部?jī)?nèi)容。? 在改寫(xiě)中,力求簡(jiǎn)明、通俗,注意可讀性。本次改版將第二版中的附錄“Java語(yǔ)言概述”替換為“形式語(yǔ)言與自動(dòng)機(jī)簡(jiǎn)介”,Java語(yǔ)言部分內(nèi)容插入到書(shū)中的相關(guān)章節(jié)。在語(yǔ)義分析部分,納入了數(shù)組的內(nèi)容;在優(yōu)化部分,增加了并行優(yōu)化。? 作為計(jì)算機(jī)工作者,必須要與計(jì)算機(jī)進(jìn)行交流、通信,所使用的工具是程序設(shè)計(jì)語(yǔ)言,用來(lái)告訴計(jì)算機(jī)“做什么”和“怎么做”。而程序設(shè)計(jì)語(yǔ)言數(shù)以千計(jì),千姿百態(tài),到底在大學(xué)中學(xué)習(xí)哪些語(yǔ)言才合適?我們的觀點(diǎn)是,學(xué)會(huì)一兩種語(yǔ)言的程序設(shè)計(jì),更重要的是在此基礎(chǔ)上了解語(yǔ)言的共性,這樣,就具有鑒賞、評(píng)價(jià)、選擇、學(xué)習(xí)和設(shè)計(jì)程序語(yǔ)言的能力。本書(shū)的上篇就是為達(dá)到上述目的編寫(xiě)的。以抽象的觀點(diǎn),將程序設(shè)計(jì)語(yǔ)言的共性抽象出來(lái),然后用相應(yīng)的語(yǔ)言去說(shuō)明這些共性。? 隨著計(jì)算機(jī)技術(shù)的發(fā)展,有越來(lái)越多的人認(rèn)為,編譯程序的設(shè)計(jì)和實(shí)現(xiàn)是專家的工作領(lǐng)域,并非每個(gè)計(jì)算機(jī)專業(yè)的學(xué)生都需要具有設(shè)計(jì)和實(shí)現(xiàn)編譯程序的知識(shí)和能力,有的學(xué)校減少了學(xué)時(shí),有的學(xué)校更砍掉編譯課程。多年的教學(xué)經(jīng)驗(yàn)告訴我們,編譯系統(tǒng)作為計(jì)算機(jī)系統(tǒng)軟件之一,其設(shè)計(jì)和實(shí)現(xiàn)的系統(tǒng)性,能使學(xué)生對(duì)軟件系統(tǒng)的結(jié)構(gòu)形成及系統(tǒng)的建立有個(gè)充分的了解。因此,本書(shū)的下篇討論了編譯程序的5個(gè)階段及每個(gè)階段的基本實(shí)現(xiàn)技術(shù)。? 本書(shū)為教師提供了教學(xué)參考資料,包括課件、教學(xué)指導(dǎo)書(shū)和習(xí)題答案,需要的老師可通過(guò)電子工業(yè)出版社的教材服務(wù)部獲得教學(xué)支持。? 本書(shū)的出版獲得了許多同事的幫助,余盛季、屈鴻為資料的收集和整理做了大量的工作,并為本書(shū)的編寫(xiě)提供了很多有價(jià)值的建議,在此對(duì)他們表示衷心的感謝。本書(shū)的下篇(第7-13章)由王曉斌編寫(xiě),上篇(第1-6章)、附錄由陳文宇編寫(xiě)。若書(shū)中出現(xiàn)謬誤,懇請(qǐng)讀者不吝賜教。
內(nèi)容概要
《程序設(shè)計(jì)語(yǔ)言與編譯:語(yǔ)言的設(shè)計(jì)和實(shí)現(xiàn)(第3版)》是一本計(jì)算機(jī)專業(yè)的寬口徑教材,新版覆蓋CC2001和CCC2002教程中,除自動(dòng)機(jī)外編程語(yǔ)言(PL)模塊的全部知識(shí)點(diǎn)。內(nèi)容涉及語(yǔ)言及其編譯系統(tǒng)的設(shè)計(jì)要素、設(shè)計(jì)思想、設(shè)計(jì)方法、設(shè)計(jì)技術(shù)和設(shè)計(jì)風(fēng)格等知識(shí),《程序設(shè)計(jì)語(yǔ)言與編譯:語(yǔ)言的設(shè)計(jì)和實(shí)現(xiàn)(第3版)》分為上、下篇。上篇,程序設(shè)計(jì)語(yǔ)言的設(shè)計(jì)包括:緒論、數(shù)據(jù)類型、控制結(jié)構(gòu)、程序語(yǔ)言設(shè)計(jì)、非過(guò)程式程序設(shè)計(jì)語(yǔ)言和形式語(yǔ)義學(xué)簡(jiǎn)介;下篇,程序設(shè)計(jì)語(yǔ)言的實(shí)現(xiàn)(編譯)包括:編譯概述、詞法分析、自上而下的語(yǔ)法分析、自下而上的語(yǔ)法分析、語(yǔ)義分析和中間代碼生成、代碼優(yōu)化和目標(biāo)代碼生成、運(yùn)行時(shí)存儲(chǔ)空間的組織。? 《程序設(shè)計(jì)語(yǔ)言與編譯:語(yǔ)言的設(shè)計(jì)和實(shí)現(xiàn)(第3版)》的學(xué)習(xí)目標(biāo)是,使讀者掌握設(shè)計(jì)和實(shí)現(xiàn)一個(gè)程序設(shè)計(jì)語(yǔ)言的基本思想和方法,具有分析、鑒賞、評(píng)價(jià)、選擇、學(xué)習(xí)、設(shè)計(jì)和實(shí)現(xiàn)一個(gè)語(yǔ)言的基本能力?!冻绦蛟O(shè)計(jì)語(yǔ)言與編譯:語(yǔ)言的設(shè)計(jì)和實(shí)現(xiàn)(第3版)》力求簡(jiǎn)明、通俗,注重可讀性,是大學(xué)計(jì)算機(jī)科學(xué)和軟件工程等專業(yè)高級(jí)程序設(shè)計(jì)語(yǔ)言概論及編譯技術(shù)課程教材,也是軟件開(kāi)發(fā)人員的學(xué)習(xí)參考書(shū)。
書(shū)籍目錄
上篇 程序設(shè)計(jì)語(yǔ)言的設(shè)計(jì)第1章 緒論1.1 引言1.2 強(qiáng)制式語(yǔ)言1.2.1 程序設(shè)計(jì)語(yǔ)言的分類1.2.2 馮·諾依曼體系結(jié)構(gòu)1.2.3 綁定和綁定時(shí)間1.2.4 變量1.2.5 虛擬機(jī)1.3 程序單元1.4 程序設(shè)計(jì)語(yǔ)言發(fā)展簡(jiǎn)介1.4.1 早期的高級(jí)語(yǔ)言1.4.2 早期語(yǔ)言的發(fā)展階段1.4.3 概念的集成階段1.4.4 再一次突破1.4.5 大量的探索1.4.6 Ada 語(yǔ)言1.4.7 第四代語(yǔ)言1.4.8 網(wǎng)絡(luò)時(shí)代的語(yǔ)言1.4.9 新一代程序設(shè)計(jì)語(yǔ)言1.4.10 面向未來(lái)的漢語(yǔ)程序設(shè)計(jì)語(yǔ)言1.4.11 總結(jié)習(xí)題1第2章 數(shù)據(jù)類型2.1 引言2.2 內(nèi)部類型2.3 用戶定義類型2.3.1 笛卡兒積2.3.2 有限映像2.3.3 序列2.3.4 遞歸2.3.5 判定或2.3.6 冪集2.4 Pascal語(yǔ)言數(shù)據(jù)類型結(jié)構(gòu)2.4.1 非結(jié)構(gòu)類型2.4.2 聚合構(gòu)造2.4.3 指針2.5 Ada語(yǔ)言數(shù)據(jù)類型結(jié)構(gòu)2.5.1 標(biāo)量類型2.5.2 組合類型2.6 C語(yǔ)言數(shù)據(jù)類型結(jié)構(gòu)2.6.1 非結(jié)構(gòu)類型2.6.2 聚合構(gòu)造2.6.3 指針2.6.4 空類型2.7 Java 語(yǔ)言的數(shù)據(jù)類型2.7.1 內(nèi)部類型2.7.2 用戶定義類型2.8 抽象數(shù)據(jù)類型2.8.1 SIMULA 67 語(yǔ)言的類機(jī)制2.8.2 CLU語(yǔ)言的抽象數(shù)據(jù)類型2.8.3 Ada語(yǔ)言的抽象數(shù)據(jù)類型2.8.4 Modula 2語(yǔ)言的抽象數(shù)據(jù)類型2.8.5 C++語(yǔ)言的抽象數(shù)據(jù)類型2.8.6 Java抽象數(shù)據(jù)類型2.9 類型檢查2.10 類型轉(zhuǎn)換2.11 類型等價(jià)2.12 實(shí)現(xiàn)模型2.12.1 內(nèi)部類型和用戶定義的非結(jié)構(gòu)類型實(shí)現(xiàn)模型2.12.2 結(jié)構(gòu)類型實(shí)現(xiàn)模型習(xí)題2第3章 控制結(jié)構(gòu)3.1 引言3.2 語(yǔ)句級(jí)控制結(jié)構(gòu)3.2.1 順序結(jié)構(gòu)3.2.2 選擇結(jié)構(gòu)3.2.3 循環(huán)結(jié)構(gòu)3.2.4 語(yǔ)句級(jí)控制結(jié)構(gòu)分析3.2.5 用戶定義控制結(jié)構(gòu)3.3 單元級(jí)控制結(jié)構(gòu)3.3.1 顯式調(diào)用從屬單元3.3.2 隱式調(diào)用單元——異常處理3.3.3 SIMULA 67語(yǔ)言協(xié)同程序3.3.4 并發(fā)單元習(xí)題3第4章 程序語(yǔ)言的設(shè)計(jì)4.1 語(yǔ)言的定義4.1.1 語(yǔ)法4.1.2 語(yǔ)義4.2 文法4.2.1 文法的定義4.2.2 文法的分類4.2.3 文法產(chǎn)生的語(yǔ)言4.2.4 語(yǔ)法樹(shù)4.3 語(yǔ)言的設(shè)計(jì)4.3.1 表達(dá)式的設(shè)計(jì)4.3.2 語(yǔ)句的設(shè)計(jì)4.3.3 程序單元的設(shè)計(jì)4.3.4 程序的設(shè)計(jì)4.4 語(yǔ)言設(shè)計(jì)實(shí)例4.5 一些設(shè)計(jì)準(zhǔn)則習(xí)題4第5章 非過(guò)程式程序設(shè)計(jì)語(yǔ)言5.1 引言5.2 函數(shù)式程序設(shè)計(jì)語(yǔ)言5.2.1 函數(shù)5.2.2 數(shù)學(xué)函數(shù)與程序設(shè)計(jì)語(yǔ)言函數(shù)5.2.3 一種簡(jiǎn)單的純函數(shù)式語(yǔ)言5.2.4 LISP語(yǔ)言概述5.2.5 APL語(yǔ)言概述5.2.6 作用式語(yǔ)言和命令式語(yǔ)言的比較5.3 邏輯程序設(shè)計(jì)語(yǔ)言5.3.1 邏輯程序設(shè)計(jì)5.3.2 Prolog語(yǔ)言概述5.3.3 邏輯程序設(shè)計(jì)展望5.4 面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言5.4.1 面向?qū)ο蟮幕靖拍?.4.2 Smalltalk語(yǔ)言概述5.4.3 對(duì)面向?qū)ο笳Z(yǔ)言的評(píng)價(jià)5.5 小結(jié)習(xí)題5第6章 形式語(yǔ)義學(xué)簡(jiǎn)介6.1 引言6.2 形式語(yǔ)義學(xué)分類6.3 公理語(yǔ)義學(xué)簡(jiǎn)介6.4 指稱語(yǔ)義學(xué)簡(jiǎn)介習(xí)題6下篇 程序設(shè)計(jì)語(yǔ)言的實(shí)現(xiàn)(編譯)第7章 編譯概述7.1 引言7.2 翻譯和編譯7.3 解釋7.4 編譯步驟習(xí)題7第8章 詞法分析8.1 詞法分析概述8.2 單詞符號(hào)的類別8.3 詞法分析器的輸出形式8.4 詞法分析器的設(shè)計(jì)8.5 符號(hào)表8.5.1 符號(hào)表的組織8.5.2 常用的符號(hào)表結(jié)構(gòu)習(xí)題8第9章 自上而下的語(yǔ)法分析9.1 引言9.2 回溯分析法9.2.1 回溯的原因9.2.2 提取公共左因子9.2.3 消除左遞歸9.3 遞歸下降分析法9.3.1 遞歸下降分析器的構(gòu)造9.3.2 擴(kuò)充的BNF9.4 預(yù)測(cè)分析法9.4.1 預(yù)測(cè)分析過(guò)程9.4.2 預(yù)測(cè)分析表的構(gòu)造9.4.3 LL(1)文法9.4.4 非LL(1)文法習(xí)題9第10章 自下而上的語(yǔ)法分析10.1 引言10.1.1 分析樹(shù)10.1.2 規(guī)范歸約、短語(yǔ)和句柄10.2 算符優(yōu)先分析法10.2.1 算符優(yōu)先文法10.2.2 算符優(yōu)先分析算法10.2.3 算符優(yōu)先關(guān)系表的構(gòu)造10.3 LR分析法10.3.1 LR分析過(guò)程10.3.2 活前綴10.3.3 LR(0)項(xiàng)目集規(guī)范族10.3.4 LR(0)分析表的構(gòu)造10.3.5 SLR(1)分析表的構(gòu)造習(xí)題10第11章 語(yǔ)義分析和中間代碼生成11.1 語(yǔ)義分析概論11.1.1 語(yǔ)義分析的任務(wù)11.1.2 語(yǔ)法制導(dǎo)翻譯11.2 中間代碼11.3 語(yǔ)義變量和語(yǔ)義函數(shù)11.4 說(shuō)明語(yǔ)句的翻譯11.5 賦值語(yǔ)句的翻譯11.5.1 只含簡(jiǎn)單變量的賦值語(yǔ)句的翻譯11.5.2 含數(shù)組元素的賦值語(yǔ)句的翻譯11.6 控制語(yǔ)句的翻譯11.6.1 布爾表達(dá)式的翻譯11.6.2 無(wú)條件轉(zhuǎn)移語(yǔ)句的翻譯11.6.3 條件語(yǔ)句的翻譯11.6.4 while語(yǔ)句的翻譯11.6.5 for語(yǔ)句的翻譯11.6.6 過(guò)程調(diào)用的翻譯習(xí)題11第12章 代碼優(yōu)化和目標(biāo)代碼生成12.1 局部?jī)?yōu)化12.1.1 優(yōu)化的定義12.1.2 基本塊的劃分12.1.3 程序流圖12.1.4 基本塊內(nèi)的優(yōu)化12.2 全局優(yōu)化12.2.1 循環(huán)的定義12.2.2 必經(jīng)結(jié)點(diǎn)集12.2.3 循環(huán)的查找12.2.4 循環(huán)的優(yōu)化12.3 并行優(yōu)化12.3.1 數(shù)據(jù)的依賴關(guān)系分析12.3.2 向量化代碼生成12.3.3 反相關(guān)與輸出相關(guān)的消除12.3.4 標(biāo)量擴(kuò)張12.3.5 循環(huán)條塊化12.4 目標(biāo)代碼生成12.4.1 一個(gè)計(jì)算機(jī)模型12.4.2 簡(jiǎn)單的代碼生成方法12.4.3 循環(huán)中的寄存器分配習(xí)題12第13章 運(yùn)行時(shí)存儲(chǔ)空間的組織13.1 程序的存儲(chǔ)空間13.1.1 代碼空間13.1.2 數(shù)據(jù)空間13.1.3 活動(dòng)記錄13.1.4 變量的存儲(chǔ)分配13.1.5 存儲(chǔ)分配模式13.2 靜態(tài)分配13.3 棧式分配13.3.1 只含半靜態(tài)變量的棧式分配13.3.2 半動(dòng)態(tài)變量的棧式分配13.3.3 非局部環(huán)境13.3.4 非局部環(huán)境的引用13.4 參數(shù)傳遞13.4.1 數(shù)據(jù)參數(shù)傳遞13.4.2 子程序參數(shù)傳遞習(xí)題13附錄A 形式語(yǔ)言與自動(dòng)機(jī)簡(jiǎn)介思考題
章節(jié)摘錄
1.4.2 早期語(yǔ)言的發(fā)展階段 隨著計(jì)算機(jī)的發(fā)展和應(yīng)用的日益廣泛,實(shí)現(xiàn)的效率已經(jīng)不再是人們唯一的追求目標(biāo)。早在20世紀(jì)60年代就出現(xiàn)了一些基于數(shù)學(xué)原則的機(jī)器計(jì)算表示法語(yǔ)言,它們基于數(shù)學(xué)函數(shù)和函數(shù)作用,而不是基于馮·諾依曼模型的。這些語(yǔ)言的代表是LISP,APL(AProgr·ammingLanguage)和SNOBOL4。 1.LISP語(yǔ)言 1960年,JohnMcCarthy在麻省理工學(xué)院(MIT)設(shè)計(jì)和實(shí)現(xiàn)了LISP語(yǔ)言,它的設(shè)計(jì)基于函數(shù)和函數(shù)作用的數(shù)學(xué)概念,它奠定了函數(shù)式(或作用式)語(yǔ)言風(fēng)格的基礎(chǔ)。由于沒(méi)有適用于函數(shù)式語(yǔ)言的計(jì)算機(jī)體系結(jié)構(gòu)問(wèn)世,因此它不得不在馮·諾依曼體系結(jié)構(gòu)的計(jì)算機(jī)上執(zhí)行,其執(zhí)行效率低,執(zhí)行速度慢。 通常,LISP程序不經(jīng)過(guò)編譯而是通過(guò)解釋來(lái)執(zhí)行。人們?yōu)榱颂岣邎?zhí)行速度,各種實(shí)現(xiàn)對(duì)LISPI。ISP進(jìn)行了不同的改造,出現(xiàn)了許多不同的版本。1981年4月,各個(gè)不同的LISP學(xué)派召開(kāi)了一次會(huì)議,試圖將各種版本統(tǒng)一起來(lái),于是出現(xiàn)了通用LISP(CommonLISP)語(yǔ)言?! ∮捎贚ISP語(yǔ)言特有的數(shù)學(xué)特性,使它一出現(xiàn)就在計(jì)算機(jī)科學(xué)的研究中得到大量應(yīng)用,特別是在人工智能領(lǐng)域。例如,在機(jī)器人、自然語(yǔ)言理解、定理證明和智能系統(tǒng)等研究領(lǐng)域應(yīng)用非常廣泛?! 〖僉ISP語(yǔ)言從變量值可以被修改、賦值語(yǔ)句、goto語(yǔ)句等馮·諾依曼體系結(jié)構(gòu)概念中解放出來(lái)。它主要用來(lái)處理符號(hào)表達(dá)式,并引入了許多新概念。例如,語(yǔ)言有統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)(表);數(shù)據(jù)和程序有統(tǒng)一的表示方法(S表達(dá)式),其中包括遞歸表達(dá)式、前綴表達(dá)式,并將遞歸作為基本控制結(jié)構(gòu)等。LISP語(yǔ)言的語(yǔ)義很容易用LISP程序描述,用LISP語(yǔ)言編寫(xiě)的函數(shù)EVAL,可用來(lái)計(jì)算任何給定的LISP表達(dá)式,它是LISP語(yǔ)言的語(yǔ)義定義。
編輯推薦
在國(guó)家規(guī)劃教材的基礎(chǔ)上,進(jìn)行全面更新,以適應(yīng)高校課程與教學(xué)改革的需要,并特別注意教材的可讀性和可用性,為任課教師提供各種教學(xué)服務(wù)(包括)數(shù)學(xué)電子課件、教學(xué)指導(dǎo)材料、習(xí)題解答和實(shí)驗(yàn)指導(dǎo)等。
圖書(shū)封面
圖書(shū)標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
程序設(shè)計(jì)語(yǔ)言與編譯 PDF格式下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版