圖書信息
出版社: 高等教育出版社; 第1版 (2009年5月1日)
叢書名: 高等學校計算機實踐教學系列教材
平裝: 347頁
正文語種: 簡體中文
開本: 16
ISBN: 7040261509
條形碼: 9787040261509
尺寸: 22.6 x 20.4 x 1.6 cm
重量: 499 g
內容簡介
《編譯原理實驗教程》是“編譯原理”相關課程的實驗教材,以“源語言-抽象語法樹-低級中間表示-彙編代碼的內部表示-x86/MIPS彙編”為主線搭建編譯原理課程的實驗體系,設計安排了各種循序漸進、規模適度、“綜觀全局、實現局部”、強調工程質量規範的課程設計。第2章通過實現單函式的無類型結構化語言SimpleMiniJOOL的簡單解釋器引導讀者開始編譯實驗的實踐;第3章到第8章圍繞多函式的強類型結構化語言SkiOOMiniJOOL展開有關詞法分析、語法分析、語義分析、低級中間代碼生成、彙編代碼生成、暫存器分配等多種編譯原理骨幹實驗;第9章圍繞強類型的面向對象語言MiniJOOL展開有關面向對象編譯的高級實驗。《編譯原理實驗教程》的課程實驗涉及多種編程環境和工具,其工程開發接近實際。《編譯原理實驗教程》配套光碟中提供了實驗支持庫和課程設計開發包。《編譯原理實驗教程》可作為高等院校計算機科學及相關專業的編譯原理實驗教材,既可用來開展與理論課程教學同步的配套實驗,又可用來安排獨立的綜合性實踐課程。《編譯原理實驗教程》還可作為軟體工程碩士研究生工程實踐案例教材,以及供計算機軟體工程技術人員參考使用。
目錄
第1章 概述
1.1 本書的研製背景與目標
1.2 本書課程實驗的構成
1.2.1 要實現的源語言
1.2.2 目標機的選擇
1.2.3 中間表示
1.2.4 彙編代碼的內部表示
1.2.5 編譯器組件及本書的課程實驗概覽
1.3 開發環境與工具
1.3.1 開發環境與工具簡介
1.3.2 環境變數設定
1.3.3 Eclipse的安裝和使用
1.3.4 XML與Ant簡介
1.4 實驗軟體包
1.5 課程實驗開展建議
1.5.1 測試環境
1.5.2 課程設計提交要求
1.5.3 過程管理與控制
第2章 一個簡單的程式解釋器
2.1 SimpleMiniJOOL語言
2.2 課程設計1:一個簡單的程式解釋器
2.3 實驗運行平台
2.3.1 實驗平台接口
2.3.2 實驗運行平台的工作機制
2.3.3 實驗運行平台的使用
2.4 EclipseAST
2.4.1 AST節點類
2.4.2 AST類
2.4.3 ASTVisitor類
2.4.4 SimpleMiniJOOL語言涉及的AST節點類
2.4.5 EclipseAST使用示例
2.5 AST的圖形化顯示包——ASTView
2.5.1 ASTView包中的類
2.5.2 AST節點的輸出屬性及其定製
2.5.3 在ASTViewer中顯示節點對應的低級中間表示
2.6 設計模式
2.6.1 工廠方法模式
2.6.2 訪問者模式
2.7 課程設計l開發和測試指南
2.7.1 主要開發任務
2.7.2 實現InterpVisitor類的一些指導
2.7.3 在Eclipse下開發
2.7.4 在控制台下編譯和運行
2.7.5 測試要求
第3章 詞法分析
3.1 本章課程設計概述
3.2 MiniJOOL語言的詞法
3.3 課程設計2-1:用JFlex為MiniJOOL語言生成一個詞法分析器
3.3.1 示例
3.3.2 MiniJOOL語言的詞法分析器構造
3.4 課程設計2-2:手工編寫一個簡單的詞法分析器
3.4.1 Block語言的詞法
3.4.2 示例
3.4.3 課程設計任務
3.4.4 編譯和運行指南
3.5 課程設計2-3:編寫一個NFA生成器
3.5.1 MLex詞法規範描述語言
3.5.2 課程設計指導
3.5.3 課程設計任務
3.6 課程設計2-4:編寫一個詞法分析器的生成器
3.6.1 LexerCodeGenerator的輸入和輸出示例
3.6.2 課程設計指導
3.7 JFlex詞法規範
3.7.1 用戶代碼
3.7.2 選項和聲明
3.7.3 詞法規則
3.7.4 如何匹配輸入流
第4章 語法分析
4.1 SkipOOMiniJOOL語言的語法
4.1.1 類型、常量和變數
4.1.2 語句
4.1.3 表達式
4.1.4 SkipOOMiniJOOL程式的總體結構
4.1.5 一個SkipOOMiniJOOL程式示例
4.2 本章課程設計概述
4.3 課程設計3-1:手工編寫一個語法分析器
4.3.1 SimpleBlock語言
4.3.2 如何引用課程設計2-2的詞法分析器類
4.3.3 課程設計指導
4.3.4 課程設計任務
4.4 課程設計3-2:用CuP生成一個能分析合法程式的語法分析器
4.4.1 示例l:SimpleBlock語言的語法分析器
4.4.2 SkipOOMiniJOOL語言涉及的AST節點類
4.4.3 示例2:Block語言的語法分析器
4.4.4 課程設計任務
4.5 課程設計3-3:用javacc生成一個語法分析器
4.5.1 示例:Block語言及其子語言的分析器
4.5.2 課程設計任務
4.6 課程設計3-4:用CUP生成一個有錯誤處理能力的語法分析器
4.6.1 錯誤類型與錯誤信息管理
4.6.2 錯誤恢復與處理機制
4.6.3 示例
4.6.4 課程設計任務
4.7 課程設計3-5:用JavaCC生成一個有錯誤處理能力的語法分析器
4.7.1.JavaCC的錯誤恢復機制
4.7.2 錯誤恢復與處理示例
4.7.3 課程設計任務
4.8 CUP與YACC
4.8.1 YACC簡介
4.8.2 CuP與YACC的文法規範描述檔案的結構
4.8.3 文法符號
4.8.4 一個簡單的例子
4.8.5 錯誤恢復
……
第5章 語義分析
第6章 中間表示的轉換
第7章 彙編語言及彙編代碼的內部
第8章 彙編代碼生成
第9章 面向對象語言的編譯
第10章 綜合性課程設計