Java语言版 编译器构造

编译器构造(Java语言版)【Java语言版 编译器构造】《编译器构造(Java语言版)》是2014年清华大学出版社出版的图书,作者是Anthony J. Dos Reis。
基本介绍书名:编译器构造(Java语言版)
作者:Anthony J. Dos Reis
ISBN:9787302340553
定价:89元
出版社:清华大学出版社
出版时间:2014-3-14
装帧:平装
开本:16开
图书简介编译器是计算机系统最核心最基础的支撑软体之一 。编译器设计原理与技术相关的知识体系,可以体现从电脑程式设计语言到计算机体系结构相对独立的整机概念,又涉及到形式语言与自动机、数据结构与算法等计算机学科的基础理论,还关係到独特的软体设计方法,不愧为联繫计算机科学理论和计算机系统的典範 。正如前辈Alfred V. Aho 和Jeffrey D.Ullman在他们的着作中所提到的,在每一个计算机学者的职业生涯中,都会反覆用到这些原理和技术 。正因为如此,在大多数高等院校的计算机科学与技术专业,编译原理与技术都作为必修的核心专业基础课程之一 。图书目录1.1 概述 11.2 语言的基本概念 11.3 编译器的基本概念 21.4 集合论中的基本概念 41.5 空串 61.6 连线 61.7 指数记法 61.8 星运算符(也称为0次或多次运算符) 71.9 串集合的连线 81.10 加运算符(也称为1次或多次运算符) 91.11 问号运算符(也称为0次或1次运算符) 101.12 包含单独一个串的集合的简便记法 101.13 运算符优先权 111.14 正规表达式 111.15 正则表达式的局限性 13问题 ... 14第2章 上下文无关文法(一) 162.1 概述 162.2 什幺是上下文无关文法 172.3 基于上下文无关文法的推导 182.4 由上下文无关文法定义的语言 192.5 上下文无关文法的不同表示方法 212.6 一些简单文法 222.7 基于上下文无关文法的语言生成技术 252.8 正规文法和右线性文法 302.9 基于正规文法的计数 322.10 表的文法 332.11 一个不是上下文无关的重要语言 38问题 ... 39第3章 上下文无关文法(二) 423.1 概述 423.2 语法分析树 423.3 最左和最右推导 433.4 替换 453.5 二义文法 463.6 确定可致空的非终结符 513.7 消除 ( 产生式 523.8 消除unit产生式 553.9 消除无用非终结符 573.10 递归转换 623.11 增加空串到语言 67问题 ... 68第4章 上下文无关文法(三) 734.1 概述 734.2 算术表达式文法 734.3 文法中结合性和优先权的描述 784.4 Backus-Naur範式 804.5 语法图 824.6 抽象语法树和三地址码 844.7 非收缩文法 854.8 基本非收缩文法 854.9 上下文无关文法到基本非收缩文法的转换 864.10 上下文无关语言的pumping特性 88问题...... 92第5章 Chomsky层次(选讲) 945.1 概述 945.2 上下文有关产生式 955.3 上下文有关文法 965.4 非受限文法 98问题..... 98第6章 自上而下语法分析 1006.1 概述 1006.2 自上而下构造语法分析树 1006.3 失败的语法分析 1026.4 不适合自上而下语法分析的文法 1026.5 确定的语法分析器 1036.6 藉助栈的语法分析器 1046.7 用表来表示栈式语法分析器 1096.8 处理不以终结符领头的产生式 1096.9 用Java写一个栈式语法分析器 110问题..... 117第7章 LL(1)文法 1207.1 概述 1207.2 产生式右端的FIRST集合 1207.3 确定操作序列 1227.4 确定 ( 产生式的选择集合 1247.5 后跟-左端-后跟-最右规则 1277.6 右端可致空的产生式的选择集合 1297.7 包含输入结束符的选择集合 1307.8 针对含lambda产生式文法的栈式语法分析器 1337.9 将非LL(1)文法转换为LL(1)文法 1347.10 用二义文法进行分析 1417.11 计算FIRST和FOLLOW集合 143问题..... 145第8章 表驱动的栈式语法分析器(选讲) 1518.1 概述 1518.2 统一栈式语法分析器的操作 1528.3 实现表驱动的栈式语法分析器 1548.4 表驱动栈式语法分析器的改进 1598.5 不确定的语法分析器--偏向理论的内容(选讲) 160问题..... 162第9章 递归-下降语法分析 1649.1 概述 1649.2 一个简单的递归-下降语法分析器 1649.3 处理lambda产生式 1719.4 一个公共错误 1759.5 产生式的Java代码 1769.6 递归-下降语法分析器中提取左公因子 1779.7 消除尾递归 1829.8 翻译星号、加号和问号算符 1859.9 反向动作 187问题..... 189第10章 递归-下降翻译 192 10.1 概述 19210.2 一个简单的翻译文法 19210.3 转换翻译文法到Java代码 19310.4 翻译文法的描述 19510.5 在语法分析过程中传递信息 20710.6 L-属性文法 21310.7 一个新的单词符号管理器 21410.8 解决单词符号向前一个字元看问题 21710.9 新单词符号管理器的代码 21710.10 前缀表达式编译器的翻译文法 22910.11 趣用递归(选讲) 233问题..... 236第11章 彙编语言 23911.1 概述 23911.2 J1计算机的结构 23911.3 机器语言指令 24011.4 彙编语言指令 24211.5 压入字元 24211.6 aout指令 24311.7 使用标号 24311.8 使用彙编器 24511.9 stav指令 24811.10 编译赋值语句 24911.11 编译print和println 25211.12 输出字元串 25311.13 输入十进制数 25611.14 入口指导语句 25711.15 更多的彙编语言内容 257问题..... 257第12章 一个简单的编译器S1 26112.1 概述 26112.2 源语言 26112.3 源语言的文法 26212.4 目标语言 26312.5 符号表 26412.6 代码生成器 26412.7 token类 26512.8 写出翻译文法 26512.9 实现S1编译器 27212.10 使用S1 28712.11 关于扩展S1编译器的忠告 290?12.11.1 更新单词符号管理器 290?12.11.2 先调试单词符号管理器 291?12.11.3 选择集合 291?12.11.4 使用必要的break语句 291?12.11.5 使用必要的Consume方法调用 291?12.11.6 正确地解释翻译文法 29212.12 对于S2的描述 292问题..... 296第13章 JavaCC(选讲) 30213.1 概述 30213.2 JavaCC中扩展的正规表达式 30313.3 JavaCC输入档案 30813.4 正规表达式动作描述 31513.5 S1j的JavaCC输入档案 31813.6 JavaCC产生的档案 32613.7 使用星号和加号操作 33013.8 选择点和向前看 33313.9 JavaCC的选择算法 338 13.10 语法和语义的向前看描述(选讲) 34213.11 用JavaCC仅生成单词符号管理器 34413.12 使用单词符号链 34613.13 抑制警告信息 349问题..... 350第14章 在S2基础上构造 35414.1 概述 35414.2 扩展println和print 35414.3 级联赋值语句 35914.4 一元加和减 36214.5 readint语句 36514.6 从命令行控制单词符号蹤迹的生成 36514.7 S3的规範 366问题..... 366第15章 编译控制结构 37015.1 概述 37015.2 while语句 37015.3 if语句 37415.4 do-while语句 37715.5 数字常量的範围检查 37815.6 处理字元串中的反斜线-引号 38015.7 用JavaCC处理反斜线(选讲) 38115.8 JavaCC中的全局块(选讲) 38615.9 处理跨行字元串 38815.10 用JavaCC处理跨行字元串(选讲) 38915.11 JavaCC中的SPECIAL_TOKEN块(选讲) 39415.12 错误恢复 39615.13 JavaCC中的错误恢复(选讲) 40015.14 S4的规範 401问题..... 402第16章 编译函式形式的程式 40516.1 概述 40516.2 分别彙编和连线 40516.3 调用函式和从函式返回 40816.4 S5的源语言 41216.5 S5的符号表 41316.6 S5的代码生成器 41516.7 S5的翻译文法 41616.8 与库连线 42716.9 S5规範 42816.10 扩展S5(选讲) 428问题..... 430第17章 有限自动机 43317.1 概述 43317.2 确定有限自动机 43317.3 转换DFA到正规表达式 43517.4 DFA的Java代码 43817.5 非确定有限自动机 44117.6 使用NFA作为一个算法 44317.7 利用子集算法转换NFA到DFA 44417.8 转换DFA到正规文法 44617.9 转换正规文法到NFA 44817.10 转换正规表达式到NFA 44917.11 求出最小的DFA 45217.12 正规语言的泵理论 456问题..... 457第18章 课程设计项目:用编译技术实现grep 46018.1 概述 46018.2 grep程式的正规表达式 461 18.3 针对正规表达式的单词符号管理器 46218.4 正规表达式的文法 46318.5 正规表达式编译器的目标语言 46518.6 用NFA进行模式匹配 471问题..... 474第19章 编译到面向暂存器的结构 47619.1 概述 47619.2 使用暂存器指令集 47719.3 修改R1符号表 47819.4 R1的语法分析器和代码生成器 480问题..... 487第20章 最佳化 48820.1 概述 48820.2 使用ldc指令 48920.3 重用临时变数 49020.4 常量合併 49420.5 暂存器分配 49620.6 窥孔最佳化 498问题..... 502第21章 解释器 50621.1 概述 50621.2 转换S1到I1 50721.3 解释转移控制的语句 51021.4 实现编译:解释器CI1 51221.5 解释器的优点 517问题..... 517第22章 自下而上语法分析 51922.1 概述 51922.2 自下而上语法分析原理 51922.3 语法分析:右递归文法对比左递归文法 52222.4 用二义文法进行自下而上语法分析 52322.5 不归约规则 52622.6 SLR(1)语法分析 52822.7 移进/归约冲突 53322.8 归约/归约冲突 53522.9 LR(1)语法分析 537问题..... 540第23章 yacc 54223.1 概述 54223.2 yacc输入和输出档案 54223.3 一个yacc-生成的简单语法分析器 54323.4 用取值栈传递值 55123.5 对二义文法使用yacc 55623.6 在语法分析树中传递值 55923.7 实现Sly 56023.8 jflex 567问题..... 574附录A 栈指令集 576附录B 暂存器指令集 580参考文献 583