软件下载站,为您提供安全的软件下载!

当前位置:首页 > 电脑专区 > 应用软件 > 电子阅读 > 自制编译器-([日]青木峰郎著pdf高清扫描完整版

自制编译器-([日]青木峰郎著pdf高清扫描完整版

分享到:
自制编译器2016年6月由人民邮电出版社出版发行,小编分享的这本书将带领读者从头开始制作一门语言的编译器。笔者特意为本书设计了C?语言,C?可以说是C?语言的子集,实现了包括指针运算等在内的C语言的主要部分。本书所实现的编译器就是C?语言的编译器,是实实在在的编译器,而非有诸多限制的玩具。另外,除编译器之外,自制编译器对以编译器为中心的编程语言的运行环境,即编译器、汇编器、链接器、硬件、运行时环境等都有所提及,介绍了程序运行的所有环节。从单纯对编译器感兴趣的读者到以实用为目的的读者,都适合阅读这本书。
自制编译器

作者/译者简介:

青木峰郎(作者)
程序员,著有《Ruby程序设计268技(第2版)》《Ruby源代码完全解说》《Linux程序设计》等多部编程相关著作,并积极参与标准库维护、文档维护等各种各样的活动。
严圣逸(译者)
毕业于上海交通大学。8年软件开发经验,期间赴日本工作。现就职于想能信息科技(上海)有限公司,从事基于云平台的客户关系管理及各类营销自动化系统的开发工作。译有《高效团队开发:工具与方法》。
绝云(译者)
毕业于清华大学软件学院。曾在日本创意公司KAYAC从事即时通信软件及社交游戏的开发工作,现任蚂蚁金服前端架构专家。译有《写给大家看的算法书》等图书,曾参与《像外行一样思考,像专家一样实践(修订版)》的审校。

自制编译器目录:

第1章 开始制作编译器 1
第2章C和cbc 13
第3章 语法分析的概要 24
3.1 语法分析的方法 25
代码分析中的问题点 25
代码分析的一般规律 25
词法分析、语法分析、语义分析 25
扫描器的动作 26
单词的种类和语义值 27
token 28
抽象语法树和节点 29
3.2 解析器生成器 30
什么是解析器生成器 30
解析器生成器的种类 30
解析器生成器的选择 31
3.3 JavaCC的概要 33
什么是JavaCC 33
语法描述文件 33
语法描述文件的例子 34
运行JavaCC 35
启动JavaCC所生成的解析器 36
中文的处理 37
第4章 词法分析 39
4.1 基于JavaCC的扫描器的描述 40
本章的目的 40
JavaCC的正则表达式 40
固定字符串 41
连接 41
字符组 41
排除型字符组 41
重复1次或多次 42
重复0次或多次 42
重复n次到m次 42
正好重复n次 43
可以省略 43
选择 43
4.2 扫描没有结构的单词 44
TOKEN命令 44
扫描标识符和保留字 44
选择匹配规则 45
扫描数值 46
4.3 扫描不生成token的单词 48
SKIP命令和SPECIAL_TOKEN命令 48
跳过空白符 48
跳过行注释 49
4.4 扫描具有结构的单词 50
最长匹配原则和它的问题 50
基于状态迁移的扫描 50
MORE命令 51
跳过块注释 52
扫描字符串字面量 53
扫描字符字面量 53
第5章 基于JavaCC的解析器的描述 55
5.1 基于EBNF语法的描述 56
本章的目的 56
基于JavaCC的语法描述 56
终端符和非终端符 57
JavaCC的EBNF表示法 58
连接 58
重复0次或多次 59
重复1次或多次 59
选择 60
可以省略 60
5.2 语法的二义性和token的超前扫描 61
语法的二义性 61
JavaCC的局限性 62
提取左侧共通部分 63
token的超前扫描 63
可以省略的规则和冲突 64
重复和冲突 65
更灵活的超前扫描 66
超前扫描的相关注意事项 66
第6章 语法分析 68
6.1 定义的分析 69
表示程序整体的符号 69
语法的单位 69
import声明的语法 70
各类定义的语法 71
变量定义的语法 72
函数定义的语法 73
结构体定义和联合体定义的语法 74
结构体成员和联合体成员的语法 75
typedef语句的语法 76
类型的语法 76
C语言和C?在变量定义上的区别 77
基本类型的语法 77
6.2 语句的分析 79
语句的语法 79
if语句的语法 80
省略if语句和大括号 80
while语句的语法 81
for语句的语法 81
各类跳转语句的语法 82
6.3 表达式的分析 83
表达式的整体结构 83
expr的规则 83
条件表达式 84
二元运算符 85
6.4 项的分析 88
项的规则 88
前置运算符的规则 88
后置运算符的规则 89
字面量的规则 89
第2部分 抽象语法树和中间代码
第7章 JavaCC的action和抽象语法树 92
7.1 JavaCC的action 93
本章的目的 93
简单的action 93
执行action的时间点 93
返回语义值的action 95
获取终端符号的语义值 95
Token类的属性 96
获取非终端符号的语义值 98
语法树的结构 99
选择和action 99
重复和action 100
本节总结 102
7.2 抽象语法树和节点 103
Node类群 103
Node类的定义 105
抽象语法树的表示 105
基于节点表示表达式的例子 107
第8章 抽象语法树的生成 110
8.1 表达式的抽象语法树 111
字面量的抽象语法树 111
类型的表示 112
为什么需要TypeRef类 113
一元运算的抽象语法树 114
二元运算的抽象语法树 116
条件表达式的抽象语法树 117
赋值表达式的抽象语法树 118
8.2 语句的抽象语法树 121
if语句的抽象语法树 121
while语句的抽象语法树 122
程序块的抽象语法树 123
8.3 声明的抽象语法树 125
变量声明列表的抽象语法树 125
函数定义的抽象语法树 126
表示声明列表的抽象语法树 127
表示程序整体的抽象语法树 128
外部符号的import 128
总结 129
8.4 cbc 的解析器的启动 132
Parser对象的生成 132
文件的解析 133
解析器的启动 134
第9章 语义分析(1)引用的消解 135
9.1 语义分析的概要 136
本章目的 136
抽象语法树的遍历 137
不使用Visitor模式的抽象语法树的处理 137
基于Visitor模式的抽象语法树的处理 138
Vistor模式的一般化 140
cbc中Visitor模式的实现 141
语义分析相关的cbc的类 142
9.2 变量引用的消解 144
问题概要 144
实现的概要 144
Scope树的结构 145
LocalResolver类的属性 146
LocalResolver类的启动 146
变量定义的添加 147
函数定义的处理 148
pushScope方法 149
currentScope方法 149
popScope方法 150
添加临时作用域 150
建立VariableNode和变量定义的关联 151
从作用域树取得变量定义 151
9.3 类型名称的消解 153
问题概要 153
实现的概要 153
TypeResolver类的属性 153
TypeResolver类的启动 154
类型的声明 154
类型和抽象语法树的遍历 155
变量定义的类型消解 156
函数定义的类型消解 157
第10章 语义分析(2)静态类型检查 159
第11章 中间代码的转换 178
第12章 x86架构的概要 214
第13章 x86汇编器编程 236
第14章 函数和变量 266
第15章 编译表达式和语句 278
第16章 分配栈帧 308
第17章 优化的方法 333
第18章 生成目标文件 346
第19章 链接和库 369
第20章 加载程序 387
第21章 生成地址无关代码 410
第22章 扩展阅读 434
附 录 441
A.1 参考文献 442
A.2 在线资料 444
A.3 源代码 445

免责声明:

来源于网络,仅用于分享知识,学习和交流!请下载完在24小时内删除。
禁用于商业用途!如果您喜欢《自制编译器》,请购买正版,谢谢合作。
爱学习,请到3322软件站查找资源自行下载!

下载说明:

方法一:
1、下载并解压,得出pdf文件
2、如果打不开本文件,别着急,这时候请务必在3322软件站选择一款阅读器下载哦
3、安装后,再打开解压得出的pdf文件
4、以上都完成后,接下来双击进行阅读就可以啦,朋友们开启你们的阅读之旅吧。
方法二:
1、可以在手机里下载3322软件站中的阅读器和百度网盘
2、接下来直接将pdf传输到百度网盘
3、用阅读器打开即可阅读
展开更多

软件截图

自制编译器-([日]青木峰郎著pdf高清扫描完整版下载地址

下载提示

自制编译器-([日]青木峰郎著pdf高清扫描完整版

正在下载...

扫描二维码,手机下载APP

软件下载站本地下载

相关文章