阅读专题提供阅读的最新资讯内容,帮你更好的了解阅读。
  调用关系见下图 需要明白的概念: 要清楚什么是chunk,chunk是递归定义的,即lua的脚本程序本身就是chunk,示意如下: ---chunk repeat repeat     line = io.read() until line ~= " " print(line) --- chunk function function fact(n)     if n==0 then      
距离写的上一篇lua源码阅读,已经一个月了,在这一个月里,除了正常上班之外,业余时间都去玩战神-奥林匹斯之链了,当然,lua源码阅读的任务也在进行中。 接下来,将对个人在过去一个月的业余时间里阅读lua源码进行一下总结,,将陆续写一些个人阅读lua源码时的一些分析、一些疑问等等,力争保证每天一篇,力争在2010年结束之前写完。废话不多了,开始本篇的主题吧。   本篇文章,主要探讨一下lua中的内存
本篇文章,主要探讨一下lua中的字符串缓存管理(涉及到的文件 lstring.c )。   在lua的9种数据类型中,字符串是属于可以被GC回收的类型。在lua中,操作字符串实际上是在操作字符串引用,当字符串不在被使用的时候,GC会通过一定算法回收。   --lua9种数据类型: #define LUA_TNIL 0 #define LUA_TBOOLEAN 1 #define LUA_T
本篇文章,主要探讨一下lua中的指令系统(涉及到的文件 lopcodes.c )。   在lua中,用32位的unsigned int类型来表示一条指令操作码,32位值包含了6位的操作码和26位的指令字段两部分内容。   All instructions have an opcode in the first 6 bits.   Instructions can have the followin
Online Lua 5.1 source code browser Recommended reading order: lmathlib.c, lstrlib.c: get familiar with the external C API. Don't bother with the pattern matcher though. Just the easy functions. lapi.c
Lua的object定义在lobject.h文件中。Lua中总有有9种数据类型:nil, boolean, lightuserdata, number, string, table, userdata, thread, function,用数字0-8来表示: #define LUA_TNIL 0 #define LUA_TBOOLEAN 1 #define LUA_TLIGHTUSERDATA
最近感觉没啥可看,就看一下lua源码,打发打发时间吧。 首先需要下载编译lua源码了,笔者是在Windows+VS2005下编译通过   1.首先需要去官方网站上下载lua源码,到www.lua.org上下载lua源码,目前最新版本是5.1 RC4版本lua-5.1.4.tar.gz,解压之后,目录下有install文件,在该文件中详细说明了在linux下编译的过程,visual studio下的
一、Lua5.1相关资源 下载见: http://luabinaries.sourceforge.net/download.html 在线版: http://www.lua.org/source/5.1/ 关于它的代码有一个阅读顺序,可以参考这篇文章: http://www.reddit.com/comments/63hth/ask_reddit_which_oss_codebases_out_t
一、作用和参考资料 llex.c是Lua的词法分析器(把单个输入字符串切割为多个输出符号) 参考: 1. Lua 5.1.3源代码分析之词法分析 By 天地沙鸥 http://xenyinzen.wordpress.com/2009/12/09/lua-5-1-3%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%90%E4%B9%8B%E8%AF%8D%E6%B
一、概述 lcode.h/lcode.c是Lua的代码生成器, 用于优化和生成目标二进制代码。 lcode.c的所有导出函数只被lparser.c引用。 lcode内部的函数引用图如下:   二、宏 1. #define NO_JUMP (-1) 2. #define getcode(fs,e)((fs)->f->code[(e)->u.s.info]) 3. #define luaK_codeA
一、概述 lparser.h/lparser.c是Lua的语法分析器。 用于分析Lua脚本的语法以及把上下文信息传递给代码生成器, 完成文本代码到二进制代码的转换,以及语法检查。 在线版: http://www.lua.org/source/5.1/lparser.h.html http://www.lua.org/source/5.1/lparser.c.html lparser内部主要函数的引
一、概述 lundump.h和lundump.c是lua预编译二进制代码的加载器。 不同于llex/lparser/lcode串联起来对文本脚本的解析和编译, lundump解析的是二进制脚本文件(由luac编译生成)。 它的公开接口luaU_undump和luaY_parser的声明原型是相同的, 所以可以把lundump看成是lparser的另一种实现。 另外,由于lundump解析的二进制文
一、概览 ltm.h/ltm.c的作用是提供查询元方法(元方法的值可能是函数,也可能是非函数的值)的API。 源码中把元方法称为标签方法(tag method)。 Lua的元方法有点像C++的运算符重载,用于覆盖一些Lua内部定义的默认行为。 参考链接: 1. LUA源码分析五:元表 http://lin-style.iteye.com/blog/1012138 2. Lua GC 的源码剖析 (
一、概览 lvm.h/lvm.c的作用是提供底层的Lua虚拟机。 这个模块主要是用于循环读取并分解指令, 然后根据其操作码的枚举值进行处理或跳转到Lua的其它模块。 内部的函数引用图如下:   参考资料: * A No-Frills Introduction to Lua 5.1 VM Instructions http://luaforge.net/docman/83/98/ANoFrillsI
一、概览 ldo.h/ldo.c描述Lua的堆栈和调用的结构。 提供对调用、协程、异常等复杂控制流的支持。 模块中对外公开的API主要分为以下几类: (1) 错误恢复: luaD_seterrorobj,luaD_throw,luaD_rawrunprotected,luaD_pcall (2) 堆栈操纵: luaD_reallocCI luaD_reallocstack,luaD_growsta
官网:http://www.lua.org/ 手册:http://www.lua.org/manual/5.2/manual.html 社区:http://lua-users.org/ 论坛:http://www.luaer.cn/ 在线中文手册:http://manual.luaer.cnhttp://www.codingnow.com/2000/download/lua_manual.html
Lua 的源代码有着良好的设计,优美易读。其整体篇幅不大,仅两万行 代码左右。但一开始入手阅 读还是有些许难度的。 从易到难,理清作者编写代码的脉络非常重要。LuaJIT 的作者 在回答“哪一个开源代码项目 设计优美,值得阅读不容错过”这个问题时,推荐了一个阅读次序: 首先、阅读外围的库是如何实现功能扩展的,这样可以熟悉 LUA公开 API 。不必陷入功能细节。 然后、阅读 API 的具体实现。L
   lualib.h   打开Lua api库函数    Lua5.3中新增utf8库 #define LUA_UTF8LIBNAME "utf8" LUAMOD_API int (luaopen_utf8) (lua_State *L); 标准库提供了一些有用的函数, 它们都是直接用 C API 实现的。 其中一些函数提供了原本语言就有的服务 (例如,type 与 getmetatable);
  数据结构 /*     1: table的数组部分被储存在TValue *array中,其长度信息存于int sizearray;     2: 哈希表储存在Node *node,哈希表的大小用 lu_byte lsizenode 表示;     3: 由于哈希表的大小一定为2的整数次幂,所以这里的lsizenode表示的是幂次,而不是实际大小     4:每个table结构,最多会由三块连续