图灵社区会员 leezom(superjavaman.zhangli@gmail.com) 专享 尊重版权 数字版权声明 图灵社区的电子书没有采用专有客 户端,您可以在任意设备上,用自 己喜欢的浏览器和PDF阅读器进行 阅读。 但您购买的电子书仅供您个人使 用,未经授权,不得进行传播。 我们愿意相信读者具有这样的良知 和觉悟,与我们共同保护知识产 权。 如果购买者有侵权行为,我们可能 对该用户实施包括但不限于关闭该 帐号等维权措施,并可能追究法律 责任。 图灵社区会员 leezom(superjavaman.zhangli@gmail.com) 专享 尊重版权 图灵社区会员 leezom(superjavaman.zhangli@gmail.com) 专享 尊重版权 图灵社区会员 leezom(superjavaman.zhangli@gmail.com) 专享 尊重版权     图书在版编目(CIP)数据     两周自制脚本语言 /(日)千叶滋著 ;陈筱烟译 -- 北京:人民邮电出版社,2014.6(2016.12 重印) (图灵程序设计丛书) ISBN 978-7-115-35564-5 Ⅰ. ①两… Ⅱ. ①千… ②陈… Ⅲ . ① JAVA 语言-程 序设计 Ⅳ. ① TP312 中国版本图书馆 CIP 数据核字(2014)第 093603号 内  容  提  要 本书是一本优秀的编译原理入门读物。全书穿插了大量轻松风趣的对话,读者可以随书中的人 物一起从最简单的语言解释器开始,逐步添加新功能,最终完成一个支持函数、数组、对象等高级 功能的语言编译器。本书与众不同的实现方式不仅大幅简化了语言处理器的复杂度,还有助于拓展 读者的视野。 本书适合对编译原理及语言处理器设计有兴趣的读者以及正在学习相关课程的大中专院校学 生。同时,已经学习过相关知识,有一定经验的开发者,也一定能从本书新颖的实现方式中受益良多。 ◆ 著    [日]千叶 滋   译    陈筱烟   责任编辑 徐 骞   责任印制 焦志炜 ◆ 人民邮电出版社出版发行  北京市丰台区成寿寺路11号   邮编 100164  电子邮件 315@ptpress.com.cn   网址 http://www.ptpress.com.cn   北京      印刷 ◆ 开本:800×1000 1/16   印张:18.75   字数:429 千字 2014 年 6 月第 1 版   印数:5 001- 5 300 册 2016 年12 月北京第 5 次印刷 著作权合同登记号 图字:01-2013-6220 号 定价:59.00 元 读者服务热线:(010)51095186 转 600 印装质量热线:(010)81055316 反盗版热线:(010)81055315 广告经营许可证:京东工商广字第 8052 号 图灵社区会员 leezom(superjavaman.zhangli@gmail.com) 专享 尊重版权 译者序 在大学时代,编译原理就是我十分感兴趣的一门课程。无论是手工进行语法分析计算,还是 尝试设计一些简单的语言处理器,都给我留下了深刻的印象。为某些特殊用途的软件设计专用的 程序设计语言,也是我一度着迷的课题。当时,阿尔弗雷德所著的《编译原理技术与工具》是自 己包中的常客,我常带着英文原版辗转于教室、图书馆与自己的房间。 怀着对编译原理的这份兴趣与热忱,我一直都希望能做一些与之相关的工作。遇到这本《两 周自制脚本语言》 ,算是一种缘分。 初见书名,我还有些犹豫。国内以速成为卖点的计算机书籍不少,真正值得一读的好书却不 多。诱惑读者靠走捷径学到真知,常常最终使他们绕了弯路。不过在了解到作者是东京大学和东 京工业大学计算机系的资深教授后,我又对这本书产生了好奇。一位仍活跃在科研与教学第一线 的学者,会怎样在两周内教会读者设计一种脚本语言呢? 读完本书,我颇为惊喜,原本的担心消失殆尽。这是一本有趣而实用的书,内容编排十分独 特,作为一本编译原理的入门读物,本书的很多编写思路都围绕这点展开。作者没有为了增添噱 头而加入大量初学者不易理解也无需急着掌握的知识与技术,而是始终以够用为本,逐步扩展语 言的语法规则,帮助读者从最基础的概念到一些常用的进阶设计理念,逐步掌握语言处理器的运 行原理,以及设计一门新的语言的必要步骤。书中随处可见的老师与学生、学生与学生间的轻松 对话是本书的一大特色,几位性格迥异的出场人物时而为读者解惑,时而提出一些更深层次的问 题,引发读者的思考。 尽管书名是自制脚本语言,但本书的内容却是自制脚本语言处理器。作者花了大量篇幅讲解 语言处理器的功能增强与性能优化。与同类书相比,本书使用了一种较为新颖的实现方式,能够 有效简化语言处理器的设计与维护成本。尽管它还无法完全胜任实际生活中更为复杂的系统,这 种解决问题的思路却对开拓读者的眼界很有帮助。 得益于作者丰富的教学科研经验,本书涉及了不少实践中可能遇到的问题。作者没有直接给 出解答,而是引导读者思考,无论是初学者还是有一定基础知识的读者,都能在阅读本书后有新 的发现。在翻译本书时,我也有所收获。其中,为了深究一些细节问题,我曾专门致信向作者请 教。作者立刻对我的疑问进行了解答,并附上了细致的说明,在他的帮助下,中译本的质量得到 了进一步提升。在此谨对作者的支持表示衷心的感谢。此外,中译本已经参照原书的勘误及补遗 表做了修改与调整,一些细节问题得到了修正。 图灵社区会员 leezom(superjavaman.zhangli@gmail.com) 专享 尊重版权 iv  译者序 在翻译过程中,我得到了许多人的帮助与支持。家人为自己创造了能够安心翻译的环境,并 始终给予理解与关心。好友陈洁也为我提供了莫大的支持,使我可以每天以最佳状态投入工作。 这里还要感谢图灵的各位编辑提出大量极具价值的建议与意见,帮助本书顺利完成并最终问世。 最后,希望对编译原理有兴趣的读者都能从本书中获益。 陈筱烟 2014 年 4 月于上海 图灵社区会员 leezom(superjavaman.zhangli@gmail.com) 专享 尊重版权 前 言 本书是一本编译原理的入门读物。过去,大家普遍认为编译器与解释器之间存在很大的差 异,因此会分别编写针对编译器与解释器的图书。不过,最近编译器与解释器之间的界限越来越 模糊,我们只要稍微了解一下常见的程序设计语言,就会发现两者已不再是对立的概念。 因此,与其说本书是编译原理的入门书,不如说是语言处理器的入门读物更为恰当。语言 处理器是用于执行程序设计语言的软件,它同时包含了编译器与解释器。本书看似用了大量篇 幅讲解解释器的原理,其实是在讲解编译器与解释器通用的理论。第 1 章将详细介绍各章节的 具体内容。 本书采用了 Java 语言来实现语言处理器。在设计语言处理器时,C 语言或 C++ 语言更为常 见,加之本书没有借助 yacc 等常用的工具来生成语言处理器,因此读者也许会认为本书的实用 性不足。 本书在介绍语言处理器的设计方式时,尽可能采用了较新颖的手段。C 语言或 C++ 语言结 合 yacc 的方式性能较差,且是上世纪 80 年代的实现方式。在那之后,程序设计语言飞速发展, 已不可同日而语,其运行性能也大幅提升。入门读物也应该与时俱进,讲解与过去不同的设计方 式,展现它们的实践价值。 时至今日,软件领域的发展依然日新月异,并逐渐渗透至生活的方方面面,这一势头无疑将 持续下去。在此期间,各类技术必将不断发展,为了跟上技术更新的步伐,软件应当以略微领先 于时代的设计思路开发。 很久以前,笔者曾使用 C++ 语言开发过适用于工作站的语言处理器,当时,时钟频率仅有 100 兆赫,内存也不过几百兆字节。那套软件幸运地在各种环境下运行了十年以上。有一天,我 收到了一封邮件。我记得好像是一个德国的年轻人,他洋洋洒洒写了很多,批评那套软件的设计 有不少问题。还说开发者应当合理使用模板,并灵活运用各种库,要学习使用设计模式,还要用 XML 来表示抽象语法树,等等。 他指出我太节省内存,只顾着提升性能,结果程序难以阅读。从当时的主流软硬件标准来 看,这些批评确实合情合理,但那套系统毕竟是十年前的产物。在当时软硬件性能孱弱的情况 下,如果遵循他的建议,最终完成的语言处理器恐怕会被打上缺乏使用价值的标签(顺便一提, 提出批评的那位年轻人虽然说了很多,却没有写一行代码) 。 然而,从这件事中我深刻体会到,软件有着惊人的生命力,即使在开发时采用了最佳设计, 最终还是会随着时代的进步而被迅速淘汰。因此,前文说软件应当以略微领先于时代的设计思路 图灵社区会员 leezom(superjavaman.zhangli@gmail.com) 专享 尊重版权 vi  前言 开发有其合理性。当然,我们也可以不关心他人的批评,尽可能缩短软件的生命周期,并积极抛 弃过时的内容。具体采用哪种策略因人而异。 希望读者能够在阅读本书时始终记住这些理念。读过本书之后,如果大家觉得收获良多,我 将深感荣幸与喜悦。 2012 年 新春 千叶滋 图灵社区会员 leezom(superjavaman.zhangli@gmail.com) 专享 尊重版权 推荐序 本书虽然是编译原理的入门读物,但除了编译器之外,还将介绍程序设计语言的各种功能 及相应实现方法的基本设计思路。不过,与现有的很多编译原理入门书不同,本书的内容十分新 颖。已有的同类书大多遵循一些固定套路,以正则表达式、自动机、LL 语法、LR 语法及相关的 语法分析算法等基础知识为核心,设计简化的 C 语言风格编译器。本书不仅会仔细讲解这些知 识点蕴含的基本思想,还会通过现成的库来实现语言处理的词法分析与语法分析逻辑。 本书仅简单讲解词法分析与语法分析等编译器的基本知识,而将重点放在语言处理器的实 现上。已有的同类书很少涉及各类具体的语言功能与它们的具体实现方式,本书将由简入繁,逐 步修改语言处理器,介绍这些功能与实现。语言处理器最初只支持无变量声明的简单表达式,之 后陆续添加函数与闭包、数组、面向对象类型、类型推论等功能,将它从解释器修改为编译器。 本书采用 Java 语言来实现语言处理器,不过在多次修改后,已有的程序通常需要重写,这 并非我们希望看到的。本书使用了笔者开发的语言处理工具 GluonJ,因此在添加功能时无需修 改已有的代码,只需另外编写必要的程序即可。因此可以轻松更改不同功能的配置。这是一种非 常理想的程序开发方式。 得益于这种方式,本书能通过若干较为简短的独立程序实现语言处理器的各种功能,并将完 整代码收录于书中。这正是 GluonJ 的长处,如果合理设计程序结构,这种优势能进一步得到发

pdf文档 两周自制脚本语言

计算机 > 脚本语言 > 脚本语言-1 > 文档预览
306 页 0 下载 557 浏览 0 评论 0 收藏 3.0分
温馨提示:如果当前文档出现乱码或未能正常浏览,请先下载原文档进行浏览。
两周自制脚本语言 第 1 页 两周自制脚本语言 第 2 页 两周自制脚本语言 第 3 页 两周自制脚本语言 第 4 页 两周自制脚本语言 第 5 页
下载文档到电脑,方便使用
还有 301 页可预览,继续阅读
本文档由 user2021-02-28 15:06:29上传分享
给文档打分
您好可以输入 255 个字符
DocHub文库的中文名是什么?( 答案:多哈 )
评论列表
  • 暂时还没有评论,期待您的金玉良言