《两周自制脚本语言》是一本优秀的编译原理入门读物。全书穿插了大量轻松风趣的对话,读者可以随书中的人物一起从最简单的语言解释器开始,逐步添加新功能,最终完成一个支持函数、数组、对象等高级功能的语言编译器。本书与众不同的实现方式不仅大幅简化了语言处理器的复杂度,还有助于拓展读者的视野。
《两周自制脚本语言》适合对编译原理及语言处理器设计有兴趣的读者以及正在学习相关课程的大中专院校学生。同时,已经学习过相关知识、有一定经验的开发者,也一定能从本书新颖的实现方式中受益良多。
第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
《中东非阿拉伯国家智库研究》内容简介:本书对中东地区的三个非阿拉伯国家以色列、土耳其和伊朗的智库发展及对各国对外政策和中东
《走过星空遇到黑洞》内容简介:系列教材分为萌芽班、初级班、中级班和高级班四个阶层。中级班的内容主要是提高学生们对天文学知识
ActionScript3.0是一种功能强大的面向对象编程语言。本书分五大部分全面讲解ActionScript3.0动画。第一部分介绍了ActionScript...
《世界级城市群视阈下的天津发展》内容简介:近年来,世界级城市群在区域经济中的功能不断扩展、地位迅速提升,对国家经济增长和世
《ActionScript3.0精彩范例词典》列出了最常用的ActionScript语法,并附有详细的程序代码范例,不但教您如何使用、修改ActionScr
离散数学 本书特色 本书特色:以教育部计算机科学与技术教学指导委员会制订的计算机科学与技术专业规范为指导,内容涵盖计算机科学技术中常用离散结构的数学基础。紧密围...
《小学生同步作文(一、二年级)》内容简介:“名师教你写作文·思维导图系列”丛书是一套集思维导图、形象记忆图、趣味漫画为一体
《世界顶级时尚品牌&平面设计》的核心是分析23个印刷、颜色选择、展出请柬、网站、香水、化妆品案例,同时探讨时尚设计者和平面设
《从公司到国家:美国制度困局的历史解释》内容简介:本书通过对美国制度的建立进行探源与复盘,提出了美国是“公司型国家”的观点
《如厕书》内容简介:31个发生在厕所的神奇小故事,一部充满想象力的短篇小说集! 家庭主妇销毁偷吃证据,职员被困马桶尴尬时刻,甚
《齐白石鱼虫册》内容简介:“南山册页”是浙江摄影出版社自主选编的一套名家册页小品集,以散页函套的装帧形式出版,题材集中于历
通用软件服装CAD 内容简介 《通用软件服装CAD》是一部计算机软件应用技术专著,本书既可用于高等学校服装专业教学,也可以指导服装设计与生产。本书详细研究探讨了...
《马云商道真经》内容简介:《马云商道真经》从马云对人生的认识、以及他超出常人的"狂妄",创业精神、团队合作、经营理念、企业管
在这本新书《实现模式》里面,KentBeck将自己多年形成的编程习惯以及阅读既有代码的体验凝练成了编程中的价值观、原则和77种实现
网上开店装饰秘技 本书特色 王红卫等编著的《网上开店装饰秘技(附光盘)》以*新版的photoshopcs6中文版为工具,详细讲解了photoshop在网上店铺装...
Excel VBA实用教程 本书特色 胡建华、楼吉林主编的《excel vba实用教程(高等院校计算机技术与应用系列规划教材)》共分为八章,主要内容包括vba概...
《上市公司股价崩盘风险研究》内容简介:“股价崩盘风险”是近年来财务学研究的一个热点问题。资本市场的有效运行关系到一国经济、
电子商务技术基础-(第2版) 本书特色 《电子商务技术基础》(第2版)可作为高等院校电子商务、信息管理、计算机应用、国际贸易类专业本科生或研究生的教材或教学参考...
锋利的jQuery.第2版 本书特色 《锋利的jQuery(第2版)》是《锋利的jQuery》全新升级版,例子采用全新的UI,代码更符合语义化;增加jQuery...
《温故(二十五)》内容简介:2013年推出的第二辑《温故》, “影像”专栏刊出秦风老照片馆提供的图片共30幅,反映的时代集中在上世