展开全部

主编推荐语

一本深入Lua解释器内部设计与实现的书籍。

内容简介

Lua是一门设计精简、功能强大的脚本语言。本书将Lua解释器拆解,使用C语言,一步一步构建能够正确运行的Lua解释器。本书共6章,分别为Lua解释器概述,Lua虚拟机,Lua脚本的编译与虚拟机指令运行流程,Lua编译器,Lua的解释器的其他基础特征,dummylua开发案例:俄罗斯方块。

Lua解释器构建:从虚拟机到编译器面向对Lua内部以及解释器的设计和实现感兴趣的读者,并要求读者对C语言和Lua有一定的了解和使用经验。

目录

  • 版权信息
  • 前言
  • 第1章 Lua解释器概述
  • 1.1 Lua解释器
  • 1.1.1 Lua解释器的整体架构
  • 1.1.2 Lua解释器的运行机制
  • 1.2 Lua虚拟机
  • 1.2.1 虚拟机简介
  • 1.2.2 虚拟机指令的编码方式
  • 1.2.3 虚拟机指令集
  • 1.3 Lua编译器
  • 1.3.1 Lua的词法分析器
  • 1.3.2 Lua的语法分析器
  • 1.4 从0开发一个Lua解释器:dummylua项目
  • 1.4.1 项目简介
  • 1.4.2 项目架构说明
  • 第2章 Lua虚拟机
  • 2.1 Lua虚拟机基础知识
  • 2.1.1 基本类型定义
  • 2.1.2 虚拟机全局状态——global_State
  • 2.1.3 虚拟机的线程结构——lua_State
  • 2.1.4 虚拟机中执行函数的基础——CallInfo结构
  • 2.1.5 C函数在虚拟机线程中的调用流程
  • 2.1.6 虚拟机异常处理机制
  • 2.1.7 dummylua项目的虚拟机基础实现
  • 2.2 为虚拟机添加垃圾回收机制
  • 2.2.1 标记清除算法
  • 2.2.2 增量式标记清除算法
  • 2.2.3 dummylua项目的垃圾回收机制实现
  • 2.3 Lua虚拟机的字符串
  • 2.3.1 Lua字符串概述
  • 2.3.2 Lua字符串结构
  • 2.3.3 字符串的哈希运算
  • 2.3.4 短字符串与内部化
  • 2.3.5 长字符串与惰性哈希
  • 2.3.6 Lua-5.2的Hash DoS攻击
  • 2.3.7 dummylua的字符串实现
  • 2.4 Lua虚拟机的表
  • 2.4.1 Lua表功能概述
  • 2.4.2 Lua表的基本数据结构
  • 2.4.3 表的初始化
  • 2.4.4 键值的哈希运算
  • 2.4.5 查找元素
  • 2.4.6 值的更新与插入
  • 2.4.7 调整表的大小
  • 2.4.8 表遍历
  • 2.4.9 dummylua的表实现
  • 第3章 Lua脚本的编译与虚拟机指令运行流程
  • 3.1 第一个编译并运行脚本的例子:让Lua说“hello world”
  • 3.2 Lua的整体编译和运行流程
  • 3.3 虚拟机如何运行编译后的指令
  • 3.4 虚拟机输出“hello world”的例子
  • 3.5 反编译工具
  • 3.5.1 protodump工具简介
  • 3.5.2 使用protodump反编译Lua的字节码
  • 3.5.3 反编译结果分析
  • 3.6 标准库加载流程
  • 3.7 Lua内置编译器补充说明
  • 3.7.1 EBNF简介
  • 3.7.2 本章定义的EBNF
  • 3.7.3 词法分析器设计与实现
  • 3.7.4 语句和表达式
  • 3.7.5 语法分析器的基础设计与实现
  • 3.8 让dummylua能够编译并运行“hello world”脚本
  • 第4章 Lua编译器
  • 4.1 Lua词法分析器
  • 4.1.1 词法分析器简介
  • 4.1.2 词法分析器基本数据结构
  • 4.1.3 词法分析器的接口设计
  • 4.1.4 词法分析器的初始化流程
  • 4.1.5 token识别流程
  • 4.1.6 一个测试用例
  • 4.1.7 dummylua的词法分析器实现
  • 4.2 Lua语法分析器基础
  • 4.2.1 语法分析器的主要工作
  • 4.2.2 实现的语法
  • 4.2.3 语法分析器基本数据结构
  • 4.2.4 编译逻辑与EBNF的关联
  • 4.2.5 exprstat的逻辑结构
  • 4.2.6 expr的构造与编译
  • 4.2.7 suffixedexp构造与编译
  • 4.2.8 assignment构造和编译
  • 4.2.9 为dummylua添加编译exprstat的功能
  • 4.3 完整的Lua语法分析器
  • 4.3.1 Lua的语句块
  • 4.3.2 local语句编译流程
  • 4.3.3 do-end语句编译流程
  • 4.3.4 if语句编译流程
  • 4.3.5 while语句编译流程
  • 4.3.6 repeat语句编译流程
  • 4.3.7 for语句编译流程
  • 4.3.8 break语句编译流程
  • 4.3.9 function语句编译流程
  • 4.3.10 return语句编译流程
  • 4.3.11 dummylua的完整语法分析器实现
  • 第5章 Lua解释器的其他基础特性
  • 5.1 元表
  • 5.1.1 元表简介
  • 5.1.2 元表的_index域
  • 5.1.3 元表的_newindex域
  • 5.1.4 双目运算事件
  • 5.1.5 dummylua的元表实现
  • 5.2 用户数据
  • 5.2.1 用户数据的数据结构
  • 5.2.2 用户数据的接口
  • 5.2.3 用户数据的垃圾回收处理
  • 5.2.4 用户数据的user domain域内部的堆内存清理
  • 5.2.5 用户数据的测试用例
  • 5.2.6 dummylua的用户数据实现
  • 5.3 上值
  • 5.3.1 上值的定义
  • 5.3.2 Lua函数的探索
  • 5.3.3 上值的生成
  • 5.3.4 开放上值和已关闭上值
  • 5.3.5 dummylua的上值实现
  • 5.4 弱表
  • 5.4.1 弱表的定义
  • 5.4.2 弱表的用途
  • 5.4.3 弱键
  • 5.4.4 弱值
  • 5.4.5 完全弱引用
  • 5.4.6 dummylua的弱表实现
  • 5.5 require机制
  • 5.5.1 require功能简述
  • 5.5.2 package初始化
  • 5.5.3 require运作流程
  • 5.5.4 dummylua的require机制实现
  • 第6章 dummylua开发案例:俄罗斯方块
  • 6.1 案例简介
  • 6.2 案例代码结构
  • 6.3 编译与运行
  • 附录
  • 附录A Lua虚拟机指令集
  • 附录B Lua的EBNF语法
展开全部

评分及书评

评分不足
1个评分

出版方

机械工业出版社

机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。