《編譯原理》課程教學大綱
Principlesof Compiler
課程代碼: 課程性質:專業(yè)課 必修
適用專業(yè):計算機、網絡、軟件 總學分數:3
總學時數:48 修訂年月:
編寫年月:2014.3 執(zhí)筆 者:張巍
中文簡介
《編譯原理》是計算機類專業(yè)的主干課程之一。本課程講述高級程序設計語言的編譯程序構造的基本原理和實現技術,是計算機軟件的核心技術之一。通過本課程的學習,學生應掌握文法和形式語言基礎知識,具有分析和實現編譯程序的初步能力,加深對程序設計語言原理的理解,并且提高中、大型程序的分析和開發(fā)能力。
英文簡介
Compiling Principle is the main course of the computer discipline.This course describes the fundamentals of programming language compiler and presentsits construction and implementation. Compiler is core technology of computersoftware. Through learning this course, students should master the basicgrammar and knowledge of the formal language. Students can analyze and solutethe simple problems based on compiling knowledge, and raise the large-scaleprogram analysis and development capabilities.
一、課程目的
《編譯原理》是計算機類專業(yè)的主干課程之一。本課程講述高級程序設計語言的編譯程序構造的基本原理和實現技術,是計算機軟件的核心技術之一。通過本課程的學習,學生應掌握文法和形式語言基礎知識,具有分析和實現編譯程序的初步能力,加深對程序設計語言原理的理解,并且提高中、大型程序的分析和開發(fā)能力。
二、課程教學內容及學時分配
教學課時分配
第1章 緒論 (2學時)
主要內容:編譯程序;解釋程序;編譯程序的組成;編譯程序的構造。
重點:掌握編譯程序的基本概念;了解通用程序設計語言的主要特征;了解編譯器在計算機系統中的地位和作用;了解編譯器的基本工作原理;了解編譯器各個階段的工作與任務;理解對編譯程序性能的基本要求;了解編譯器的編寫工具。
第3章 文法和形式語言基礎 (7學時)
主要內容:符號串;文法和語言的形式定義;文法的分類;語法樹和二義性;文法的限制和變換。
重點:文法和形式語言的基本概念,尤其是上下文無關文法與上下文無關語言。
第4章 詞法分析 (5學時)
主要內容:詞法分析程序的任務;詞法分析程序的設計;正則文法、正則表達式和有限自動機;詞法分析程序;PL/0詞法分析的設計與實現
重點:了解詞法分析器的作用和基本工作方式,理解構詞規(guī)則與詞法分析的關系,掌握利用狀態(tài)轉換圖構造詞法分析器的基本方法。
第5章 自頂向下優(yōu)先分析分析 (6學時)
主要內容:遞歸子程序分析法;LL(1)分析法。PL/0語法分析程序的設計與實現。
重點:LL(1)文法的相關技術方法,遞歸下降分析器構造方法和LL(1)分析表構造方法。
第6,7章 自底向上語法分析 (8學時) 主要內容:自底向上方法概述,簡單優(yōu)先分析法,LR(0)分析法;SLR(1)分析法; LR(1)分析法;LALR(1)分析法。
重點:LR族文法、可歸前綴圖構造以及分析表的構造。
第8章 語法制導翻譯和中間代碼的生成 (8學時)
主要內容:逆波蘭表示;三元式和樹表示;四元式;簡單賦值語句的翻譯;布爾表達式的翻譯;控制語句的翻譯;簡單說明語句的翻譯;數組和結構的翻譯。
重點:三種中間語言:四元式、三元式、逆波蘭表示;算術表達式的翻譯,布爾表達式的翻譯,控制語句的翻譯。PL/0語言語義分析程序的設計與實現。
第9章 符號表 (2學時)
主要內容: PL/0語言的符號表。
第10章 目標程序運行時的存儲組織(5學時)
主要內容:數據空間的管理方法,棧式存儲分配,參數傳遞,過程調用、進入和返回。
重點:棧式存儲分配的實現;分程序結構的存儲管理;參數傳遞
第11章 代碼優(yōu)化 (3學時)
主要內容:合并常數;消除多余運算;外提不變運算;削減運算強度;下標變量優(yōu)化。
重點:基本塊和循環(huán)相關的代碼優(yōu)化方法
第12章 代碼生成 (2學時)
主要內容:代碼生成概述;PL/0編譯程序的目標代碼結構和代碼生成。
重點: PL/0編譯程序的目標代碼結構和代碼生成
三、課程教學的基本要求
本課程是計算機類專業(yè)的專業(yè)核心課程,要求理論與實踐緊密結合。
(1)總體目標
① 對編譯程序的整體結構有清晰的了解。
② 掌握詞法分析和語法分析的基本方法。
③ 具有設計各種常見語言成分的目標結構的能力。
④ 掌握靜態(tài)和動態(tài)存儲分配技術。
⑤ 熟悉編譯程序中各種主要的數據結構。
⑥ 具有分析和實現編譯程序的初步能力。
四、本課程與其它課程的聯系與分工
先修課程:
《C語言程序設計》:高級語言是編譯程序的源語言,其數據類型、表達式、語句、程序結構、參數傳遞方式和存儲管理方法等,是設計和實現編譯程序的基礎。
《匯編語言程序設計》:匯編語言是編譯程序的目標語言,匯編語言的指令形式、寄存器、變址器以及尋址方式等,與編譯程序代碼生成直接相關。
《數據結構》:在編譯過程中,需要對源程序和中間語言程序的語法結構和語義信息進行組織、管理和查找,大量使用各種數據結構及其算法。
《離散數學》:編譯原理建立在形式語言與自動機的理論基礎上,在編譯程序的詞法分析、語法分析和代碼優(yōu)化等方面,大量應用離散數學的理論與方法。
五 建議教材與教學參考書
建議教材:
《編譯原理課(第二版)》 張素琴 呂映芝 清華大學出版社 2005年2月
建議參考書:
【1.】 《現代編譯原理--C語言描述 》 (美)Andrew W.Appel 譯者: 趙克佳,黃春,沈志宇人民郵電出版社 2003年2月
【2.】 《高級編譯器設計與實現》作者:(美)Steven S.Muchnick譯者: 趙克佳
機械工業(yè)出版社 2005年7月
【3.】 《編譯原理》[美]A.V.Aho等著,李建中等譯,機械工業(yè)出版社,2003
【4.】 《編譯原理及實踐》[美]K.C.Louden等著 英文影印版:機械工業(yè)出版社, 2002 中文版:馮博琴等譯,機械工業(yè)出版社,2000
【5.】 《程序設計語言編譯原理》(第3版)陳火旺等, 國防工業(yè)出版社,2000
【6.】 《編譯原理課程設計》王雷 劉志成 周晶 機械工業(yè)出版社 2005年3月