编程语言实现模式

当前位置:首页 > 计算机网络 > 计算机理论 > 编程语言实现模式

出版社:华中科技大学出版社
出版日期:2012-3-20
ISBN:9787560977003
作者:Terence Parr
页数:388页

前言

  随着你不断编写语言应用,这个过程中所蕴涵的模式就会逐渐变得清晰而明朗。其实,大多数的语言应用在架构上都是相似的。每次编写语言应用的时候,我都不断告诉自己:“先建立解析器,用它在内存中把数据结构建立起来。然后从中抽取信息,必要时还要改变其结构。最后再写一个能根据这些信息自动输出代码或者报告的工具”。看吧,这不就是模式?在这些任务中总能发现一些相似的算法和数据结构。  一旦掌握了这些语言实现的设计模式或者架构,编写起语言应用来就得心应手了。如果你想快速掌握编写语言应用的能力,这本书正适合你。本书奉行实用主义,从本质上挖掘并提炼语言应用中的设计模式。你会了解模式的重要性,学习如何实现这些模式,如何组合这些模式。很快你就能成为开发语言应用的行家里手!  创造新的语言其实不需要深厚的理论知识做铺垫。你可能不信,毕竟所有语言应用方面的书都会占用大量的篇幅讲解编译器知识。我承认,为通用编程语言编写编译器确实需要扎实的计算机科学知识。然而,大多数程序员并不需要编写这种编译器。因此本书的重心是解决程序员平时最可能遇到的问题:配置文件读取、数据读取、模型驱动的代码生成、源代码之间的翻译、源代码分析和解释器的实现。同理,我们没有使用Scheme等学术界推崇的语言,而是跟随业界的发展采用Java编写所有的示例,以便你能快速地在实际项目中大显身手。

媒体关注与评论

  别看那些编译原理的书了!这本书教你编写真正实用的解析器、翻译器、解释器等语言应用,Terence Parr 在书中细致地讲解了先进的语言工具和语言应用中设计模式的用法。无论是编写自己的领域专用语言(DSL),还是挖掘已有代码、查错或是寻宝,都能从这本简单易懂的书中找到示例和模式,因为它基本上覆盖了解析技术的方方面面。  ——Python语言之父Guido Van Rossum‘    我的“龙书”被打入冷宫了!  ——Android平台Dalvik虚拟机的设计者Dan Bornstein    本书对每个语言设计者来说都是一笔无价的财富。  ——泰勒大学计算机科学系副教授Tom Nurkkala博士    Terence清晰地阐释了语言设计中的概念。如果你想独创一门语言却又无从下手,或者觉得它高不可攀,那么,从这本书开始吧。  ——Adam Keys    这本书行文风格浅显却又不失韵味,以这个经久不衰的热门话题为中心,娓娓道来,颇有大师风范。《编程语言实现模式》不光讲述创造语言的方法,还指引我们在这个过程中该思考些什么。要想创造一个强壮的、可维护的专用语言,这本书是无价之宝。  ——Breaulty研究机构科学软件开发部门主管Kyle Ferrio博士

内容概要

Terence Parr是美国旧金山大学的计算机教授、研究生导师,他一直致力于从事ANTLR项目(antlr.org)和模板引擎(stringtemplate.org)的设计和开发工作。Terence曾担任IBM、洛克希德马丁、NeXT、雷诺汽车等公司的技术顾问,另著有《ANTLR权威指南》。

书籍目录

