作品简介

本书是一本面向Lua程序员和脚本语言爱好者的语言自制指南和实战宝典。全书将带给读者3个维度的收获:维度1:深入理解Lua语言本身作者融合自己丰富的工程实践经验,详细阐述了Lua语言的核心语法和实现原理,深入探讨了Lua虚拟机、编译器和标准库的实现,并给出了实际可以编译执行的代码。维度2:从零开始实现一门脚本语言本书以Lua语言为例,系统、完整地(涵盖虚拟机、编译器和标准库)讲解了如何零基础编写一门脚本语言,帮助读者彻底理解脚本语言的工作原理。维度3:提升Go和Java语言编程能力本书分别用Go语言和Java语言来实现Lua,包含大量对Go和Java的使用,有很多巧妙的设计,能帮助读者提升Go和Java的编程能力。全书共21章,分为3个部分:第一部分(第1-13章)主要讲解LuaAPI和虚拟机的实现,包括二进制chunk格式、Lua虚拟机指令集、元编程、错误处理等。第二部分(第14-17章)主要讨论Lua语法和编译器的实现,包括词法分析、语法分析、代码优化、代码生成等。第三部分(第18-21章)主要讲解Lua辅助API和标准库实现,包括基础库、实用工具库、包和模块、协程等。

张秀宏著。

作品目录

  • 前言
  • 第一部分 准备
  • 第1章 准备工作
  • 1.1 准备开发环境
  • 1.2 准备目录结构
  • 1.3 本章小结
  • 第二部分 Lua虚拟机和Lua API
  • 第2章 二进制chunk
  • 2.1 什么是二进制chunk
  • 2.2 luac命令介绍
  • 2.3 二进制chunk格式
  • 2.4 解析二进制chunk
  • 2.5 测试本章代码
  • 2.6 本章小结
  • 第3章 指令集
  • 3.1 指令集介绍
  • 3.2 指令编码格式
  • 3.3 指令解码
  • 3.4 测试本章代码
  • 3.5 本章小结
  • 第4章 Lua API
  • 4.1 Lua API介绍
  • 4.2 Lua栈
  • 4.3 Lua State
  • 4.4 测试本章代码
  • 4.5 本章小结
  • 第5章 Lua运算符
  • 5.1 Lua运算符介绍
  • 5.2 自动类型转换
  • 5.3 扩展LuaState接口
  • 5.4 测试本章代码
  • 5.5 本章小结
  • 第6章 虚拟机雏形
  • 6.1 添加LuaVM接口
  • 6.2 实现Lua虚拟机指令
  • 6.3 指令分派
  • 6.4 测试本章代码
  • 6.5 本章小结
  • 第7章 表
  • 7.1 表介绍
  • 7.2 表内部实现
  • 7.3 表相关API
  • 7.4 表相关指令
  • 7.5 测试本章代码
  • 7.6 本章小结
  • 第8章 函数调用
  • 8.1 函数调用介绍
  • 8.2 函数调用栈
  • 8.3 函数调用API
  • 8.4 函数调用指令
  • 8.5 测试本章代码
  • 8.6 本章小结
  • 第9章 Go函数调用
  • 9.1 Go函数登场
  • 9.2 Lua注册表
  • 9.3 全局环境
  • 9.4 测试本章代码
  • 9.5 本章小结
  • 第10章 闭包和Upvalue
  • 10.1 闭包和Upvalue介绍
  • 10.2 Upvalue底层支持
  • 10.3 Upvalue相关指令
  • 10.4 测试本章代码
  • 10.5 本章小结
  • 第11章 元编程
  • 11.1 元表和元方法介绍
  • 11.2 支持元表
  • 11.3 调用元方法
  • 11.4 扩展Lua API
  • 11.5 测试本章代码
  • 11.6 本章小结
  • 第12章 迭代器
  • 12.1 迭代器介绍
  • 12.2 next()函数
  • 12.3 通用for循环指令
  • 12.4 测试本章代码
  • 12.5 本章小结
  • 第13章 异常和错误处理
  • 13.1 异常和错误处理介绍
  • 13.2 异常和错误处理API
  • 13.3 error()和pcall()函数
  • 13.4 测试本章代码
  • 13.5 本章小结
  • 第三部分 Lua语法和编译器
  • 第14章 词法分析
  • 14.1 编译器介绍
  • 14.2 Lua词法介绍
  • 14.3 实现词法分析器
  • 14.4 LookAhead()和其他方法
  • 14.5 测试本章代码
  • 14.6 本章小结
  • 第15章 抽象语法树
  • 15.1 抽象语法树介绍
  • 15.2 Chunk和块
  • 15.3 语句
  • 15.4 表达式
  • 15.5 本章小结
  • 第16章 语法分析
  • 16.1 语法分析介绍
  • 16.2 解析块
  • 16.3 解析语句
  • 16.4 解析表达式
  • 16.5 测试本章代码
  • 16.6 本章小结
  • 第17章 代码生成
  • 17.1 定义funcInfo结构体
  • 17.2 编译块
  • 17.3 编译语句
  • 17.4 编译表达式
  • 17.5 生成函数原型
  • 17.6 使用编译器
  • 17.7 测试本章代码
  • 17.8 本章小结
  • 第四部分 Lua标准库
  • 第18章 辅助API和基础库
  • 18.1 Lua标准库介绍
  • 18.2 辅助API
  • 18.3 基础库
  • 18.4 测试本章代码
  • 18.5 本章小结
  • 第19章 工具库
  • 19.1 数学库
  • 19.2 表库
  • 19.3 字符串库
  • 19.4 UTF-8库
  • 19.5 OS库
  • 19.6 本章小结
  • 第20章 包和模块
  • 20.1 包和模块介绍
  • 20.2 实现包库
  • 20.3 测试本章代码
  • 20.4 本章小结
  • 第21章 协程
  • 21.1 协程介绍
  • 21.2 协程API
  • 21.3 实现协程库
  • 21.4 测试本章代码
  • 21.5 本章小结
  • 附录A Lua虚拟机指令集
  • 附录B Lua语法EBNF描述
  • 后记
展开全部