【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

lua本身作为非常优秀的语言,在游戏和项目开发中占有举足轻重的角色。因此,很多朋友都希望自己可以看看lua是怎么设计的。网上关于lua的教程很多,不过我还是建议大家可以找一找低阶版本的lua版本进行阅读。只要掌握一点lex、bison和vm的知识,lua本身并不复杂。

1、选择哪个版本?

我个人建议选择lua-1.1.tar.gz版本,这个版本中少有的包含了词法分析文件lua.lex和语法分析文件lua.stx。

2、怎么编译?

直接./domake就可以了,少量的编译错误大家可以自己解决。

3、主要代码怎么分布?

项目主要包含了bin/clients/doc/include/lib/src/test等目录。其中bin、lib用来保存生成的文件。doc为文档目录。include为头文件目录。clients和src为主要的代码目录,clients中包含了lib文件、lua入口文件,而src包含了主要的编译文件、虚拟机执行文件等等。test目录包含了很多lua代码,可以用来进行测试。

4、lua.lex & lua.stx做什么用?

这两个文件主要用来生成对应的c文件,做字符解析和语法解析使用。其中lua.lex生成的c文件为lex.c,lua.stx生成的文件为y.tab.c。

5、虚拟机执行在那个文件?

虚拟机执行主要在lua_execute这个函数,在opcode.c文件中。

6、lua执行的基本流程是什么?

整个lua解析的流程不复杂,从main->lua_dofile->lua_parse->lua_execute,基本流程就是这样的。

7、如果需要从c调用lua怎么办?

lua-1.1.tar.gz其实提供了lua_call这个函数来实现这一目标,但是好像没有地方用到这个函数。

8、想学习lua调用c怎么办?

直接学习clients/lib/mathlib.c等函数,活学活用。

9、其他要注意什么?

利用lua.lex和lua.stx掌握lua的基本规则,配合lua_execute学习,都可以学得会。大家不用有任何心理负担。

随想录(lua源码学习)相关推荐

  1. lua table源码学习

    刚从超市回来,吃了一包樱桃很满足,哈哈,就接着跟着云大哥看看lua table部分的源码: table是lua里唯一暴漏给client的数据结构,肯定是大神们经过精心设计的.对于使用者简单易用,木有S ...

  2. Lua源码分析 - 基础篇 - Lua源码的结构和架构图(01)

    目录 一.Lua语言简介 二.Lua架构图 三.Lua源码结构 很久很久没有写博客了,一直忙于工作和项目,最近依然想静下来阅读一些好的源码.自从读完了Nginx和Memcache的源码后,对服务器端的 ...

  3. PyTorch源码学习系列 - 1.初识

    本系列文章会优先发布于微信公众号和知乎,欢迎大家关注 微信公众号:小飞怪兽屋 知乎: PyTorch源码学习系列 - 1.初识 - 知乎 (zhihu.com) 目录 本系列的目的 PyTorch是什 ...

  4. Shiro源码学习之二

    接上一篇 Shiro源码学习之一 3.subject.login 进入login public void login(AuthenticationToken token) throws Authent ...

  5. Shiro源码学习之一

    一.最基本的使用 1.Maven依赖 <dependency><groupId>org.apache.shiro</groupId><artifactId&g ...

  6. mutations vuex 调用_Vuex源码学习(六)action和mutation如何被调用的(前置准备篇)...

    前言 Vuex源码系列不知不觉已经到了第六篇.前置的五篇分别如下: 长篇连载:Vuex源码学习(一)功能梳理 长篇连载:Vuex源码学习(二)脉络梳理 作为一个Web前端,你知道Vuex的instal ...

  7. vue实例没有挂载到html上,vue 源码学习 - 实例挂载

    前言 在学习vue源码之前需要先了解源码目录设计(了解各个模块的功能)丶Flow语法. src ├── compiler # 把模板解析成 ast 语法树,ast 语法树优化,代码生成等功能. ├── ...

  8. 2021-03-19Tomcat源码学习--WebAppClassLoader类加载机制

    Tomcat源码学习--WebAppClassLoader类加载机制 在WebappClassLoaderBase中重写了ClassLoader的loadClass方法,在这个实现方法中我们可以一窥t ...

  9. jQuery源码学习之Callbacks

    jQuery源码学习之Callbacks jQuery的ajax.deferred通过回调实现异步,其实现核心是Callbacks. 使用方法 使用首先要先新建一个实例对象.创建时可以传入参数flag ...

最新文章

  1. ndk 不用java_使用NDK创建及配置C++程序(原生纯C++项目,不包含JAVA代码)
  2. windows server 2008R2 上安装配置freesshd
  3. 简单的启动代码 IMPORT |Image$$RO$$Limit|
  4. 工业级光纤收发器使用“避坑”指南
  5. mysql配置两个猪数据库_Linux下安装启动多个Mysql
  6. R语言学习笔记(七)方差分析
  7. python判断手机号码是否正确_Python实现随机生成手机号及正则验证手机号的方法...
  8. java判断线段是否相交函数_计算几何-判断线段是否相交
  9. 三、MQTT Windosw下的 进一步调试
  10. 水晶报表基础入门——6.交叉报表设计技术
  11. 如何安装仿宋GB2312字体
  12. Hadoop,HBASE启动命令
  13. Oracle实现网吧计费系统,毕业设计(论文)-网吧计费管理系统设计.doc
  14. idea can‘t update no tracked branch choose upstream branch git
  15. docker网络端口映射
  16. 建立良好人际关系的原则
  17. Kernel:里的某某某;xxx
  18. TensorFlow练手项目二:基于循环神经网络(RNN)的古诗生成器
  19. Redis - 几款可视化工具
  20. java生成二维码扫描跳转到指定的路径URL

热门文章

  1. C#中几种代码复用的方式
  2. 写一个centos字符界面下的电量显示脚本
  3. 基础篇5-python基本数据类型讲解1.1
  4. 解决“终端服务器超过了最大允许连接数”
  5. ASP.NET Core的身份认证框架IdentityServer4--(5)自定义用户登录(通过接口登录,无UI版本)...
  6. flask-limiter限制单个IP访问的频率和次数
  7. Jqgrid pager 关于“local” dataType 动态加载数据分页的研究(没好用的研究结果)...
  8. IIS7.5(IIS7)配置伪静态urlrewrite
  9. 报表中表达式的全局集合(Visual Studio 报表设计器)
  10. Oracle数据库一致性读的原理