دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
ویرایش: نویسندگان: Alfred V. Aho, Monica S.Lam, Ravi Sethi, Jeffrey D. Ullman سری: 计算机科学丛书 ISBN (شابک) : 9787111251217 ناشر: 机械工业出版社 سال نشر: 2008年12月 تعداد صفحات: 631 [649] زبان: Chinese فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود) حجم فایل: 189 Mb
در صورت تبدیل فایل کتاب 编译原理: 原理、技术与工具 به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب 编译原理: 原理、技术与工具 نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
封面\n书名\n版权\n前言\n目录\n目 录\n 出版者的话\n 专家指导委员会\n 译者序\n 前言\n 第1章编译简介\n 1.1编译器\n 1.1.1编译的分析-综合模型\n 1.1.2编译器的前驱与后继\n 1.2源程序分析\n 1.2.1词法分析\n 1.2.2语法分析\n 1.2.3语义分析\n 1.2.4文本格式器中的分析\n 1.3编译器的各阶段\n 1.3.1符号表管理\n 1.3.2错误检测与报告\n 1.3.3各分析阶段\n 1.3.4中间代码生成\n 1.3.5代码优化\n 1.3.6代码生成\n 1.4编译器的伙伴\n 1.4.1预处理器\n 1.4.2汇编器\n 1.4.3两遍汇编\n 1.4.4装配器和连接编辑器\n 1.5编译器各阶段的分组\n 1.5.1前端与后端\n 1.5.2编译器的遍\n 1.5.3减少编译的遍数\n 1.6编译器的构造工具\n 参考文献注释\n 第2章简单的一遍编译器\n 2.1概述\n 2.2语法定义\n 2.2.1分析树\n 2.2.2二义性\n 2.2.3操作符的结合规则\n 2.2.4操作符的优先级\n 2.3语法制导翻译\n 2.3.1后缀表示\n 2.3.2语法制导定义\n 2.3.3综合属性\n 2.3.4深度优先遍历\n 2.3.5翻译模式\n 2.3.6翻译的输出\n 2.4语法分析\n 2.4.1自顶向下语法分析\n 2.4.2预测分析法\n 2.4.3何时使用∈产生式\n 2.4.4设计一个预测语法分析器\n 2.4.5左递归\n 2.5简单表达式的翻译器\n 2.5.1抽象语法和具体语法\n 2.5.2调整翻译模式\n 2.5.3非终结符expr、term和rest的过程\n 2.5.4翻译器的优化\n 2.5.5完整程序\n 2.6词法分析\n 2.6.1剔除空白符和注释\n 2.6.2常数\n 2.6.3识别标识符和关键字\n 2.6.4词法分析器的接口\n 2.6.5词法分析器\n 2.7符号表\n 2.7.1符号表接口\n 2.7.2处理保留的关键字\n 2.7.3符号表的实现方法\n 2.8抽象堆栈机\n 2.8.1算术指令\n 2.8.2左值和右值\n 2.8.3堆栈操作\n 2.8.4表达式的翻译\n 2.8.5控制流\n 2.8.6语句的翻译\n 2.8.7输出一个翻译\n 2.9技术的综合\n 2.9.1翻译器的描述\n 2.9.2词法分析器模块lexer.c\n 2.9.3语法分析器模块parser.c\n 2.9.4输出模块emitter.c\n 2.9.5符号表模块symbol.c和init.c\n 2.9.6错误处理模块error.c\n 2.9.7编译器的建立\n 2.9.8程序清单\n 练习\n 编程练习\n 参考文献注释\n 第3章词法分析\n 3.1词法分析器的作用\n 3.1.1词法分析中的问题\n 3.1.2记号、模式、词素\n 3.1.3记号的属性\n 3.1.4词法错误\n 3.2输入缓冲\n 3.2.1双缓冲区\n 3.2.2标志\n 3.3记号的描述\n 3.3.1串和语言\n 3.3.2语言上的运算\n 3.3.3正规表达式\n 3.3.4正规定义\n 3.3.5缩写表示法\n 3.3.6非正规集\n 3.4记号的识别\n 3.4.1状态转换图\n 3.4.2状态转换图的实现\n 3.5词法分析器描述语言\n 3.5.1 Lex说明\n 3.5.2超前扫描操作\n 3.6有穷自动机\n 3.6.1不确定的有穷自动机\n 3.6.2确定的有穷自动机\n 3.6.3从NFA到DFA的变换\n 3.7从正规表达式到NFA\n 3.7.1从正规表达式构造NFA\n 3.7.2 NFA的双堆栈模拟\n 3.7.3时间空间的权衡\n 3.8设计词法分析器的生成器\n 3.8.1基于NFA的模式匹配\n 3.8.2词法分析器的DFA\n 3.8.3实现超前扫描操作\n 3.9基于DFA的模式匹配器的优化\n 3.9.1 NFA的重要状态\n 3.9.2从正规表达式到DFA\n 3.9.3最小化DFA的状态数\n 3.9.4词法分析器的状态最小化\n 3.9.5表压缩方法\n 练习\n 编程练习\n 参考文献注释\n 第4章语法分析\n 4.1语法分析器的作用\n 4.1.1语法错误的处理\n 4.1.2错误恢复策略\n 4.2上下文无关文法\n 4.2.1符号的使用约定\n 4.2.2推导\n 4.2.3分析树和推导\n 4.2.4二义性\n 4.3文法的编写\n 4.3.1正规表达式和上下文无关文法的比较\n 4.3.2验证文法所产生的语言\n 4.3.3消除二义性\n 4.3.4消除左递归\n 4.3.5提取左因子\n 4.3.6非上下文无关语言的结构\n 4.4自顶向下语法分析\n 4.4.1递归下降语法分析法\n 4.4.2预测语法分析器\n 4.4.3预测语法分析器的状态转换图\n 4.4.4非递归的预测分析\n 4.4.5 FIRST和FOLLOW\n 4.4.6预测分析表的构造\n 4.4.7 LL(1)文法\n 4.4.8预测分析的错误恢复\n 4.5自底向上语法分析\n 4.5.1句柄\n 4.5.2句柄裁剪\n 4.5.3用栈实现移动归约分析\n 4.5.4活前缀\n 4.5.5移动归约分析过程中的冲突\n 4.6算符优先分析法\n 4.6.1使用算符优先关系\n 4.6.2从结合律和优先级获得算符优先关系\n 4.6.3处理一元操作符\n 4.6.4优先函数\n 4.6.5算符优先分析中的错误恢复\n 4.7 LR语法分析器\n 4.7.1 LR语法分析算法\n 4.7.2 LR文法\n 4.7.3构造SLR语法分析表\n 4.7.4构造规范LR语法分析表\n 4.7.5构造LALR语法分析表\n 4.7.6 LALR语法分析表的有效构造方法\n 4.7.7 LR语法分析表的压缩\n 4.8二义文法的应用\n 4.8.1使用优先级和结合规则来解决分析动作的冲突\n 4.8.2悬空else的二义性\n 4.8.3特例产生式引起的二义性\n 4.8.4LR语法分析中的错误恢复\n 4.9语法分析器的生成器\n 4.9.1语法分析器的生成器Yacc\n 4.9.2用Yacc处理二义文法\n 4.9.3用Lex建立Yacc的词法分析器\n 4.9.4 Yacc的错误恢复\n 练习\n 参考文献注释\n 第5章语法制导翻译\n 5.1语法制导定义\n 5.1.1语法制导定义的形式\n 5.1.2综合属性\n 5.1.3继承属性\n 5.1.4依赖图\n 5.1.5计算顺序\n 5.2语法树的构造\n 5.2.1语法树\n 5.2.2构造表达式的语法树\n 5.2.3构造语法树的语法制导定义\n 5.2.4表达式的无环有向图\n 5.3自底向上计算S属性定义\n 5.4 L属性定义\n 5.4.1 L属性定义\n 5.4.2翻译模式\n 5.5自顶向下翻译\n 5.5.1从翻译模式中消除左递归\n 5.5.2预测翻译器的设计\n 5.6自底向上计算继承属性\n 5.6.1删除嵌入在翻译模式中的动作\n 5.6.2分析栈中的继承属性\n 5.6.3模拟继承属性的计算\n 5.6.4用综合属性代替继承属性\n 5.6.5一个难计算的语法制导定义\n 5.7递归计算\n 5.7.1从左到右遍历\n 5.7.2其他遍历方法\n 5.8编译时属性值的空间分配\n 5.8.1在编译时为属性分配空间\n 5.8.2避免复制\n 5.9编译器构造时的空间分配\n 5.9.1从文法中预知生存期\n 5.9.2不相重叠的生存期\n 5.10语法制导定义的分析\n 5.10.1属性的递归计算\n 5.10.2强无环的语法制导定义\n 5.10.3环形检测\n 练习\n 参考文献注释\n 第6章类型检查\n 6.1类型系统\n 6.1.1类型表达式\n 6.1.2类型系统\n 6.1.3静态和动态类型检查\n 6.1.4错误恢复\n 6.2一个简单的类型检查器的说明\n 6.2.1一种简单语言\n 6.2.2表达式的类型检查\n 6.2.3语句的类型检查\n 6.2.4函数的类型检查\n 6.3类型表达式的等价\n 6.3.1类型表达式的结构等价\n 6.3.2类型表达式的名字\n 6.3.3类型表示中的环\n 6.4类型转换\n 6.5函数和运算符的重载\n 6.5.1子表达式的可能类型的集合\n 6.5.2缩小可能类型的集合\n 6.6多态函数\n 6.6.1为什么要使用多态函数\n 6.6.2类型变量\n 6.6.3包含多态函数的语言\n 6.6.4代换、实例和合一\n 6.6.5多态函数的检查\n 6.7合一算法\n 练习\n 参考文献注释\n 第7章运行时环境\n 7.1源语言问题\n 7.1.1过程\n 7.1.2活动树\n 7.1.3控制栈\n 7.1.4声明的作用域\n 7.1.5名字的绑定\n 7.1.6一些问题\n 7.2存储组织\n 7.2.1运行时内存的划分\n 7.2.2活动记录\n 7.2.3编译时的局部数据布局\n 7.3存储分配策略\n 7.3.1静态存储分配\n 7.3.2栈式存储分配\n 7.3.3悬空引用\n 7.3.4堆式存储分配\n 7.4对非局部名字的访问\n 7.4.1程序块\n 7.4.2无嵌套过程的词法作用域\n 7.4.3包含嵌套过程的词法作用域\n 7.4.4动态作用域\n 7.5参数传递\n 7.5.1传值调用\n 7.5.2引用调用\n 7.5.3复制-恢复\n 7.5.4传名调用\n 7.6符号表\n 7.6.1符号表表项\n 7.6.2名字中的字符\n 7.6.3存储分配信息\n 7.6.4符号表的线性表数据结构\n 7.6.5散列表\n 7.6.6表示作用域的信息\n 7.7支持动态存储分配的语言措施\n 7.7.1垃圾单元\n 7.7.2悬空引用\n 7.8动态存储分配技术\n 7.8.1固定块的显式分配\n 7.8.2变长块的显式分配\n 7.8.3隐式存储释放\n 7.9 Fortran语言的存储分配\n 7.9.1 COMMON域中的数据\n 7.9.2一个简单的等价算法\n 7.9.3 Fortran语言的等价算法\n 7.9.4映射数据区\n 练习\n 参考文献注释\n 第8章中间代码生成\n 8.1中间语言\n 8.1.1图表示\n 8.1.2三地址码\n 8.1.3三地址语句的类型\n 8.1.4语法制导翻译生成三地址码\n 8.1.5三地址语句的实现\n 8.1.6表示方法比较:间址的使用\n 8.2声明语句\n 8.2.1过程中的声明语句\n 8.2.2跟踪作用域信息\n 8.2.3记录中的域名\n 8.3赋值语句\n 8.3.1符号表中的名字\n 8.3.2临时名字的重用\n 8.3.3寻址数组元素\n 8.3.4数组元素寻址的翻译模式\n 8.3.5赋值语句中的类型转换\n 8.3.6记录域的访问\n 8.4布尔表达式\n 8.4.1翻译布尔表达式的方法\n 8.4.2数值表示\n 8.4.3短路代码\n 8.4.4控制流语句\n 8.4.5布尔表达式的控制流翻译\n 8.4.6混合模式的布尔表达式\n 8.5 case语句\n 8.6回填\n 8.6.1布尔表达式\n 8.6.2控制流语句\n 8.6.3翻译的实现方案\n 8.6.4标号和goto\n 8.7过程调用\n 8.7.1调用序列\n 8.7.2一个简单的例子\n 练习\n 参考文献注释\n 第9章代码生成\n 9.1代码生成器设计中的问题\n 9.1.1代码生成器的输入\n 9.1.2目标程序\n 9.1.3存储管理\n 9.1.4指令选择\n 9.1.5寄存器分配\n 9.1.6计算次序的选择\n 9.1.7代码生成方法\n 9.2目标机器\n 9.3运行时存储管理\n 9.3.1静态分配\n 9.3.2栈式分配\n 9.3.3名字的运行地址\n 9.4基本块和流图\n 9.4.1基本块\n 9.4.2基本块的变换\n 9.4.3保结构变换\n 9.4.4代数变换\n 9.4.5流图\n 9.4.6基本块的表示\n 9.4.7循环\n 9.5下次引用信息\n 9.5.1计算下次引用信息\n 9.5.2临时名字的存储分配\n 9.6一个简单的代码生成器\n 9.6.1寄存器描述符和地址描述符\n 9.6.2代码生成算法\n 9.6.3函数getreg\n 9.6.4为其他类型的语句生成代码\n 9.6.5条件语句\n 9.7寄存器分配与指派\n 9.7.1全局寄存器分配\n 9.7.2引用计数\n 9.7.3外层循环的寄存器指派\n 9.7.4图染色法寄存器分配\n 9.8基本块的dag表示法\n 9.8.1 dag的构造\n 9.8.2 dag的应用\n 9.8.3数组、指针和过程调用\n 9.9窥孔优化\n 9.9.1冗余加载与保存\n 9.9.2不可达代码\n 9.9.3控制流优化\n 9.9.4代数化简\n 9.9.5强度削弱\n 9.9.6机器语言的使用\n 9.10从dag生成代码\n 9.10.1重排序\n 9.10.2对dag的启发式排序\n 9.10.3树的最优排序\n 9.10.4标记算法\n 9.10.5从标记树中产生代码\n 9.10.6多寄存器操作\n 9.10.7代数性质\n 9.10.8公共子表达式\n 9.11动态规划代码生成算法\n 9.11.1一种寄存器计算机\n 9.11.2动态规划的原理\n 9.11.3邻近计算\n 9.11.4动态规划算法\n 9.12代码生成器的生成器\n 9.12.1采用重写树技术的代码生成\n 9.12.2借助语法分析的模式匹配\n 9.12.3用于语义检查的例程\n 练习\n 参考文献注释\n 第10章代码优化\n 10.1引言\n 10.1.1代码改进变换的准则\n 10.1.2性能的提高\n 10.1.3优化编译器的组织\n 10.2优化的主要种类\n 10.2.1保持功能变换\n 10.2.2公共子表达式\n 10.2.3复制传播\n 10.2.4无用代码删除\n 10.2.5循环优化\n 10.2.6代码外提\n 10.2.7归纳变量和强度削弱\n 10.3基本块的优化\n 10.4流图中的循环\n 10.4.1支配节点\n 10.4.2自然循环\n 10.4.3内循环\n 10.4.4前置首节点\n 10.4.5可约流图\n 10.5全局数据流分析介绍\n 10.5.1点和路径\n 10.5.2到达定义\n 10.5.3结构化程序的数据流分析\n 10.5.4对数据流信息的保守估计\n 10.5.5 in和out的计算\n 10.5.6处理循环\n 10.5.7集合的表示\n 10.5.8局部到达定义\n 10.5.9引用-定义链\n 10.5.10计算顺序\n 10.5.11一般控制流\n 10.6数据流方程的迭代解\n 10.6.1到达定义的迭代算法\n 10.6.2可用表达式\n 10.6.3活跃变量分析\n 10.6.4定义-引用链\n 10.7代码改进变换\n 10.7.1全局公共子表达式删除\n 10.7.2复制传播\n 10.7.3循环不变计算的检测\n 10.7.4代码外提\n 10.7.5可选的代码外提方案\n 10.7.6代码外提后对数据流信息的维护\n 10.7.7归纳变量删除\n 10.7.8带有循环不变表达式的归纳变量\n 10.8处理别名\n 10.8.1一种简单的指针语言\n 10.8.2指针赋值的作用\n 10.8.3利用指针信息\n 10.8.4过程间的数据流分析\n 10.8.5带有过程调用的代码模型\n 10.8.6别名的计算\n 10.8.7存在过程调用时的数据流分析\n 10.8.8 change信息的用途\n 10.9结构化流图的数据流分析\n 10.9.1深度优先搜索\n 10.9.2流图的深度优先表示中的边\n 10.9.3流图的深度\n 10.9.4区间\n 10.9.5区间划分\n 10.9.6区间图\n 10.9.7节点分裂\n 10.9.8 T1-T2分析\n 10.9.9区域\n 10.9.10寻找支配节点\n 10.10高效数据流算法\n 10.10.1迭代算法中的深度优先顺序\n 10.10.2基于结构的数据流分析\n 10.10.3对基于结构的算法的一些速度上的改进\n 10.10.4处理不可约流图\n 10.11一个数据流分析工具\n 10.11.1数据流分析框架\n 10.11.2数据流分析框架的公理\n 10.11.3单调性和分配性\n 10.11.4数据流问题的聚合路径解\n 10.11.5流问题的保守解\n 10.11.6通用框架的迭代算法\n 10.11.7一个数据流分析工具\n 10.11.8算法10.18的性质\n 10.11.9算法10.18的收敛性\n 10.11.10初始化的修正\n 10.12类型估计\n 10.12.1处理无穷类型集\n 10.12.2一个简单的类型系统\n 10.12.3前向方案\n 10.12.4后向方案\n 10.13优化代码的符号调试\n 10.13.1基本块中变量值的推断\n 10.13.2全局优化的影响\n 10.1 3.3归纳变量删除\n 10.13.4全局公共子表达式删除\n 10.13.5代码外提\n 练习\n 参考文献注释\n 第11章编写一个编译器\n 11.1编译器设计\n 11.1.1源语言问题\n 11.1.2目标语言问题\n 11.1.3性能标准\n 11.2编译器开发方法\n 11.3编译器开发环境\n 11.4测试与维护\n 第12章编译器实例\n 12.1数学排版预处理器EQN\n 12.2 Pascal编译器\n 12.3 C编译器\n 12.4 Fortran H编译器\n 12.4.1 Fortran H中的代码优化\n 12.4.2代数优化\n 12.4.3寄存器优化\n 12.5 BLISS/1 1编译器\n 12.6 Modula-2优化编译器\n 附录一个程序设计项目\n 参考文献\n 索引