发表于2024-11-23
书[0名0]: | 编译原理(原书[0第0]2版)(龙书)(09年度[0畅0]销榜TOP50)|39915 |
图书定价: | 89元 |
图书作者: | (美)Alfred V.Aho;Monica S.Lam;Ravi Sethi;Jeffrey D.Ullman |
出版社: | 机械工业出版社 |
出版日期: | 2009/1/1 0:00:00 |
ISBN号: | 9787111251217 |
开本: | 16开 |
页数: | 631 |
版次: | 2-1 |
作者简介 |
Alfred V.Aho,美[0国0]歌伦比亚[0大0][0学0]教授,美[0国0][0国0]家工程院院士,ACM和IEEE[0会0]士,曾获得IEEE的冯·诺伊曼奖。著有多部算[0法0]、数据结构、编译器、数据库系统及计算机科[0学0]基础方面的著作。 |
内容简介 |
《编译原理》全面、深入地探讨了编译器设计方面的重要主题,包括词[0法0]分析、语[0法0]分析、语[0法0]制导定义和语[0法0]制导翻译、运行时刻环境、目标代码生成、代码[0优0]化技术、并行性检测以及过程间分析技术,并在相关章节中给出[0大0]量的实例。与上一版相比,《编译原理》进行了全面修订,涵盖了编译器开发方面新进展。每章中都提供了[0大0]量的实例及参考文献。 《编译原理》是编译原理课程方面的经典教材,内容丰富,适合作为高等院校计算机及相关专业本科生及研究生的编译原理课程的教材,也是广[0大0]技术人员的参考读物。 |
目录 |
出版者的话 译者序 前言 [0第0]1章引论 1.1 语言处理器 1.2 一个编译器的结构 1.2.1 词[0法0]分析 1.2.2 语[0法0]分析 1.2.3 语义分析 1.2.4 中间代码生成 1.2.5 代码[0优0]化 1.2.6 代码生成 1.2.7 符号表管理 1.2.8 将多个步骤组合成趟 1.2.9 编译器构造工具 1.3 程序设计语言的发展历程 1.3.1 走向高级程序设计语言 1.3.2 对编译器的影响 1.3.3 1.3节的练习 1.4 构建一个编译器的相关科[0学0] 1.4.1 编译器设计和实现中的建模 1.4.2 代码[0优0]化的科[0学0] 1.5 编译技术的应用 1.5.1 高级程序设计语言的实现 1.5.2 针对计算机体系结构的[0优0]化 1.5.3 新计算机体系结构的设计 1.5.4 程序翻译 1.5.5 软件生产率工具 1.6 程序设计语言基础 1.6.1 静态和动态的区别 1.6.2 环境与状态 1.6.3 静态作用域和块结构 1.6.4 显式访问控制 1.6.5 动态作用域 1.6.6 参数传递机制 1.6.7 别[0名0] 1.6.8 1.6节的练习 1.7 [0第0]1章的总结 1.8 [0第0]1章的参考书目 [0第0]2章 一个简单的语[0法0]制导翻译器 2.1 引言 2.2 语[0法0]定义 2.2.1 文[0法0]定义 2.2.2 推导 2.2.3 语[0法0]分析树 2.2.4 二义性 2.2.5 运算符的结合性 2.2.6 运算符的[0优0]先级 2.2.7 2.2节的练习 2.3 语[0法0]制导翻译 2.3.1 后缀表示 2.3.2 综合属性 2.3.3 简单语[0法0]制导定义 2.3.4 树的遍历 2.3.5 翻译方案 2.3.6 2.3节的练习 2.4 语[0法0]分析 2.4.1 自[0顶0]向下分析方[0法0] 2.4.2 预测分析[0法0] 2.4.3 何时使用产生式 2.4.4 设计一个预测语[0法0]分析器 2.4.5 左递归 2.4.6 2.4节的练习 2.5 简单表达式的翻译器 2.5.1抽象语[0法0]和具体语[0法0] 2.5.2调整翻译方案 2.5.3非终结符号的过程 2.5.4 翻译器的简化 2.5.5 完整的程序 2.6 词[0法0]分析 2.6.1 剔除空白和注释 2.6.2 预读 2.6.3 常量 2.6.4 识别关键字和标识符 2.6.5 词[0法0]分析器 2.6.6 2.6节的练习 2.7 符号表 2.7.1 为每个作用域设置一个符号表 2.7.2 符号表的使用 2.8 中间代码生成 2.8.1 两种中间表示形式 2.8.2 语[0法0]树的构造 2.8.4 三地址码 2.8.5 2.8节的练习 2.9 [0第0]2章的总结 [0第0]3章 词[0法0]分析 3.1 词[0法0]分析器的作用 3.1.1 词[0法0]分析及解析 3.1.2 词[0法0]单元、模式、词素 3.1.3 词[0法0]单元的属性 3.1.4 词[0法0]错误 3.1.5 3.1节的练习 3.2 输入缓冲 3.2.1 缓冲区对 3.2.2 哨兵标记 3.3 词[0法0]单元的规约 3.3.1 串和语言 3.3.2 语言上的运算 3.3.3 正则表达式 3.3.4 正则定义 3.3.5 正则表达式的扩展 3.3.6 3.3节的练习 3.4 词[0法0]单元的识别 3.4.1 状态转换图 3.4.2 保留字和标识符的识别 3.4.3 完成我们的连续性例子 3.4.4 基于状态转换图的词[0法0]分析器的体系结构 3.4.5 3.4节的练习 3.5 词[0法0]分析器生成工具Lex 3.5.1 Lex的使用 3.5.2 Lex程序的结构 3.5.3 Lex中的冲突解决 3.5.4 向前看运算符 3.5.5 3.5节练习 3.6 有穷自动机 3.6.1 不确定的有穷自动机 3.6.2 转换表 3.6.3 NFA接受输入字符串 3.6.4 确定的有穷自动机 3.6.5 3.6节的练习 3.7 从正则表达式到自动机 3.7.1 从NFA到DFA的转换 3.7.2 NFA的模拟 3.7.3 NFA模拟效率 3.7.4 从正则表达式构造NFA 3.7.5 字符串处理算[0法0]的效率 3.7.6 3.7节的练习 3.8 词[0法0]分析器生成工具的设计 3.8.1 被生成的词[0法0]分析器的结构 3.8.2 基于NFA的模式匹配 3.8.3 词[0法0]分析器使用的DFA 3.8.4 实现向前看运算符 3.8.5 3.8的练习 3.9 基于DFA的模式匹配器的[0优0]化 3.9.1 NFA的重要状态 3.9.2 根据抽象语[0法0]树计算得到的函数 3.9.3 计算nullable、first [p1o1s] 及last [p1o1s] 3.9.4 计算follow [p1o1s] 3.9.5 根据正则表达式构建DFA 3.9.6 小化一个DFA的状态数 3.9.7 词[0法0]分析器的状态小化 3.9.8 在DFA模拟中用时间换取空间 3.9.9 3.9节的练习 3.9.10 [0第0]3章的总结 3.11 [0第0]3章参考文献 [0第0]4章 语[0法0]分析 4.1 引论 4.1.1 语[0法0]分析器的角色 4.1.2 代表性的文[0法0] 4.1.3 语[0法0]错误的处理 4.1.4 错误恢复策略 4.2 上下文无关文[0法0] 4.2.1 上下文无关文[0法0]的正式定义 4.2.2 符号表示的惯例 4.2.3 推导 4.2.4 语[0法0]分析树和推导 4.2.5 二义性 4.2.6 验证文[0法0]生成的语言 4.2.7上下文无关文[0法0]和正则表达式 4.2.8 4.2节的练习 4.3 设计文[0法0] 4.3.1 词[0法0]分析和语[0法0]分析 4.3.2 消除二义性 4.3.3 左递归的消除 4.3.4 提取左公因子 4.3.5 非上下文无关的语言构造 4.3.6 4.3节的练习 4.4 自[0顶0]向下的语[0法0]分析 4.4.1 递归下降的语[0法0]分析 4.4.2 FIRST和FOLLOW 4.4.3 LL(1)文[0法0] 4.4.4 非递归的预测分析 4.4.5 预测分析中的错误恢复 4.4.6 4.4节的练习 4.5 自底向上的语[0法0]分析 4.5.1 归约 4.5.2 句柄剪枝 4.5.3 移入-归约语[0法0]分析技术 4.5.4 移入-归约语[0法0]分析中的冲突 4.5.5 4.5节的练习 4.6 LR语[0法0]分析技术介绍:简单LR技术 4.6.1 为什么使用LR语[0法0]分析器? 4.6.2 项和LR(0)自动机 4.6.3 LR-语[0法0]分析算[0法0] 4.6.4 构造SLR-分析表 4.6.5 可行前缀 4.6.6 4.6节的练习 4.7 更强[0大0]的LR语[0法0]分析器 4.7.1 规范LR(1)项 4.7.2 构造LR(1)项集 4.7.3 规范LR(1)分析表 4.7.4 构造LALR语[0法0]分析表 4.7.5 LALR语[0法0]分析表的高效构造方[0法0] 4.7.6 LR语[0法0]分析表的压缩 4.7.7 4.7节的练习 4.8 使用二义性文[0法0] 4.8.1 用[0优0]先级和结合性解决冲突 4.8.2 “悬空-else”二义性 4.8.3 LR语[0法0]分析中的错误恢复 4.8.4 4.8节的练习 4.9 语[0法0]分析器的生成工具 4.9.1 语[0法0]分析器的生成工具Yacc 4.9.2 使用Yacc处理二义性文[0法0] 4.9.3 用Lex创建Yacc的词[0法0]分析器 4.9.4 Yacc中的错误恢复 4.9.5 4.9节的练习 4.10:[0第0]4章的小结 4.11 [0第0]4章的参考文献 [0第0]5章 语[0法0]制导的翻译 5.1 语[0法0]制导定义 5.1.1 继承属性和综合属性 5.1.2 在一棵语[0法0]分析树的结点上对一个SDD求值 5.1.3 5.1节的练习 5.2 SDD的求值顺序 5.2.1 依赖图 5.2.2 属性求值的顺序 5.2.3 S-属性定义 5.2.4 L-属性定义 5.2.5 具有受控副作用的语义规则 5.2.6 5.2节的练习 5.3 语[0法0]制导翻译的应用 5.3.1 抽象语[0法0]树的构造 5.3.2 类型的结构 5.3.3 5.3节的练习 5.4 语[0法0]制导的翻译方案 5.4.1 后缀翻译方案 5.4.2 后缀SDT的语[0法0]分析栈实现 5.4.3 产生式内部带有语义动作的SDT 5.4.4 从SDT中消除左递归 5.4.5 L-属性定义的SDT 5.4.6 5.4节的练习 5.5 实现L-属性的SDD 5.5.1 在递归下降语[0法0]分析过程中进行翻译 5.5.2 边扫描边生成代码 5.5.3 L-属性的SDD和LL语[0法0]分析 5.5.4 L-属性的SDD的自底向上语[0法0]分析 5.5.5 5.5节的练习 5.6 [0第0]5章的总结 5.7 [0第0]5章的参考文献 [0第0]6章 中间代码生成 [0第0]7章 运行时刻环境 [0第0]7章 总结 [0第0]8章 代码生成 [0第0]9章 机器无关[0优0]化 [0第0]10章 指令级并行 [0第0]11章 并行性和局部性的[0优0]化 [0第0]12章 过程间分析 |