第1部分  读取输入
第1章 初探语言应用 3
1.1 大局观 3
1.2 模式概览 5
1.3 深入浅出语言应用 9
1.4 为语言应用选择合适的模式 17
第2章 基本解析模式 21
2.1 识别式子的结构 22
2.2 构建递归下降语法解析器 24
2.3 使用文法DSL来构建语法解析器 26
2.4 词法单元和句子 27
第3章 高阶解析模式 49
3.1 利用任意多的向前看符号进行解析 50
3.2 记忆式解析 52
3.3 采用语义信息指导解析过程 52
第2部分 分析输入
第4章 从语法树构建中间表示 73
4.1 为什么要构建树 75
4.2 构建抽象语法树 77
4.3 简要介绍ANTLR 84
4.4 使用ANTLR文法构建AST 86
第5章 遍历并改写树形结构 101
5.1 遍历树以及访问顺序 102
5.2 封装访问节点的代码 105
5.3 根据文法自动生成访问者 107
5.4 将遍历与匹配解耦 110
第6章 记录并识别程序中的符号 131
6.1 收集程序实体的信息 132
6.2 根据作用域划分符号 134
6.3 解析符号 139
第7章 管理数据聚集的符号表 155
7.1 为结构体构建作用域树 156
7.2 为类构建作用域树 158
第8章 静态类型检查 181
第3部分 解释执行
第9章 构建高级解释器 219
9.1 高级解释器存储系统的设计 220
9.2 高级解释器中的符号记录 222
9.3 处理指令 224
第10章 构建字节码解释器 239
10.1 设计字节码解释器 241
10.2 定义汇编语言语法 243
10.3 字节码机器的架构 245
10.4 如何深入 250
第4部分 生成输出
第11章 语言的翻译 278
11.1 语法制导的翻译 280
11.2 基于规则的翻译 281
11.3 模型驱动的翻译 283
11.4 创建嵌套的输出模型 291
第12章 使用模板生成DSL 312
12.1 熟悉StringTemplate 313
12.2 StringTemplate的性质 316
12.2 从一个简单的输入模型生成模板 317
12.4 在输入模型不同的情况下复用模板 320
12.5 使用树文法来创建模板 323
12.6 对数据列表使用模板 330
12.7 编写可改变输出结果的翻译器 336
第13章 知识汇总 348
13.1 在蛋白质结构中查找模式 348
13.2 使用脚本构建三维场景 349
13.3 处理XML 350
13.4 读取通用的配置文件 352
13.5 对代码进行微调 353
13.6 为Java添加新的类型 354
13.7 美化源代码 355
13.8 编译为机器码 356
参考文献 359
索引 361

编辑推荐

  虽然《编程语言实现模式》不专门讨论如何设计编程语言,但读者在阅读的过程中将吸收丰富的相关知识。比较不同编程语言的特点、了解编程语言的发展历史是学习设计编程语言的好途径。

作者简介

《编程语言实现模式》旨在传授开发语言应用(工具)的经验和理念,帮助读者构建自己的语言应用。这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如此类的工具。为此,作者举例讲解已有语言应用的工作机制,拆解、归纳出31种易于理解且常用的设计模式(每种都包括通用数据结构、算法、策略)。虽然示例是用Java编写的,但相信读者可以触类旁通,利用这些设计模式构建针对其他编程语言(既包括特定领域语言,也包括通用编程语言)的应用。

图书封面


 编程语言实现模式下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计8条)

  •     2012年4月第一版第一次印刷P59最后一段“由于C++函数头文件不限大小”,英文版中是“function header”应翻译为函数头。P88页中间“因此可以用前缀操作父^制定操作符词法单元”,英文版中是”suffix“应翻译为后缀。
  •     还没看完,先挖个坑。话说要读这本书想觉得简单一些,建议先读它的前传《The Definitive Antlr Reference》http://book.douban.com/subject/1941193/(额,貌似这本是讲ANTLR 3的,目前出到ANTLR 4,还有一本《The Definitive ANTLR 4 Reference》http://book.douban.com/subject/17912658/ 打算以后有空翻一翻)。读《The Definitive Antlr Reference》的时候,英文跟我一样够呛的同学,可以主要看例子和解释,例子都很简单易懂,不懂的时候再回头看文字,跳着读,然后跟着例子做一些练习,很快就能掌握ANTLR的大部分使用方法,还可以理解很多相关的原理。然后再来读这本书,就没有那么头疼了。
  •     自从2001年开始迷上编译原理,这么多年以来一直断断续续地学习,却一直处于半懂不懂且缺乏实践的尴尬境地,以至于都要引以为平生一憾了。昨晚看过本书前两章,感觉作者有两点做得好:一是首先建立大局观,不一上来就陷入细枝末节,这样比较容易入门;二是追求实用性,举的例子都是实际的语言应用,这样比较容易建立直观的联系。这其实也是学习比较复杂的理论时特别要注意的两点,所以最好是先找一本类似本书的入门书,有了大局观和一定的理论和实践基础后再看龙书这样的专业教科书,这样循序渐进,可以少走不少弯路。

