
张秀宏
本书是一本面向Lua程序员和脚本语言爱好者的语言自制指南和实战宝典。全书将带给读者3个维度的收获:维度1:深入理解Lua语言本身作者融合自己丰富的工程实践经验,详细阐述了Lua语言的核心语法和实现原理,深入探讨了Lua虚拟机、编译器和标准库的实现,并给出了实际可以编译执行的代码。维度2:从零开始实现一门脚本语言本书以Lua语言为例,系统、完整地(涵盖虚拟机、编译器和标准库)讲解了如何零基础编写一门脚本语言,帮助读者彻底理解脚本语言的工作原理。维度3:提升Go和Java语言编程能力本书分别用Go语言和Java语言来实现Lua,包含大量对Go和Java的使用,有很多巧妙的设计,能帮助读者提升Go和Java的编程能力。全书共21章,分为3个部分:第一部分(第1-13章) 主要讲解Lua API和虚拟机的实现,包括二进制chunk格式、Lua虚拟机指令集、元编程、错误处理等。第二部分(第14-17章)主要讨论Lua语法和编译器的实现,包括词法分析、语法分析、代码优化、代码生成等。第三部分(第18-21章) 主要讲解Lua辅助API和标准库实现,包括基础库、实用工具库、包和模块、协程等。
详尽介绍了lua虚拟机,后面几章还实现了一个编译器,跟着这本书把代码都敲了一遍,对这个lua语言的理解都深刻了,好书推荐!最后编译器的实现比较简单,很多东西讲得很粗略,想深入了解可以看看crafting interpreters(free online)。
- 自己动手实现lua.虚拟机/编译器和标准库 2018.10; env lua虚拟机.二进制chunk/指令集/API/运算符/虚拟机雏形/表/函数调用/Go函数调用/闭包和upvalue/元编程/迭代器/异常和错误处理 lua语法和编译器.词法分析/AST/语法分析/代码生成 lua标准库.辅助API和基础库/工具库/包和模块/协程
早期看虚拟机那本书没那么了解,这次看lua虚拟机却觉得容易理解很多。当然也有底蕴增加的缘故,不过这本书也写得比较通透,清晰易懂。最好是边看书边写代码,我已经买了实体书,准备实现一遍。
可以学到怎么样去实现一个编译器,还有lua虚拟机的实现,看完这个再去看lua的源码会轻松很多
讲的比较注重实践,相当于编译原理实践版,可以把编译原理这本书里的内容以及各种设计的原因融会贯通。
非常好的一本书,完整且详尽的讲解了脚本语言的虚拟机和编译器实现方法,涉及指令编解码、虚拟堆模拟、虚拟机指令执行、函数层次调用、词法解析、语法解析、代码生成等方面,且配有丰富的示意图、流程图帮助理解。而且由于使用go语言实现,可以在实现中直接使用go的gc、map、异常处理、正则表达式等语法构造,简化代码,避免初学者陷入细节的漩涡,,很适合非计算机领域的爱好者学习参考。。十分推荐,
这本书是go语言的版本,不懂go语言的话其实也能看,没什么太大影响,作者自己在网站上还挂了C#和JAVA的版本,都是带垃圾回收的,因为垃圾回收没有自己实现,依靠的语言本身。lua版本是5.3,不过5.4也快要出了[偷笑]。总得来说还行,这个实现跟官方实现没有什么交集,抛去了一些东西,再加上使用的语言相对"高级"一点,所以比官方实现要简单。对理解lua原理有帮助,但是对理解lua源码的作用实在有限。lua本身的参考书籍不多,这本书价值还是挺大的,值得推荐。
书买了六年多,断断续续看过不少。最近才真正一口气读完了,内容主次分明,前后学习顺序分配合理,一点也不拖泥带水。最好读的时候结合动手实践,我个人没有按书里建议的Go,而是用了更简明易懂的TypeScript来写。本书的GitHub仓库是 zxh0/lua.go,最新版有许多针对书里没写到内容的补充和勘误,非常推荐。
不错的编译类书籍,有理论有code。 读本书前,要有编译原理的基本认识,如了解词法分析,语法分析,bnf范式,状态机,ast等,不然就如读天书了。有go lua的知识就更好了。 书中以实战角度在go语言中实现了lua虚拟机,详细讲解了lua指令的机制与运行原理,对几乎每一个指令都有示例。在最后的一章,讲解了编译前端的部分,上下承接讲解了一个编译完整周期。 非常推荐对编译有兴趣的阅读
阅读学习本书一举而两得,即加深了对lua虚拟机和标准库实现的理解,同时还加强了golang的项目实践能力。对于想阅读lua源码、了解其具体实现的同学,可以将该书作为先行读本。