《两周自制脚本语言》是一本优秀的编译原理入门读物。全书穿插了大量轻松风趣的对话,读者可以随书中的人物一起从最简单的语言解释器开始,逐步添加新功能,最终完成一个支持函数、数组、对象等高级功能的语言编译器。本书与众不同的实现方式不仅大幅简化了语言处理器的复杂度,还有助于拓展读者的视野。
《两周自制脚本语言》适合对编译原理及语言处理器设计有兴趣的读者以及正在学习相关课程的大中专院校学生。同时,已经学习过相关知识、有一定经验的开发者,也一定能从本书新颖的实现方式中受益良多。
第1部分 基础篇
第1天 来,我们一起做些什么吧1
1.1 机器语言与汇编语言2
1.2 解释器与编译器3
1.3 开发语言处理器5
1.4 语言处理器的结构与本书的框架6
第2天 设计程序设计语言10
2.1 麻雀虽小、五脏俱全的程序设计语言11
2.2 句尾的分号12
2.3 含糊不得的语言14
第3天 分割单词17
3.1 Token对象18
3.2 通过正则表达式定义单词19
3.3 借助java.util.regex设计词法分析器22
3.4 词法分析器试运行27
第4天 用于表示程序的对象30
4.1 抽象语法树的定义31
4.2 设计节点类34
4.3 BNF38
4.4 语法分析与抽象语法树42
第5天 设计语法分析器44
5.1 Stone语言的语法45
5.2 使用解析器与组合子46
5.3 由语法分析器生成的抽象语法树53
5.4 测试语法分析器59
第6天 通过解释器执行程序62
6.1 eval方法与环境对象63
6.2 各种类型的eval方法65
6.3 关于GluonJ69
6.4 执行程序72
第7天 添加函数功能75
7.1 扩充语法规则76
7.2 作用域与生存周期81
7.3 执行函数83
7.4 计算斐波那契数89
7.5 为闭包提供支持90
7.6 实现闭包92
第8天 关联Java语言95
8.1 原生函数96
8.2 编写使用原生函数的程序98
第9天 设计面向对象语言101
9.1 设计用于操作类与对象的语法102
9.2 实现类所需的语法规则103
9.3 实现eval方法104
9.4 通过闭包表示对象110
9.5 运行包含类的程序114
第10天 无法割舍的数组115
10.1 扩展语法分析器116
10.2 仅通过修改器来实现数组119
第2部分 性能优化篇
第11天 优化变量读写性能123
11.1 通过简单数组来实现环境124
11.2 用于记录全局变量的环境127
11.3 事先确定变量值的存放位置130
11.4 修正eval方法并最终完成性能优化134
第12天 优化对象操作性能137
12.1 减少内存占用138
12.2 能否通过事先查找变量的保存位置来优化性能141
12.3 定义lookup方法144
12.4 整合所有修改并执行147
12.5 内联缓存152
第13天 设计中间代码解释器156
13.1 中间代码与机器语言157
13.2 Stone虚拟机158
13.3 通过栈实现环境167
13.4 寄存器的使用170
13.5 引用变量的值173
13.6 if语句与while语句173
13.7 函数的定义与调用175
13.8 转换为虚拟机器语言177
13.9 通过虚拟机执行184
第14天 为Stone语言添加静态类型支持以优化性能187
14.1 指定变量类型188
14.2 通过数据类型检查发现错误193
14.3 运行程序时执行类型检查204
14.4 对类型省略的变量进行类型推论208
14.5 Java二进制代码转换214
14.6 综合所有修改再次运行程序226
第3部分 解说篇(自习时间)
第15天 手工设计词法分析器 229
15.1 修改自动机230
15.2 自动机程序233
15.3 正则表达式的极限235
第16天 语法分析方式236
16.1 正则表达式与BNF237
16.2 语法分析算法238
16.3 LL语法分析239
16.4 算符优先分析法与自底向上语法分析244
第17天 Parser库的内部结构251
17.1 组合子分析252
17.2 解析器组合子的内部252
第18天 GluonJ的使用方法263
18.1 设定类路径264
18.2 启动设定265
18.3 GluonJ语言267
18.4 功能总结268
第19天 抽象语法树与设计模式271
19.1 理想的设计272
19.2 Interpreter模式273
19.3 Visitor模式276
19.4 使用反射282
19.5 面向切面语言284
Scikit-Learn与TensorFlow机器学习实用指南 本书特色 TensorFlow是一个采用数据流图(data flow graphs),用于数值计...
《写给大忙人看的Java核心技术》为经典著作CoreJava作者CayS.Horstmann的全新力作,以关键的核心技术为着眼点,以全局高度提炼语
《东京审判》内容简介:第二次世界大战结束后,从1946年5月3日至1948年11月12日,在日本东京进行了历时两年零六个月的“世纪大审判
《Java EE互联网轻量级框架整合开发》内容简介:随着移动互联网的兴起,以Java技术为后台的互联网技术占据了市场的主导地位,而在J
Learningprofessionalsarefindingsuccessapplyinggame-basedsensibilitiestothedevelo...
《神一样的产品经理》内容简介:《神一样的产品经理:基于移动与互联网产品实践》系统阐述了移动与互联网产品从无到有、从有到优的
《程序员必会的40种算法》内容简介:本书致力于利用算法求解实际问题。第1部分介绍算法的核心内容,探讨什么是算法、如何设计算法,
Buildadjangocontentmanagementsystem,blog,andsocialnetworkingsitewithJamesBennett...
《黑洞旅行指南》内容简介:这本引人入胜的科普小书解读了当代科学里极具挑战性的现象—黑洞,它也是我们理解整个宇宙的方向标。在
《我们的第一个十年》内容简介:从校园到职场,抑或到政坛、到商海,曾经朝夕相处的同窗走出了不同的人生轨迹。这里有在基层默默奋
《老"码"识途:从机器码到框架的系统观逆向修炼之路》以逆向反汇编为线索,自底向上,从探索者的角度,原生态地刻画了对系统机制的
《牛虻》内容简介:故事背景设定在19世纪40年代干电地利络治下的意大利,描写了意大利革命党人牛虻为争取民族解放而奋斗的一生。全
本书初版于1983年,是20世纪80年代轰动知识界的“走向未来丛书”之一种。作者采用中西对比的视角,探讨了近代科学技术结构发展的
《所谓好管理,就是精准执行》内容简介:本书执行力决定了团队的生死存亡,决定了团队是否能够发展壮大,更决定了管理者的价值。如
《中国哲学十讲》内容简介:《中国哲学十讲》是我国近代著名哲学家李石岑先生的代表作之一,也是在“中西比较”框架下进行中国哲学
《新四书与新儒学》内容简介:儒家的仁义思想不只是由仁而义,还包括由义而仁,前者是孟子的“居仁由义”,是由道德而政治,后者是
电商、O2O、P2P、互联网金融等概念先是被疯狂追捧,在泡沫越吹越大之后便是哀鸿遍野。这本书正是解答泡沫破灭之后怎么办?自从以
信息技术和电气工程学科国际知名教材中译本系列。目录 译者的话原序第1章引言1.1无线通信时代的到来1.2蜂窝革命1.3全球蜂窝网络
《建筑是什么》内容简介:《建筑是什么:关于当今中国建筑的思考》对近年建筑及房地产业的业内热点问题进行评论,反思当今中国建筑
《第一推动丛书·综合系列:控制论》内容简介:这是一本阐述控制论的理论和它在各方面应用的综合性、概论性的书。作者维纳是控制论