精彩短评 (总计80条)

  •     随着java版本的更新,dsl在java中得到越来越多的重视平时开发中,也有许多思想可以借鉴书翻译的还算可以
  •     读完咯~~~不容易
  •     : TP312/4444-19
  •     9分
  •     给初学者打开眼界和获取灵感
  •     帝老师说好
  •     这是一本实战型的书,没有太多的原理,没有太多的理论,适合实战派。
  •     4星是评给原书的,译本最多2星。翻译和排版感觉都太随便了点,定价居然高达72,还好我是从图书馆借的……
  •     大神们说有点民科,不过对我还帮助还是很大的
  •     简单易懂的编译原理入门书,有趣,翻译不大好,应用性有限
  •     yet another antlr reference book
  •     这本书不是初学者阅读,是那些有了一定的开发经验,有某方面的编程语言基础。对于编程习惯和代码质量有很高地提升价值
  •     一本很棒的讲述编译原理的书,最重要的是,从中看到了无限的可能性。
  •     《编程语言实现模式》顾名思义,推荐指数A,难度系数B。推荐理由:作为码农或是准码农,搞出一些DSL来简化重复工作已经是大势所趋了,不借助工具单凭手工堆代码是不可能比平均水平高一个数量级的
  •     精品的书要看看
  •     深入浅出的入门书,对我帮助真的很大,好久没看到这么好的书了
  •     但仍然远远输给python源码剖析了。
  •     算是比较应景的阅读,主要讲编译器前端实现。正好最近在做SQL parser相关的事情。本书完全是从实用角度出发,没有太多的理论。主要采用antlr,所以到后面理解起来有些许障碍。后面1/3的翻译感觉不是那么顺畅,而且有不少印刷错误。如果能够透彻理解本书,绝对会成为一大助力。
  •     如果实现的是领域专属语言的话,不必看这个了。
  •     ANTLR大法好。
  •     很棒的书,偏实践。配合antlr使用,但是书中的代码是antlr3,与antlr4有相当的区别。
  •     帮助我理清语言开发的设计思路。
  •     内容还是不错的 但是感觉过多的篇幅介绍ALTER的工具。
  •     唔....通读了一遍,真的是好书,但后半段解释器实现和代码生成还没完全看懂
  •     编程语言是怎样炼成的,及其一些模式化思考
  •     这本书需要不少基础知识,没那么容易学习。
  •     虽然不算正统的学习编译原理, 至少现在让我处理一些语言语法分析, 代码翻译上的技能缺陷补齐了.
  •     模式模, 模式式,模式你,模式妹
  •     更像ANTLR的使用手册,适合用来构建编译器前端时,作为参考的书籍。
  •     书不错,实践性偏强。唯一不爽的是,里面用ANTLR描述文法。这玩意儿之前没用过,vm那块感觉仅仅是入门介绍,希望的JIT没出现·· の。
  •     看这本书需要先熟悉antlr的用法,否则读起很多例子看不懂。
  •     帮同事买的,书籍印刷还不错
  •     很好很好的书。没话说。
  •     编译原理的另一种讲解
  •     正在学习DSL,这本书非常有帮助。
  •     正版书,价格便宜,值得入手
  •     经典
  •     关于编译器和解释器实现的书
  •     这是一本对语言实现需求者很好的应用书
  •     原来语言的虚拟机就是将字节码翻译成机器码的解释器。书里面代码太多实践性太强,感觉没龙书好读
  •     不再看了
  •     没全看完,不过中文版不想再看了。差评它只是因为翻译问题,原书很好。关键是所有的代码都可用!
  •     书被压皱了啊!!以前都是纸箱子包好送来的 这次怎么就一塑料袋子
  •     如题, 好书一本 可以喝编译原理类的书一起看看
  •     本书深入浅出的讲解了如何编写语言应用,作者是ANTLR的开发者,也是Lex 和 YACC的另外JAVA实现,对语言实现需求者是一本很好的应用书,值得期待。使用 Antlr 等识别工具来识别,解析,
  •     Java 根本不能表述问题。
  •     给antlr打广告的,看来我并不需要这本书,居然会被“不需要其他编译原理书”这样的宣传语吸引来看,惭愧。
  •     适合我这种外行看咯。
  •     0. 整体浅显易懂(前置条件:我上过编译原理课,用的是大抄龙书的李文生《编译原理与技术》);ANTLR 使得可操作性极强。 1. 看完书的大部分去实战,发现「树文法」和内置的对 AST 的实现 在 ANTLR 4 里已经没有了。于是去看了 "The Definitive ANTLR 4 Reference" 的相关部分。 2. 有些段落,不知是作者还是译者原因,比较缺逻辑连接词,造成「懂的人才能看懂」……
  •     好书,值得慢慢看
  •     细读和体会最重要,翻译部分有些瑕疵。
  •     入门级读物的中文版,适合做数据处理的用户。
  •     实用主义的龙书
  •     大牛们都推荐了,你还等啥
  •     非常满意,包装的很好,发货也很快
  •     貌似是将编译与设计模式相结合的,值得一看
  •     相比龙书这类理论派的书, 更加注重工程化的实践. 书里应该是基于antlr v3的, 期待第二版>_<
  •     书相当好,名词解释的很清楚。可惜,个人智商问题,导致看不明白
  •     必备知识吼,但是,要配套另外两本才真心实用的起来,这本是基本地图,ANTLR 是装备,DSL 语法设计图书则是藏宝图了...
  •     是一本好书,翻译至少在我看来很好 。只是想要看懂配套代码还得学习一下antlr v3,这个很麻烦,更麻烦的还有我用来写java的idea中的v3插件有bug以至于不能用了。好气啊!
  •     什么鬼,不小心勾画了一句话不能退货了
  •     说了很多的模式,不太适合入门时看.....还是走实战路线....以后再回来看
  •     本书有个标签‘屠“龙书” ’哈哈哈
  •     这本书42万字,价格72元,厚度和英文版几乎一样,很不便宜
    虽然有英文版电子书,但还是喜欢纸质版
    据说它能起到替代编译原理的作用,不知道是不是真的,这种说法有点悬
  •     编译原理新的经典
  •     很多东西原来都没注意过,虽然有些确实用不到,不过理念和思想是共通的。
  •     泛读,学习到了一些思想和知识,细节忽略。个别句子翻译得很别扭。
  •     静下心来看。。。
  •     具有实践意义的好书,对于快速了解编译器和解释器的实现很有帮助。唯一的缺憾是大量依赖于ANTLR,还有各种模式N搞的头晕。。。
  •     may be the easiest introductory book on compiler/interpreter design. Although focus on front-end techniques, it's enough for writing a GPL like python or js.
  •     能帮助建立大局观,不会一下子掉到细节里去。也很实用,偏向于解决日常工作里碰到的语言应用相关问题。
  •     已购.
  •     讲了很多实现编译器要用到的不同的模式,但是要真的从头开始学,还是要在龙书或者虎书里面选一本看。
  •     要仔细阅读,这个领域还是蛮深的
  •     不错的,坚持阅读
  •     最后三章留着没读,前端还是需要些实践
  •     编程语言实现模式
  •     继续填坑,还指望着看完这个去定制下CoffeeScript呢……感谢徐老师赠书(再一次o(∩_∩)o )
  •     使用自己创造的语言来变成是每个程序员的梦想,本书非常适合。不过日常可能很少遇到,但是你很有可能需要规定一些语法来创造你项目中的DSL,此书不可错过
  •     TP312/4229 盛名之下其实难副。书评里盛赞的大局观和实用性其实都很烂。
 

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

零度图书网 @ 2024