新書推薦:
《
甲骨拼合六集
》
售價:HK$
333.8
《
视觉美食家:商业摄影实战与创意解析
》
售價:HK$
132.2
《
中国经济发展的新阶段:机会与选择
》
售價:HK$
99.7
《
DK月季玫瑰百科
》
售價:HK$
210.6
《
为你想要的生活
》
售價:HK$
66.1
《
关键改变:如何实现自我蜕变
》
售價:HK$
77.3
《
超加工人群:为什么有些食物让人一吃就停不下来
》
售價:HK$
99.7
《
历史的教训(浓缩《文明的故事》精华,总结历史教训的独特见解)
》
售價:HK$
62.7
|
內容簡介: |
本书主要介绍程序设计语言的编译程序的设计技术,主要由编译程序的基本结构、形式语言和自动机理论的基础知识、编译过程各阶段的工作原理和实现方法三部分构成。
|
目錄:
|
前言教学建议第1章 引论 11.1 编译概述 11.2 编译的过程 21.2.1 高级语言程序的处理过程 21.2.2 编译的过程 31.3 编译程序的生成 71.3.1 编译程序的组合方式 71.3.2 编译程序的生成方式 91.4 基本知识 111.4.1 形式语言 111.4.2 文法 141.5 练习 24第2章 词法分析 262.1 词法分析概述 262.2 单词的表示 272.2.1 单词的种别 272.2.2 属性 282.3 单词的形式描述 292.3.1 正规式描述 302.3.2 正规文法描述 322.3.3 正规式与正规文法的等价性 332.4 有穷自动机 382.4.1 不确定的有穷自动机 382.4.2 确定的有穷自动机 402.4.3 NFA与DFA的等价性 412.4.4 DFA的化简 452.4.5 正规式和FA的等价性 472.4.6 正规文法和FA的等价性 532.5 词法分析程序的构造 562.5.1 单词识别程序的构造 562.5.2 词法分析程序的自动生成工具LEX简介 592.6 练习 62第3章 自顶向下的语法分析法 643.1 语法分析概述 643.2 自顶向下语法分析的实现 653.2.1 推导树与语法树 653.2.2 二义性 663.2.3 确定与不确定的自顶向下语法分析 673.3 确定的自顶向下的语法分析条件 703.3.1 LL(1)文法 703.3.2 非LL(1)文法到LL(1)文法的等价变换 753.4 自顶向下语法分析程序的构造 803.4.1 预测分析法 803.4.2 递归下降分析法 833.5 练习 85第4章 自底向上的语法分析法 884.1 自底向上语法分析的实现 884.1.1 归约 884.1.2 短语和句柄 904.2 简单优先分析法 924.2.1 简单优先文法 924.2.2 简单优先分析算法 944.3 算符优先分析法 964.3.1 算符优先文法 964.3.2 算符优先分析算法 1004.3.3 优先函数 1034.4 练习 105第5章 LR分析法 1085.1 LR分析法概述 1085.2 LR(0)分析 1105.2.1 LR(0)项目集规范族 1105.2.2 LR(0)文法 1165.2.3 LR(0)分析器的工作过程 1195.3 SLR(1)分析 1205.3.1 SLR(1)文法 1205.3.2 SLR(1)分析表的构造 1215.4 LR(1)分析 1235.4.1 LR(1)文法 1235.4.2 LR(1)项目集规范族的构造 1255.4.3 LR(1)分析表的构造 1265.5 LALR(1)分析 1275.5.1 LALR(1)文法 1275.5.2 LALR(1)分析表的构造 1285.6 语法分析程序的自动生成工具YACC简介 1305.6.1 YACC对语言的要求 1305.6.2 YACC的输入输出 1305.6.3 YACC源程序 1315.7 练习 132第6章 语义分析 1356.1 语义分析概述 1356.2 语法制导的语义计算 1356.2.1 属性文法 1366.2.2 语义计算 1386.3 符号表 1406.3.1 符号表的概述 1406.3.2 符号表的定义 1416.3.3 符号表的组织 1456.3.4 符号表的管理 1536.4 练习 154第7章 中间代码生成 1567.1 中间代码生成概述 1567.2 中间代码 1567.2.1 逆波兰式 1567.2.2 树代码 1587.2.3 三地址码 1597.3 自底向上的语法制导翻译 1617.3.1 说明语句的翻译 1617.3.2 含简单变量的赋值语句的翻译 1647.3.3 含数组元素的赋值语句的翻译 1677.3.4 布尔表达式的翻译 1687.3.5 控制语句的翻译 1747.3.6 过程调用 1827.4 练习 183第8章 运行时存储空间的组织 1858.1 运行时存储空间的划分 1858.2 数据空间的存储分配策略 1868.2.1 静态存储分配策略 1868.2.2 动态存储分配策略 1868.3 栈式存储分配 1908.3.1 简单程序设计语言的栈式存储分配 1908.3.2 嵌套过程语言的栈式存储分配 1938.4 练习 199第9章 代码优化 2019.1 代码优化概述 2019.2 局部优化 2019.2.1 基本块及其划分 2029.2.2 基本块的优化技术 2059.2.3 基本块优化技术的实现 2079.3 循环优化 2129.3.1 程序中的循环 2129.3.2 循环的优化技术及其实现 2179.4 练习 221第10章 目标代码生成 22410.1 目标代码生成概述 22410.2 模型计算机的指令系统 22510.2.1 寻址方式 22510.2.2 指令系统 22510.3 一种简单的代码生成算法 22610.3.1 寄存器的使用原则 22610.3.2 待用信息和活跃信息 22710.3.3 寄存器描述和变量地址描述 23110.3.4 基本块的代码生成算法 23110.4 DAG的目标代码生成 23410.5 练习 235参考文献 237
|
內容試閱:
|
编译原理是计算机专业开设的一门重要的专业课程,旨在介绍程序设计语言的编译程序的构造过程、原理和方法。从教学角度来说,编译原理与程序设计基础、离散数学和数据结构等课程联系紧密,它作为后几门课程的综合应用,能够对相关课程内容的深入理解和巩固发挥良好的作用。从技术角度来说,程序设计语言的编译过程涉及的理论与技术有利于更好地形成计算机软件到硬件乃至软硬件协同的概念,也适用于各种系统软件、应用软件的设计和实现。从思维角度来说,编译原理涉及的形式语言理论和自动机理论建立了一种对问题进行抽象、描述和识别,进而从本质上认识、分析和解决问题的思维方法,对工科学生和技术人员抽象思维能力的培养有积极的意义。本书适合作为高等院校计算机专业本科生教材,亦可供准备参加硕士研究生入学考试的考生及从事计算机应用和软件开发工作的工程技术人员参考。编译原理相关理论的专业性强,内容抽象、难理解,因此本书在编写过程中始终坚持以通俗易懂的语言表达实现对学生抽象思维能力的培养。本书在阐释编译各阶段涉及的原理、方法和技术的过程中,对算法的思想、设计过程和具体内容均给出了详细的说明,引导读者设身处地,一步一步地体会其分析和实现过程,整个过程强调问题的抽象描述和分析思路。在厘清、弄透算法知识的同时,提升读者分析问题、解决问题的能力。全书共10章。第1章简单介绍编译的基本概念、过程和编译程序的生成,并对形式语言和文法的相关知识进行说明。从第2章开始,按编译的过程逐一介绍编译各阶段的任务、原理和基本实现技术,包括词法分析、语法分析、语义分析、中间代码生成、运行时存储空间的组织、代码优化、目标代码生成等内容。为帮助读者巩固知识点,把握重点和难点,掌握解题方法,本书在每章后都给出了精选的习题。书中的例题和习题均以C语言为背景,算法也以C语言的格式给出,从而做到了与程序设计基础、数据结构等先修课程的较好融合。后续将出版与本书配套的学习辅导和实验用书,为本书的每一章配套内容矩阵、例题分析和练习测试。实验包括独立的局部算法实验和综合实验。本书第1~5章由史涯晴独自编写,第6~10章由贺汛、史涯晴共同编写。由于编者水平有限,书中难免存在不当和疏漏之处,敬请广大读者批评指正。编 者2020年5月26日于南京
|
|