程序设计语言编译原理(第3版) + 课后习题答案 pdf

程序设计语言编译原理(第3版) + 课后习题答案

内容简介

本书比较全面、系统地介绍了编译程序构造的一般原理和基本实现方法,内容包括词法分析、语法分析、属性文法与语法制导翻译、语义分析与中间代码产生、符号表与运行时存储空间组织、优化与目标代码生成、并行编译技术。与原教材相比,本书将编译技术的发展,例如属性文法、面向对象语言的编译技术、并行编译技术、编译程序自动构造工具等内容系统地融合到教材中;在语言背景方面,以C,Pascal替代原教材中的FORTRAN和Algol;并在一些重要的章节中增加了必要的例题,以帮助读者理解和自学。

本书可作为高等(理、工)院校计算机科学(或工程)专业的教材,或作为教师、研究生、高年级学生或软件工程技术人员的参考书。

作者简介

本书是在陈火旺、钱家骅、孙永强三位教授编写的《程序设计语言编译原理》的基础上,结合编译技术的研究成果和作者多年的教学经验编写而成的。

目录

第一章 引论
1.1 什么叫编译程序
1.2 编译过程概述
1.3 编译程序的结构
1.3.1 编译程序总框
1.3.2 表格与表格管理
1.3.3 出错处理
1.3.4 遍
1.3.5 编译前端与后端
1.4 编译程序与程序设计环境
1.5 编译程序的生成

第二章 高级语言及其语法描述
2.1 程序语言的定义
2.1.1 语法
2.1.2 语义
2.2 高级语言的一般特性
2.2.1 高级语言的分类
2.2.2 程序结构
2.2.3 数据类型与操作
2.2.4 语句与控制结构
2.3 程序语言的语法描述
2.3.1 上下文无关文法
2.3.2 语法分析树与二义性
2.3.3 形式语言鸟瞰
练习

第三章 词法分析
3.1 对于词法分析器的要求
3.1.1 词法分析器的功能和输出形式
3.1.2 词法分析器作为一个独立子程序
3.2 词法分析器的设计
3.2.1 输入、预处理
3.2.2 单词符号的识别:超前搜索
3.2.3 状态转换图
3.2.4 状态转换图的实现
3.3 正规表达式与有限自动机
3.3.1 正规式与正规集
3.3.2 确定有限自动机(DFA)
3.3.3 非确定有限自动机(NFA)
3.3.4 正规文法与有限自动机的等价性
3.3.5 正规式与有限自动机的等价性
3.3.6 确定有限自动机的化简
3.4 词法分析器的自动产生
3.4.1 语言LEX的一般描述
3.4.2 超前搜索
3.4.3 LEX的实现
练习

第四章 语法分析——自上而下分析
4.1 语法分析器的功能
4.2 自上而下分析面临的问题
4.3 LL(1)分析法
4.3.1 左递归的消除
4.3.2 消除回溯、提左因子
4.3.3 LL(1)分析条件
4.4 递归下降分析程序构造
4.5 预测分析程序
4.5.1 预测分析程序工作过程
4.5.2 预测分析表的构造
4.6 LL(1)分析中的错误处理
练习
……

第五章 语法分析——自下而上分析
第六章 属性文法和语法制导翻译
第七章 语义分析和中间代码产生
第八章 符号表
第九章 运行时存储空间组织
第十章 优化
第十一章 目标代码生成
第十二章 并行编译基础

参考文献

感悟与笔记

什么叫编译程序

使用过现代计算机的人都知道,多数用户是应用语言来实现他们所需要的计算的。现代计算机yi般都含有不止一个的语言编译程序,对有些语言甚至配置了几个不同性能的编译程序,供用户按不同需要进行选择。语言编译程序是计算机软件最重要的组成部分之一,也是用户最直接关心的工具之一。

在计算机上执行一个语言程序一般要分为两步:第一步,用一个编译程序把语言翻译成机器语言程序;第二步,运行所得的机器语言程序求得计算结果。

通常所说的翻译程序是指这样的一个程序,它能够把某yi种语言程序(称为源语言程序)转换成另yi种语言程序(称为目标语言程序),而后这与前这在逻辑上是等价的。如果源语言是诸如FORTRAN、Pascal、C、Ada、Smalhalk或Java这样的“语言”,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,这样的一个翻译程序就称为编译程序。

语言程序除了像上面所说的先编译后执行外,有时也可“解释’’执行。一个源语言的解释程序是这样的程序,它以该语言写的源程序作为输入,但不产生目标程序,而是边解释边执行源程序本身。本书将不对解释程序作专门的讨论。实际上,许多编译程序的构造与实现技术同样适用于解释程序。

根据不同的用途和侧重,编译程序还可进一步分类。专门用于帮助程序开发和调试的编译程序称为诊断编译程序(DiagnosticCompiler),着重于提高目标代码效率的编译程序”4优化编译程序(0ptiIIlizingCompiler)。现在很多编译程序同时提供了调试、优化等多种功能,用户可以通过“开关”进行选择。运行编译程序的计算机称宿主机,运行编译程序所产生目标代码的计算机称目标机。如果yi个编译程序产生不同于其宿主机的机器代码,则称它为交叉编译程序(CrossCompiler)。如果不需重写编译程序中与机器无关的部分就能改变目标机,则称该编译程序为可变目标编译程序(RetargetableCompile,)。

世界上第一个编译程序——FORrⅡ认N编译程序是20世纪50年代中期研制成功的。当时,人们普遍认为设计和实现编译程序是一件十分困难、令人生畏的事情。经过40年的努力,编译理论与技术得到迅速发展,现在已形成了一套比较成熟的、化的理论与方法,并且开发出了一些好的编译程序的实现语言、环境与工具。在此基础上设计并实现一个编译程序不再是高不可攀的事情。

Copyright © 2021-2022 知识猫. All Rights Reserved.