腾讯 T6 熬夜硬肝 Lua 程序员实战宝典,深入阐述虚拟机、编译器
Lua是一门强大、高效、轻量、可嵌人的脚本语言。Lua语言设计十分精巧,在一个很小的内核上可以支持函数式编程、面向对象编程、元编程等多种编程范式。
相信自己动手设计并实现一门编程语言是每个程序员都会有的一个梦想,目前国内也已经出版或引进了一些指导读者自己实现编程语言的书籍。不过这些书籍要么只介绍了语言实现环节中的一小部分,无法纵观全局;要么只讨论某种大幅裁减后的简化语言,离真正的工业语言还有一定距离。例如,《自己动手写Java虚拟机》,只讨论了Java虚拟机实现,没有涉及Java编译器和Java标库。
如上所述,之所以选择Lua语言,就是因为它足够小巧,并且有很好的流行度。麻雀虽小,五脏俱全,这使得我们可以在一本书的篇幅范围内覆盖虚拟机、编译器、标准库这三个方面的内容。希望读者可以通过本书完整体验一门编程语言的实现过程,为将来打造属于自己的语言做好准备。这正是本书的与众不同之处。

《自己动手实现Lua:虚拟机、编译器和标准库》全书将带给读者3个维度的收获
维度1:深入理解Lua语言本身作者融合自己丰富的工程实践经验,详细阐述了Lua语言的核心语法和实现原理,深入探讨了Lua虚拟机、编译器和标准库的实现,并给出了实际可以编译执行的代码。
维度2:从零开始实现一门脚本语言本书以Lua语言为例,系统、完整地(涵盖虚拟机、编译器和标准库)讲解了如何零基础编写一门脚本语言,帮助读者彻底理解脚本语言的工作原理。
维度3:提升Go和Java语言编程能力本书分别用Go语言和Java语言来实现Lua,包含大量对Go和Java的使用,有很多巧妙的设计,能帮助读者提升Go和Java的编程能力。
那么,今天咱们就从目录、主要包括的内容和总结三部分给大家进行学习,希望大家能够喜欢!!
目录:

由于篇幅限制小编,小编只在这里给大家展示目录及部分内容,有需要完整文档的程序猿(媛)可以帮忙转发+关注,添加助理vx:yunduoa2019获取
全书共21章,分为4个部分:
第一部分(第1章)主要准备编程环境,编写“Hello,World"程序。
第1章:准备工作。准备编程环境,编写“Hello, World !”程序。

第二部分(第2-13章)主要讲解LuaAPI和虚拟机的实现,包括二进制chunk格式、Lua虚拟机指令集、元编程、错误处理等。

第2章:二进制chunk。介绍Lua二进制chuck文件格式,编写代码解析二进制chunk文件。

第3章:指令集 介绍Lua虚拟机指令集和指令编码格式,编写代码对指令进行解码。

第4章: Lua API 初步介绍Lua API和Lua State,实现栈相关API方法。

第5章: Lua运算符 介绍Lua语言运算符,给Lua API添加运算符相关方法。

第6章:虚拟机雏形: 初步实现Lua虚拟机,可以解释执行大约一半的Lua虚拟机指令。

第7章:表 介绍并实现Lua表、表相关API方法,以及表相关指令。

第8章:函数调用 介绍并实现Lua函数调用。

第9章: Go函数调用 介绍如何在Lua中调用Go语言函数。

第10章:闭包和Upvalue 介绍并实现闭包和Upvalue,以及Upvalue相关指令。

第11章:元编程 介绍并实现Lua元表、元方法及元编程。

第12章:迭代器 介绍并实现Lua迭代器。

第13章:异常和错误处理 介绍Lua异常和错误处理机制。

第三部分(第14-17章)主要讨论Lua语法和编译器的实现,包括词法分析、语法分析、代码优化、代码生成等。

第14章:词法分析 介绍Lua语言词法规则,实现词法分析器。

第15章:抽象语法树 初步介绍Lua语言语法规则,定义抽象语法树。

第16章:语法分析 进一步介绍Lua语言语法规则,编写语法分析器。

第17章:代码生成 编写代码生成器。

第四部分(第18-21章)主要讲解Lua辅助API和标准库实现,包括基础库、实用工具库、包和模块、协程等。

第18章:辅助API和基础库 介绍Lua辅助API和标准库,实现基础库。

第19章:工具库 介绍并实现数学、表、字符串、UTF-8、OS等标准库。

第20章:包和模块 介绍Lua包和模块机制,实现package标准库。

第21章:协程 介绍Lua协程,实现coroutine标准库。

附录A Lua虚拟机指令集

附录B Lua语法EBNF描述

《自己动手写Java虚拟机》获取,转发关注小编,添加助理vx:yunduoa2019获取
好了,今天就分享到这里了,希望大家能够好好学习,把Lua这一块儿给提升上来,也希望本文能够得到大家的喜欢!!

版权声明: 本文为 InfoQ 作者【周老师】的原创文章。
原文链接:【http://xie.infoq.cn/article/14515a8077e5e89e03b6c944e】。文章转载请联系作者。
评论