随想录(lua源码学习)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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源码学习)相关推荐
- lua table源码学习
刚从超市回来,吃了一包樱桃很满足,哈哈,就接着跟着云大哥看看lua table部分的源码: table是lua里唯一暴漏给client的数据结构,肯定是大神们经过精心设计的.对于使用者简单易用,木有S ...
- Lua源码分析 - 基础篇 - Lua源码的结构和架构图(01)
目录 一.Lua语言简介 二.Lua架构图 三.Lua源码结构 很久很久没有写博客了,一直忙于工作和项目,最近依然想静下来阅读一些好的源码.自从读完了Nginx和Memcache的源码后,对服务器端的 ...
- PyTorch源码学习系列 - 1.初识
本系列文章会优先发布于微信公众号和知乎,欢迎大家关注 微信公众号:小飞怪兽屋 知乎: PyTorch源码学习系列 - 1.初识 - 知乎 (zhihu.com) 目录 本系列的目的 PyTorch是什 ...
- Shiro源码学习之二
接上一篇 Shiro源码学习之一 3.subject.login 进入login public void login(AuthenticationToken token) throws Authent ...
- Shiro源码学习之一
一.最基本的使用 1.Maven依赖 <dependency><groupId>org.apache.shiro</groupId><artifactId&g ...
- mutations vuex 调用_Vuex源码学习(六)action和mutation如何被调用的(前置准备篇)...
前言 Vuex源码系列不知不觉已经到了第六篇.前置的五篇分别如下: 长篇连载:Vuex源码学习(一)功能梳理 长篇连载:Vuex源码学习(二)脉络梳理 作为一个Web前端,你知道Vuex的instal ...
- vue实例没有挂载到html上,vue 源码学习 - 实例挂载
前言 在学习vue源码之前需要先了解源码目录设计(了解各个模块的功能)丶Flow语法. src ├── compiler # 把模板解析成 ast 语法树,ast 语法树优化,代码生成等功能. ├── ...
- 2021-03-19Tomcat源码学习--WebAppClassLoader类加载机制
Tomcat源码学习--WebAppClassLoader类加载机制 在WebappClassLoaderBase中重写了ClassLoader的loadClass方法,在这个实现方法中我们可以一窥t ...
- jQuery源码学习之Callbacks
jQuery源码学习之Callbacks jQuery的ajax.deferred通过回调实现异步,其实现核心是Callbacks. 使用方法 使用首先要先新建一个实例对象.创建时可以传入参数flag ...
最新文章
- ndk 不用java_使用NDK创建及配置C++程序(原生纯C++项目,不包含JAVA代码)
- windows server 2008R2 上安装配置freesshd
- 简单的启动代码 IMPORT |Image$$RO$$Limit|
- 工业级光纤收发器使用“避坑”指南
- mysql配置两个猪数据库_Linux下安装启动多个Mysql
- R语言学习笔记(七)方差分析
- python判断手机号码是否正确_Python实现随机生成手机号及正则验证手机号的方法...
- java判断线段是否相交函数_计算几何-判断线段是否相交
- 三、MQTT Windosw下的 进一步调试
- 水晶报表基础入门——6.交叉报表设计技术
- 如何安装仿宋GB2312字体
- Hadoop,HBASE启动命令
- Oracle实现网吧计费系统,毕业设计(论文)-网吧计费管理系统设计.doc
- idea can‘t update no tracked branch choose upstream branch git
- docker网络端口映射
- 建立良好人际关系的原则
- Kernel:里的某某某;xxx
- TensorFlow练手项目二:基于循环神经网络(RNN)的古诗生成器
- Redis - 几款可视化工具
- java生成二维码扫描跳转到指定的路径URL
热门文章
- C#中几种代码复用的方式
- 写一个centos字符界面下的电量显示脚本
- 基础篇5-python基本数据类型讲解1.1
- 解决“终端服务器超过了最大允许连接数”
- ASP.NET Core的身份认证框架IdentityServer4--(5)自定义用户登录(通过接口登录,无UI版本)...
- flask-limiter限制单个IP访问的频率和次数
- Jqgrid pager 关于“local” dataType 动态加载数据分页的研究(没好用的研究结果)...
- IIS7.5(IIS7)配置伪静态urlrewrite
- 报表中表达式的全局集合(Visual Studio 报表设计器)
- Oracle数据库一致性读的原理