自己动手实现Lua:虚拟机、编译器和标准库

自己动手实现Lua:虚拟机、编译器和标准库

自己动手系列

暂无评价综合评分的显示会考虑用户真实性等多项因素,每部作品出现综合评分的时间不定。
9.176 评价豆瓣读书

作品简介

本书是一本面向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. 前言
  2. 第一部分 准备
  3. 第1章 准备工作
  4. 1.1 准备开发环境
  5. 1.2 准备目录结构
  6. 1.3 本章小结
  7. 第二部分 Lua虚拟机和Lua API
  8. 第2章 二进制chunk
  9. 2.1 什么是二进制chunk
  10. 2.2 luac命令介绍
  11. 2.3 二进制chunk格式
  12. 2.4 解析二进制chunk
  13. 2.5 测试本章代码
  14. 2.6 本章小结
  15. 第3章 指令集
  16. 3.1 指令集介绍
  17. 3.2 指令编码格式
  18. 3.3 指令解码
  19. 3.4 测试本章代码
  20. 3.5 本章小结
  21. 第4章 Lua API
  22. 4.1 Lua API介绍
  23. 4.2 Lua栈
  24. 4.3 Lua State
  25. 4.4 测试本章代码
  26. 4.5 本章小结
  27. 第5章 Lua运算符
  28. 5.1 Lua运算符介绍
  29. 5.2 自动类型转换
  30. 5.3 扩展LuaState接口
  31. 5.4 测试本章代码
  32. 5.5 本章小结
  33. 第6章 虚拟机雏形
  34. 6.1 添加LuaVM接口
  35. 6.2 实现Lua虚拟机指令
  36. 6.3 指令分派
  37. 6.4 测试本章代码
  38. 6.5 本章小结
  39. 第7章 表
  40. 7.1 表介绍
  41. 7.2 表内部实现
  42. 7.3 表相关API
  43. 7.4 表相关指令
  44. 7.5 测试本章代码
  45. 7.6 本章小结
  46. 第8章 函数调用
  47. 8.1 函数调用介绍
  48. 8.2 函数调用栈
  49. 8.3 函数调用API
  50. 8.4 函数调用指令
  51. 8.5 测试本章代码
  52. 8.6 本章小结
  53. 第9章 Go函数调用
  54. 9.1 Go函数登场
  55. 9.2 Lua注册表
  56. 9.3 全局环境
  57. 9.4 测试本章代码
  58. 9.5 本章小结
  59. 第10章 闭包和Upvalue
  60. 10.1 闭包和Upvalue介绍
  61. 10.2 Upvalue底层支持
  62. 10.3 Upvalue相关指令
  63. 10.4 测试本章代码
  64. 10.5 本章小结
  65. 第11章 元编程
  66. 11.1 元表和元方法介绍
  67. 11.2 支持元表
  68. 11.3 调用元方法
  69. 11.4 扩展Lua API
  70. 11.5 测试本章代码
  71. 11.6 本章小结
  72. 第12章 迭代器
  73. 12.1 迭代器介绍
  74. 12.2 next()函数
  75. 12.3 通用for循环指令
  76. 12.4 测试本章代码
  77. 12.5 本章小结
  78. 第13章 异常和错误处理
  79. 13.1 异常和错误处理介绍
  80. 13.2 异常和错误处理API
  81. 13.3 error()和pcall()函数
  82. 13.4 测试本章代码
  83. 13.5 本章小结
  84. 第三部分 Lua语法和编译器
  85. 第14章 词法分析
  86. 14.1 编译器介绍
  87. 14.2 Lua词法介绍
  88. 14.3 实现词法分析器
  89. 14.4 LookAhead()和其他方法
  90. 14.5 测试本章代码
  91. 14.6 本章小结
  92. 第15章 抽象语法树
  93. 15.1 抽象语法树介绍
  94. 15.2 Chunk和块
  95. 15.3 语句
  96. 15.4 表达式
  97. 15.5 本章小结
  98. 第16章 语法分析
  99. 16.1 语法分析介绍
  100. 16.2 解析块
  101. 16.3 解析语句
  102. 16.4 解析表达式
  103. 16.5 测试本章代码
  104. 16.6 本章小结
  105. 第17章 代码生成
  106. 17.1 定义funcInfo结构体
  107. 17.2 编译块
  108. 17.3 编译语句
  109. 17.4 编译表达式
  110. 17.5 生成函数原型
  111. 17.6 使用编译器
  112. 17.7 测试本章代码
  113. 17.8 本章小结
  114. 第四部分 Lua标准库
  115. 第18章 辅助API和基础库
  116. 18.1 Lua标准库介绍
  117. 18.2 辅助API
  118. 18.3 基础库
  119. 18.4 测试本章代码
  120. 18.5 本章小结
  121. 第19章 工具库
  122. 19.1 数学库
  123. 19.2 表库
  124. 19.3 字符串库
  125. 19.4 UTF-8库
  126. 19.5 OS库
  127. 19.6 本章小结
  128. 第20章 包和模块
  129. 20.1 包和模块介绍
  130. 20.2 实现包库
  131. 20.3 测试本章代码
  132. 20.4 本章小结
  133. 第21章 协程
  134. 21.1 协程介绍
  135. 21.2 协程API
  136. 21.3 实现协程库
  137. 21.4 测试本章代码
  138. 21.5 本章小结
  139. 附录A Lua虚拟机指令集
  140. 附录B Lua语法EBNF描述
  141. 后记
载入中