出版时间:2011-3 出版社:电子工业 作者:刘铭//徐兰芳//骆婷 页数:254
Tag标签:无
内容概要
本书根据高等学校“编译原理”课程教学基本要求编写。全书系统介绍了编译程序的一般构造原理、基本设计方法和主要实现技术。内容包括:文法和语言基本知识、词法分析程序的设计原理与构造方法、各种语法分析技术、语法制导翻译技术与中间代码生成、符号表的组织和管理、代码优化、运行时存储空间的组织与管理、目标代码生成、并行编译技术基本常识等。
本书系统性强,概念清晰,内容简明通俗,每章配有本章学习导读、本章小结、自测练习题和习题。附录给出了自测练习题与习题参考答案及编译程序实验,本书还免费提供电子课件和实验源代码。
读者对象:本书可作为高等学校计算机专业本科生教材,也可作为成人教育本科和专升本学生的教材,对相关工程技术人员也有参考价值。
书籍目录
第1章 编译概述
1.1 翻译程序与编译程序
1.2 编译过程和编译程序的基本结构
1.3 编译程序的生成方法
1.4 编译技术在软件开发中的应用
本章小结
扩展阅读
自测练习题1
习题1
第2章 文法和语言的基本知识
2.1 概述
2.2 字母表和符号串的基本概念
2.2.1 字母表和符号串
2.2.2 符号串的运算
2.3 文法和语言的形式定义
2.3.1 形式语言
2.3.2 文法的形式定义
2.3.3 语言的形式定义
2.3.4 规范推导和规范归约
2.3.5 递归规则与文法的递归性
2.4 短语、直接短语和句柄
2.4.1 短语和直接短语
2.4.2 句柄
2.5 语法树与文法的二义性
2.5.1 推导和语法树
2.5.2 文法的二义性
2.5.3 文法二义性的消除
2.6 文法和语言的分类
2.7 有关文法的实用限制和变换
本章小结
扩展阅读
自测练习题2
习题2
第3章 词法分析与有穷自动机
3.1 词法分析程序的功能
3.2 单词符号及输出单词的形式
3.2.1 语言的单词符号
3.2.2 词法分析程序输出单词的形式
3.3 语言单词符号的两种定义方式
3.3.1 正规式与正规集
3.3.2 正规文法与正规式
3.4 正规式与有穷自动机
3.4.1 确定有穷自动机(DFA)
3.4.2 非确定有穷自动机(NFA)
3.4.3 由正规表达式R构造NFA
3.4.4 NFA确定化为DFA的方法
3.4.5 DFA的化简
3.4.6 有穷自动机到正规式的转换
3.5 正规文法与有穷自动机
3.5.1 右线性正规文法到有穷自动机的转换方法
3.5.2 左线性正规文法到有穷自动机的转换方法
3.5.3 有穷自动机到正规文法的转换方法
3.6 词法分析程序的编写方法
本章小结
扩展阅读
自测练习题3
习题3
第4章 语法分析
4.1 语法分析程序的功能
4.2 自上而下分析法
4.2.1 非确定的自上而下分析法的思想
4.2.2 文法的左递归性和回溯的消除
4.2.3 某些非LL(1)文法到LL(1)文法的改写
4.2.4 递归下降分析法
4.2.5 预测分析法与预测分析表的构造
4.3 自下而上分析法的一般原理
4.4 算符优先分析法
4.4.1 方法概述
4.4.2 算符优先文法的定义
4.4.3 算符优先关系表的构造
4.4.4 算符优先分析算法的设计
4.4.5 优先函数的构造
4.4.6 算符优先分析法的局限性
4.5 LR分析法
4.5.1 LR分析器的工作原理和过程
4.5.2 LR(0)分析法
4.5.3 SLR(1)分析法
4.5.4 LR(1)分析法
4.5.5 LALR(1)分析法
4.5.6 LR分析法对二义性文法的应用
4.5.7 LR语法分析中的错误恢复技术
本章小结
扩展阅读
自测练习题4
习题4
第5章 语法制导翻译技术和中间代码生成
第6章 符号表的组织与管理
第7章 代码优化
第8章 运行时的存储组织与管理
第9章 目标代码生成
第10章 并行编译技术基本常识
附录A 词法分析程序生成器
附录B 语法分析程序生成器YACC
附录C 编译程序实验
附录D 自测练习题与习题参考答案
参考文献
章节摘录
编译程序的重要功能之一,是记录源程序中所使用的变量的名字,并且收集与名字属性相关的各种信息。名字属性包括一个名字的存储分配、类型、作用域等信息。如果名字是一个函数名,还会包括其参数数量、类型、参数的传递方式以及返回类型等信息。符号表数据结构可以为变量名字创建记录条目,来登记源程序中所提供的或在编译过程中所产生的这些信息,编译程序在工作过程的各个阶段需要构造、查找、修改或存取有关表格中的信息,因此在编译程序中必须有一组管理各种表格的程序。 如果编译程序只处理正确的程序,那么它的设计和实现将会大大简化。但是程序设计人员还期望编译程序能够帮助定位和跟踪错误。无论程序员如何努力,程序中难免总会有错误出现。虽然错误很常见,但很少有语言在设计的时候就考虑到错误处理问题。大部分程序设计语言的规范没有规定编译程序应该如何处理错误;错误处理方法由编译程序的设计者决定。因此,从一开始就计划好如何进行错误处理,不仅可以简化编译程序的结构,还可以改进错误处理方法。一个好的编译程序在编译过程中,应具有广泛的程序查错能力,并能准确地报告错误的种类及出错位置,以便用户查找和纠正,因此在编译程序中还必须有一个出错处理程序。 编译过程的这5个阶段的任务分别由5个程序完成,这5个程序分别称为词法分析程序、语法分析程序、语义分析及中间代码生成程序、代码优化程序和目标代码生成程序,另外再加上表格管理程序和出错处理程序。这些程序便是编译程序的主要组成部分,一个典型的编译程序结构如图1.5所示。 需要注意的是,图中所给出的各个阶段之间的关系是指它们之间的逻辑关系,不一定是执行时间上的先后关系。实际上,可按不同的执行流程来组织上述各阶段的工作,这在很大程度上依赖于编译过程中对源程序扫描的遍数以及如何划分各遍扫描所进行的工作。此处所说的“遍”,是指对源程序或其等价的中间语言程序从头到尾扫描一遍,并完成规定加工处理工作的过程。例如,可以将前述5个阶段的工作结合在一起,对源程序从头到尾扫描一遍来完成编译的各项工作,这种编译程序称为一遍扫描的编译程序。 ……
图书封面
图书标签Tags
无
评论、评分、阅读与下载