| 书[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章 过程间分析 |
| 编辑推荐 |
| 编译[0领0]域里程碑式的经典*作——龙书,20年后终于出版新版!这是一个延绵30年的故事,这是一部关于龙书的传奇!*新版本,增添两章节内容,使龙书地位***! 本书是编译[0领0]域无可替代的经典*作,被广[0大0]计算机专业人士誉为“龙书”。本书上一版自1986年出版以来,被世界各地的*[0名0]高等院校和研究机构,本书为[0第0]2版,书中对每一章都进行了全面的修订,全面介绍了编译器的设计,并强调编译技术在软件设计和开发中的广泛应用。每章中都包含[0大0]量的习题和丰富的参考文献。 |
这本书简直是给我打开了新世界的大门!作为一个对计算机底层运作原理一直充满好奇但又不知从何下手的人,这本书简直是我的救星。龙书这个名字果然名不虚传,它的深度和广度都令人惊叹。初次翻开,那种浩瀚的知识海洋感扑面而来,感觉自己就像一个初生的探险家,站在一片未知的陆地上,渴望去了解这片土地的每一个角落。作者的讲解循序渐进,虽然初看可能会觉得有些晦涩,但当你真正沉下心来,跟着书中的例子一步步推演,你会发现那些复杂的概念逐渐变得清晰起来。尤其是关于词法分析和语法分析的部分,我之前一直觉得这是个黑箱,现在总算有点眉目了。那些正则表达式、有限自动机,还有各种解析树,都让我看到了代码是如何被计算机一步步理解和处理的。而且,书中对各种算法的讲解非常透彻,不仅仅是给出公式,更会解释其背后的思想和适用场景,这一点对于我这种喜欢刨根问底的读者来说,简直是太重要了。读这本书,我感觉自己不仅仅是在学习知识,更是在培养一种严谨的逻辑思维和解决问题的能力。虽然有些章节的难度系数很高,需要反复琢磨,但我坚信,只要坚持下去,我一定能在这条学习之路上有所收获。这本书的出版年份虽然不是最新,但它所阐述的核心原理是永恒的,即使在飞速发展的计算机领域,这些基础知识依然是构建更高级技术的大厦的基石。
评分这本书给我带来的最深刻的感受,是它所蕴含的“工程之美”。在阅读过程中,我仿佛看到了一个庞大的软件工程是如何被精巧地分解、设计和实现的。作者不仅仅关注理论的严谨性,更注重实际应用的可行性和效率。例如,在讲解代码优化部分时,书中不仅介绍了各种优化算法,还讨论了它们在实际编译器中的权衡和取舍,以及如何平衡编译时间和生成代码的质量。这种对工程实践的深刻洞察,让我认识到,编写一个优秀的编译器,需要将理论、算法和工程经验完美地结合起来。书中对各种数据结构的巧妙运用,比如哈希表、树状结构等,也给我留下了深刻的印象,它们是如何被用来高效地存储和管理程序信息的。而且,这本书的逻辑组织非常清晰,每个章节都承接前一个章节的内容,形成一个完整的知识体系,这使得我在学习过程中不会感到碎片化,能够逐步构建起对编译器的整体认知。虽然这本书的篇幅较长,内容也相当丰富,但它所带来的系统性学习体验,绝对是物超所值的。我感觉自己不仅仅是在学习一门技术,更是在学习一种工程思维和解决复杂问题的能力。
评分这本书,与其说是一本技术书籍,不如说是一本关于“思考”的书。在阅读它的过程中,我被迫去思考那些我从未曾深入考虑过的问题:代码究竟是如何被计算机理解的?一个程序从源代码到可执行文件,经历了哪些神奇的蜕变?书中对编译器各个阶段的深入剖析,让我对这些问题的答案有了清晰的认识。它不仅仅是讲解了算法和数据结构,更重要的是,它教会了我如何将复杂的系统进行分解,如何设计清晰的接口,以及如何在不同的约束条件下做出最优的选择。例如,在讲解语法分析的时候,书中对不同解析策略的对比分析,让我明白了选择哪种方法取决于具体的语言特性和工程需求,这是一种非常宝贵的权衡能力。而且,书中对各种错误处理机制的讨论,也让我认识到,一个健壮的编译器,不仅要能够正确地处理合法的输入,还要能够优雅地应对各种错误情况。这本书的阅读过程,更像是一次思维的洗礼,让我对计算机科学有了更深层次的理解,也为我将来从事更复杂的软件开发工作打下了坚实的基础。它让我明白,真正的技术能力,不仅仅在于掌握知识,更在于理解知识背后的原理和思想。
评分坦白说,这本书的难度确实不低,对于没有相关背景知识的读者来说,上手可能会有些挑战。我当初抱着学习的态度开始阅读,但很快就发现,它需要的不仅仅是阅读能力,更需要数学基础和严谨的逻辑思维。特别是关于形式语言和自动机理论的部分,那段时间我感觉自己置身于一个抽象的数学世界,各种定义和定理层出不穷,一度感到有些迷失。然而,当我克服了初期的困难,真正理解了这些理论是如何应用于编译器设计的,那种成就感是难以言喻的。书中的很多例子都非常经典,通过这些例子,我能够将抽象的理论与实际的编程过程联系起来。例如,关于递归下降分析的讲解,我尝试着自己去实现一个简单的语法解析器,虽然过程中遇到了不少问题,但最终成功的那一刻,我感受到了理论转化为实践的巨大魅力。这本书的价值在于它不仅仅是告诉你“是什么”,更是告诉你“为什么”以及“如何做”。它提供了一种解决问题的框架和思路,这种能力不仅仅局限于编译原理,在计算机科学的其他领域同样受用。虽然我还没有完全读完,但已经从中受益匪浅,我正在努力理解书中的每一个细节,希望能将这些宝贵的知识融会贯通。
评分作为一名刚开始接触编译原理这个领域的学生,我被这本书的系统性深深吸引。它提供了一个非常全面且深入的学习路径,从最基础的词法分析,到更复杂的代码优化和目标代码生成,几乎涵盖了编译器的全部生命周期。我特别喜欢书中对各种图的运用,比如控制流图、数据流图等,这些图形化的表示极大地帮助我理解了抽象的概念,使得原本可能枯燥的理论变得生动形象。书中对各种中间代码表示的讲解,比如三地址码、P-code等,也让我对程序在不同阶段的形态有了更直观的认识。而且,作者在讲解每个概念时,都会给出详细的数学推导和算法描述,这对于我这种习惯于理论学习的人来说,无疑是巨大的福音。我能够通过这些严谨的推导,去理解每一个细节的来龙去脉,而不是仅仅停留在表面。虽然有些地方需要反复阅读才能完全消化,但这种深入的讲解方式,让我对编译器的运作机制有了更扎实的理解,也为我将来深入研究编译器设计打下了坚实的基础。这本书不仅仅是一本教材,更像是一个经验丰富的导师,引导我在这个复杂而迷人的领域里探索前行。它让我明白,编写高效、可靠的编译器,背后是多么精巧的设计和精深的理论支撑。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有