《两周自制脚本语言》是一本优秀的编译原理入门读物。全书穿插了大量轻松风趣的对话,读者可以随书中的人物一起从最简单的语言解释器开始,逐步添加新功能,最终完成一个支持函数、数组、对象等高级功能的语言编译器。本书与众不同的实现方式不仅大幅简化了语言处理器的复杂度,还有助于拓展读者的视野。
《两周自制脚本语言》适合对编译原理及语言处理器设计有兴趣的读者以及正在学习相关课程的大中专院校学生。同时,已经学习过相关知识、有一定经验的开发者,也一定能从本书新颖的实现方式中受益良多。
第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
“非常优秀!这绝对是UI设计模式领域最好的书,也是近年来交互设计领域最好的新书之一。本书清楚、简洁、引人入胜,既包括基础知
Delphi程序设计基础与应用 本书特色 本书内容翔实,并采用边讲解边动手操作的教学方式,结合丰富的程序实例,学习轻松、上手容易,并在各章末尾均附有对应本章知识...
《算法之美》内容简介:我们所有人的生活都受到有限空间和有限时间的限制,因此常常面临一系列难以抉择的问题。在一天或者一生的时
《政德论:心理结构与伦理行动的二重维度》内容简介:本书在梳理“政德”内涵的历史演进的基础上,从伦理结构、心理结构和道德领导
《新能源汽车关键部件结构图解手册》内容简介:本书是新能源汽车关键部件的结构图解手册,书中以图示配合文字讲解的方式,介绍了目
《天线理论与设计》(第2版)是W.L.Stutzman和G.A.Thiele所著《天线理论与设计》第2版中的译本。原作者都曾担任IEEE-AP学会主席,
《汉朝大历史》内容简介:汉朝何以成为与西罗马并立的两大帝国?汉朝的大一统局面是如何出现的?汉哀帝的断袖之癖,汉朝与四夷的战
微机原理与接口技术 内容简介 本书是省精品课程教材,依据电子信息科学与电气信息类平台课程教学基本要求编写,以80x86为主,介绍微机原理的基本理论与技术应用。主...
《1936—1941年日本对德同盟政策研究》内容简介:20世纪三四十年代,日本发动的侵华战争给中国社会发展带来了严重影响。从九一八事
《实用推荐系统》内容简介:本书要构建一个实用的“智能”推荐系统,不仅需要有好的算法,还需要了解接收推荐的用户。本书分为两部
《绿色经济发展与政策研究文集》内容简介:本书讨论了绿色增长监测指标体系的构建、家庭消费支出变化与二氧化碳排放量之间的关系,
《阳光穿越地中海》内容简介:阳光明媚、海水湛蓝的地中海是人类文明最重要的发祥地之一。在欧洲大陆还一片蒙昧时,这里就先后有多
"SafetywithMachinery"hasbeenwrittenbyJohnRidleyandDickPearce,bothrecognizedspeci...
BookDescription"ABriefHistoryofTime",publishedin1988,hasbeenalandmarkvolumeinsci...
《快速写实:炭笔素描教程·唯美头像》内容简介:炭笔素描以上色速度快、不易反光、笔色浓黑、黑白灰层次易拉开、画面效果强烈且具
Thedreamofautomaticlanguagetranslationisnowcloserthankstorecentadvancesinthetech...
《超越财富:家族企业的传承与革新》内容简介:无论是欧洲的罗斯柴尔德家族,还是美国的洛克菲勒家族,或者东亚的很多财团,家族企
《通信原理》以有线通信和无线通信为背景,主要介绍通信系统、通信设备的基本概念、原理和技术。《通信原理》的章节体系与实际通
《王安石诗歌研究史稿(两宋时期)》内容简介:本书从研究史的角度,对王安石诗歌在宋代的流传形式及诗文集的编刻整理、王诗注本的
《面向对象的系统分析》(第2版共10章,前3章系统地介绍面向对象方法的基本知识,论述面向对象的分析(OOA)的主要特点和优势,概