《两周自制脚本语言》是一本优秀的编译原理入门读物。全书穿插了大量轻松风趣的对话,读者可以随书中的人物一起从最简单的语言解释器开始,逐步添加新功能,最终完成一个支持函数、数组、对象等高级功能的语言编译器。本书与众不同的实现方式不仅大幅简化了语言处理器的复杂度,还有助于拓展读者的视野。
《两周自制脚本语言》适合对编译原理及语言处理器设计有兴趣的读者以及正在学习相关课程的大中专院校学生。同时,已经学习过相关知识、有一定经验的开发者,也一定能从本书新颖的实现方式中受益良多。
第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
《全国通信专业技术人员职业水平考试参考用书:通信专业综合能力(中级)》依据《全国通信专业技术人员职业水平考试大纲》要求编写。
《公司的演变》内容简介:这是一个互联网串联的时代。互联网在扶植原有的经济结构和企业盈利模式的同时,也在创造崭新的商业模式。
《自我催眠术(第2版)》内容简介:本书旨在解决日益严重的心理亚健康问题。针对疲劳感、失眠、冷漠、怯场、焦虑、压力、孤独、强迫
C程序员在编写程序时手头一定要有这本书。在这本书中,C语言专家PeterPrinz和TonyCrawford为你提供大量的编程参考信息。全书叙述
《三维CAD/CAM》内容简介:结合机械类专业的实际,以够用为度,主要讲述设计模块和加工模块。第一部分为设计模块(即CAD模块),主
《区块链启示录:中本聪文集》内容简介:本书整理了中本聪所发表的比特币白皮书、在几个网络论坛的对话精选以及部分相关的私人往来
《精通SEO:100%网站流量提升密码》内容简介:全书分为4个部分。第1篇【基础篇】主要介绍了搜索引擎和搜索引擎优化的基础知识,并通
《爱是万能的调味》内容简介:爱是世间最美的味道,爱是世间万能的调味品。爱是流淌在生命里,妈妈的味道。台湾地区著名的私房菜老
《版权赋能,丝路无疆》内容简介:报告首先挖掘了丝绸业在吴江的历史缘起,继而介绍了吴江丝绸纺织工业的形成、演进与发展历程,分
Thisbookprovidesthetheory,practicaldetails,andtoolsnecessaryforbuildingvisualiza...
本书介绍了正交频分复用(OFOM)技术的原理及其在无线通信领域内的应用。全书共分10章。第1章简要介绍了移动通信的发展现状、无线
《实证法学研究(第一期)》内容简介:《实证法学研究》以实证法学研究方法为中心,通过实证研究来反思法学理论,并对法律实践进行
BookDescriptionWiththenumberofsecurityflawsandexploitsdiscoveredandreleasedevery...
《Axure RP8实战手册》内容简介:本书是一本介绍使用Axure RP 8.0软件制作Web和App原型的图书,通过对基础操作和实战案例的讲解,帮
《下一代产品开发:如何提高研发生产率降低成本和缩短开发周期》作者MichaelE.McGrath是国际上产品战略和产品开发领域久负盛名的专
SAP入门经典-(第5版) 本书特色 《SAP入门经典(第5版)》是由业内专家编写的SAP入门教程,其中对SAP的各种主要产品与组件进行了较为详细的介绍,并且从...
Describesthetechnologicalsolutionsandstandardswhichwillenablethemigrationofvoice...
《如何让你的销售增加369%:引导式销售技巧》内容简介:如何增加销售是每一个企业关注的话题,本书详细介绍了可以大幅提升销售的引
《全国会计专业技术资格考试历年真题+全真模拟:初级会计实务》内容简介:《全国会计专业技术资格考试历年真题+全真模拟:初级会计
本书系统地介绍了可变目标ANSIC编译器1cc的设计方法和实现技术。1cc是一个实用的编译器,能够不同的目标机器生成代码。本书结合1