两周自制脚本语言

出版日期:2014-6
ISBN:9787115355649
作者:[日]千叶 滋
页数:300页

内容概要

作者简介:
千叶滋
东京工业大学研究生院信息技术理工系研究科教授,兼任东京大学研究生院信息技术理工系研究科教授。著有《面向切面入门——从Java语言・面向对象步入AspectJ语言程序设计》《简明Java程序设计——Great Ideas for Java Programming》《GUI库机制——软件设计案例研习》等。
译者简介:
陈筱烟
毕业于复旦大学计算机科学与技术系,主要研究方向为跨设备人机交互理论。从大学时期开始接触Java、JavaScript程序开发,目前对Web应用及智能手机应用开发有浓厚兴趣,并参与Android开发文档翻译项目。业余开发的移动应用在Google Play商店中已有数十万次下载。译作有《JavaScript编程全解》《App,这样设计才好卖》等。

书籍目录

第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 BNF  38
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 关于GluonJ  69
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 正则表达式与BNF  237
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条)

  •     不管是翻译还是行文的原因,代码与图示的不一致,为了翻个代码,需要把一节翻完,而且前前后后各种代码参见。对话模式莫名其妙的,既然想拟人讨论,就好好取个名字,搞个鸡毛的abcdefg,还不如正正常常的写本书呢。文字描述根本无法表达代码意图,有时候,放在一起的文字,图示,代码,其实根本就风马牛不相及。。
  •     用正则表达式做词法,用递归下降做语法,实现的语言特性 支持环境(符号表)、数组、函数。 可选地涉及 虚拟机(中间代码)、闭包、Y-combinator、 Interpreter模式、Visitor模式、aspect-based、静态类型和类型推论。重要知识缺 错误处理、左递归。

精彩短评 (总计13条)

  •     我喜欢这本书! 非常适合入门! 作者很懂得如何引导读者!
  •     循序渐进、通俗易懂
  •     细节还是得找一本别的书看看
  •     看了一半还是没看下去,对话的形式相当啰嗦,看起来费时,想表达的观点直接阐述即可还要让读者通过对话去猜。找到另外一本好书《编程语言实现模式》
  •     还没有读完,自己用C++去实现这个脚本,希望能够对编译原理有一个入门。
  •     解释器和编辑器之间的界限慢慢变淡。解释器根据程序中的算法执行运算。简单来讲,它是一种用于执行程序的软件。如果执行的程序由虚拟机器语言或类似于机器语言的程序设计语言写成,这种软件也能称为虚拟机,而编译器是转换的程序。不同语法本质相同;任何程序要包括变量,要不然的话和计算器没有区别了,但是脚本语言,变量可以不需要静态数据结构,不需要指明变量类型
  •     好书,花了两天加一个通宵读完了,日本人写的技术书非常的深入浅出
  •     把核心代码藏起来的方式实现语言
  •     曾经被编译原理这门课折磨得半死不活,没想到这本书让自认为没有学习计算机理论细胞的为,感受了一下制作语言和语言处理器的过程。不过用java实现的,还需要对java有一定的基础
  •     是科普书,不是入门书。夹带大量私货,真想灵活实现直接用 Ruby 不就好了… 核心代码和重点知识的讲解非常不清晰
  •     去年寒假看的,正好有时间跟着把整个流程做一遍。虽说是照猫画虎,不过多少也算是入了编译原理的门,而且现在看来,这种实践为主的学习方法其实更能调动起兴趣,因此很推荐初学者阅读。美中不足的是介绍性的知识太少而且不甚精确,甚至隐藏了一些核心内容,不过这些等学编译原理的时候再看也不迟了。
  •     麻雀虽小,五脏俱全
  •     非常适合作为入门的书籍,讲的浅显易懂。有趣的是该书还自带弹幕,233
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024