出版时间:2010-9 出版社:机械工业 作者:贺汛 页数:287
前言
编译技术是计算机语言发展的支柱,也是计算机科学中发展最迅速、最成熟的分支之一。编译原理课程是继C语言程序设计、离散数学、数据结构等课程后,对工科计算机专业开设的一门重要课程,在教学中占有十分重要的地位。编译的一般原理和基本技术不仅适用于构造程序设计语言的编译程序,也适用于各种系统软件、应用软件的设计和实现。其中的形式语言理论和自动机理论,通过对问题的抽象、描述和识别,从本质上对问题进行认识和分析,并加以解决,这种思维方法对学生抽象思维能力的培养有着极其积极的意义。编译原理课程与数据结构、离散数学、程序设计语言等课程的联系也甚为密切。可以说,编译是这些课程的综合应用,对这些课程内容的理解和巩固起到了良好的作用。 作者编写本教材的主导思想是:以培养抽象思维能力为目的,在介绍编译相关的理论、工具和方法的同时,重点强调问题的抽象描述和问题分析的思路,以求提高学生分析问题解决问题的能力,同时通过实际编程,提高学生理论应用于实践的能力,提高程序设计水平。 本教材内容共分3部分:第1部分即第1章,简单介绍编译的基本过程和编译程序的基本结构;第2部分包括第2章的形式语言和文法、第3章的有穷自动机,介绍形式语言理论中有关语言和文法的基本知识、自动机理论中的有穷自动机的相关内容,为后续编译方法的介绍做基础理论准备;第3部分从第4章开始,按编译的过程逐一介绍编译的各个阶段的任务、原理和实现的基本技术,包括第4章的词法分析方法、第5~7章的自顶向下和自底向上两大类语法分析方法、第8章的自底向上语法制导翻译技术、第11章的中间代码优化中的基本块优化技术和循环优化技术,以及第12章的基本块目标代码生成方法,另外,第9章介绍了编译程序的重要组成部分——符号表,以及有关符号表的组织与操作,第10章介绍了与编译相关的程序运行时的存储空间组织问题。
内容概要
《编译方法(第2版)》介绍程序设计语言的编译程序的设计技术,主要由编译程序的基本结构、形式语言和自动机理论的基础知识、编译过程各阶段的工作原理与实现方法三大部分组成。 《编译方法(第2版)》内容通俗易懂,叙述简明,强调抽象思维,突出理论与实践的结合。为便于学生及时复习与巩固所学知识,在各章的最后给出了典型例题、内容小结和练习题。书中还设计了两套实验,一套是局部性的针对某一算法的编程实验,每个程序相对独立;另一套是综合性实验,为一个小语言构造完整的编译程序。两套实验可根据学生情况进行适当的选择。 《编译方法(第2版)》适合作为高校计算机专业的教材,也可供从事计算机应用和软件开发的工程技术人员自学。
书籍目录
出版说明前言第1章 概述1.1 程序设计语言与程序1.1.1 程序设计语言的定义1.1.2 程序设计语言的分类1.1.3 程序及其结构1.1.4 高级语言程序的处理过程1.2 编译程序1.2.1 编译与解释1.2.2 编译过程和编译程序的结构1.2.3 编译程序的生成1.2.4 编译程序与程序设计环境1.3 编译技术的应用1.4 本章 小结1.5 习题第2章 形式语言和文法2.1 形式语言2.1.1 语言的概念2.1.2 语言的定义方式2.2 文法2.2.1 文法的形式定义2.2.2 文法的表示方法2.2.3 相关概念2.3 文法的分类和化简2.3.1 文法的分类2.3.2 两个定理2.3.3 文法的化简2.4 文法的二义性2.5 典型例题2.6 本章 小结2.7 习题第3章 有穷自动机3.1 正规式与正规集3.1.1 概念3.1.2 正规式和正规文法的等价性3.2 有穷自动机3.2.1 有穷自动机3.2.2 确定的有穷自动机3.2.3 不确定的有穷自动机3.2.4 NFA与DFA的等价性3.2.5 DFA的化简3.3 正规式和FA的等价性3.3.1 构造与FA等价的正规式3.3.2 构造与正规式等价的FA3.4 正规文法和FA的等价性3.4.1 构造与正规文法等价的FA3.4.2 构造与FA等价的正规文法3.5 典型例题3.6 本章 小结3.7 习题3.8 实验第4章 词法分析4.1 词法分析的任务4.2 程序设计语言的单词4.2.1 单词的种类4.2.2 单词的机内表示方法4.3 单词的形式描述4.3.1 正规式描述4.3.2 正规文法描述4.4 词法分析程序的构造4.4.1 根据DFA构造词法分析程序4.4.2 词法分析程序构造的相关问题4.5 词法分析程序的自动生成工具LEx简介4.5.1 LEX语言源程序4.5.2 LEX编译程序工作原理4.6 典型例题4.7 本章 小结4.8 习题4.9 实验第5章 自顶向下语法分析5.1 程序设计语言的语法描述5.2 自顶向下的语法分析概述5.2.1 自顶向下的语法分析方法5.2.2 确定的自顶向下的语法分析方法5.2.3 不确定的自顶向下的语法分析方法5.3 LL(1)文法5.3.1 “回溯”的原因5.3.2 “回溯”的消除5.3.3 LL(1)文法的定义5.4 预测分析法5.4.1 预测分析表5.4.2 分析栈5.4.3 预测分析程序5.5 递归下降分析法5.6 典型例题5.7 本章 小结5.8 习题5.9 实验第6章 算符优先分析6.1 自底向上语法分析概述6.1.1 自底向上语法分析过程6.1.2 自底向上语法分析的实现6.1.3 短语和句柄6.2 简单优先分析法6.2.1 优先关系6.2.2 简单优先文法6.2.3 简单优先分析法6.3 算符优先分析法6.3.1 算符优先文法6.3.2 算符优先分析算法6.4 优先函数6.4.1 优先函数的定义6.4.2 优先函数的构造6.5 典型例题6.6 本章 小结6.7 习题6.8 实验第7章 LR分析法7.1 LR分析概述7.1.1 分析思想7.1.2 分析器组成7.2 LR(0)分析表7.2.1 LR(O)项目集规范族7.2.2 LR(O)文法7.2.3 LR(o)分析器的工作过程7.3 SLR(1)分析表7.3.1 SLR(1)文法7.3.2 SLR(1)分析表的构造7.4 LR(1)分析表7.4.1 LR(1)文法7.4.2 LR(1)项目集规范族的构造7.4.3 LR(1)分析表的构造7.5 LALR(1)分析表7.5.1 LALR(1)文法7.5.2 LALR(1)分析表的构造7.6 语法分析程序的自动生成工具YACC简介7.6.1 YACC对语言的要求7.6.2 YACC的输入/输出7.6.3 YACC源程序7.7 典型例题7.8 本章 小结7.9 习题7.10 实验第8章 语义分析和中间代码生成第9章 符号表第10章 运行时存储空间的组织第11章 代码优化第12章 目标代码生成附录参考文献
章节摘录
众所周知,计算机硬件并不懂得BASIC、Pascal、C、C++、Ada、Java等高级程序设计语言,它所能执行的仅仅是O/I代码的机器语言,但高级语言之所以能以其独特的优势而被广泛使用,其原因就在于翻译程序的存在。翻译程序能将高级语言程序翻译成等价的0/1代码指令,而编译程序就是这种翻译程序之一,它已成为现代计算机系统的基本组成部分。 编译原理与技术是计算机工作者所必备的专业基础知识,其内容涉及程序设计语言、形式语言与自动机理论、算法分析与设计、软件工程等诸多方面。通过对这些知识的学习,不仅能掌握基本理论与方法,还将得到分析问题和解决问题的方法与能力的训练,并极大地提高逻辑思维和抽象思维能力。 本章将在回顾程序设计语言相关内容的基础上说明编译程序与程序设计语言之间的关系,并简单叙述编译的过程及编译程序的结构。 ……
图书封面
评论、评分、阅读与下载