6.1 Lua词法 语言的解析一般是两遍遍历的过程,第一遍生成AST,第二遍将AST翻译为字节码。 Lua使用一遍扫描代码文件的方式生成字节码,以加快解释执行的速度。但缺点是代码比较难以理解。如 dostat -> DO block &n
转载
2024-03-19 22:35:03
411阅读
2012-12-06 15:06:56
Python/Ruby
注:以下例子选自LuaForWindows(LFW)组件QuickLuaTour,对其中做了一些主要的翻译并加上了个人的理解注释,没有安装过LFW的朋友可以一看,虽然例子很简单,但是对初学者快速入门会有所帮助。
关键词:Lua、Lua实例、QuickLuaTour、LFW、Lua入门
-- Example 1
Lua 协同程序Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。
线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行。
在任一指定时刻只有一个协同程序在运行,并且这个正在运行的协同程序只有在明确的被要求挂起的时候才会被挂起。
协同程序有点类似
转载
2024-04-22 19:35:50
78阅读
Lua提供高级的require函数来加载运行库。粗略的说require和dofile完成同样的功能但有两点不同:1. require会搜索目录加载文件2. require会判断是否文件已经加载避免重复加载同一文件。由于上述特征,require在Lua中是加载库的更好的函数。require使用的路径和普通我们看到的路径还有些区别,我们一般见到的路径都是一个目录列表。r
转载
2024-04-23 10:32:18
66阅读
lua字符串内部存储分为短字符串和长字符串,可以从下面的宏看出:#define LUA_TSTRING 4
/* Variant tags for strings */
#define LUA_TSHRSTR (LUA_TSTRING | (0 << 4)) /* short strings */
#define LUA_TLNGSTR (LUA_TSTRING | (1 <
转载
2024-03-28 22:52:59
116阅读
从 Lua 的用户文档中我们知道 require("modName") 函数是用来加载模块的,而如果这个modName已经用require 加载过的,再调用require时,将直接返回模块的值。因为函数首先查找 package.loaded 表, 检测 modName 是否被加载过, 如果被加载过了,直
转载
2024-03-15 19:56:47
187阅读
Lua 中的函数是一阶类型值(first-class value),定义函数就象创建普通类型值一样(只不过函数类型值的数据主要是一条条指令而已),所以在函数体中仍然可以定义函数。假设函数f2定义在函数f1中,那么就称f2为f1的内嵌(inner)函数,f1为f2的外包(enclosing)函数,外包和内嵌都具有传递性,即f2的内嵌必然是f1 的内嵌,而f1的外包也一定是f2的外包。内嵌函数可以访问
(接上篇)-------------------5.8 执行 Lua 代码-------------------一个宿主程序可以执行写在文件中或在字符串中的 Lua 块,使用下面的函数:int lua_dofile (lua_State *L, const char *filename);
int lua_dostring (lua_State *L, const char
转载
2024-03-28 15:56:35
418阅读
XLua下载地址:https://github.com/Tencent/xLuaPaste_Image.png 下载后接下来就是导入XLua到unity里了,解析出来的XLua有下面几个文件夹 Paste_Image.png 我们只需要将Assests:主目录里面的东西全部导入到Unity里面就OK了,导入后再XLua的文件夹下有这么几个。里面都有学习的文档,也可自行
day1--[[function fuc(n)if n==0 thenreturn 1elsereturn n*fuc(n-1)endendprint("in
原创
2023-05-08 16:18:21
376阅读
lr关联:手工关联和自动关联简单的说,每一次执行时都会变动的值,就有可能需要做关联(correlation)。VuGen提供二种方式帮助您找出需要做关联(correlation)的值:自动关联手动关联一手工关联lr8.0之前的实现原理是:在客户端和服务端之间设置一个proxy,拦截client和server之间的数据,产生脚本,当然是根据所选定的协议和端口.正因为如此,写在脚本中的,我们模拟客户端
逻辑运算符认为 false 和 nil 是假(false),其他为真,0 也是 true.and 和 or ,~=and 和 or 的运算结果不是 true 和 false,而是和它的两个操作数相关。~=表示不等于a and b -- //如果 a 为 false,则返回 a,否则返回 b
a or b -- //如果 a 为 true,则返回 a,否则返回 b
一个很实用的技巧:如
转载
2024-06-09 22:24:00
883阅读
使用cocos2dx-lua做开发,免不了需要利用额外的lua扩展库。lua 扩展库一般由 c/c++ 写成,其接口有两种方式生成,一种是手写luaL_register(lua5.1),另一种是利用 tolua++ 工具。这里讨论的是前者,即如何把已经写好的库导入到cocos2dx项目中使用。项目采用的是 cocos2dx-3.x 版本,涉及到的目录文件请对号入座。准备所需的库首先我们要知道,co
转载
2024-04-05 13:16:53
0阅读
openresty,lua,shell执行服务器脚本为什么不直接通过==php==来调用系统命令而单独写一个监控脚本呢?关于监控脚本为什么用==openresty/ngx_lua==怎么做?1.下载安装麻省理工==Juce==版的 ==lua_resty_shell==2.下载安装 ==sockproc==3. 编写lua脚本 最近安装了openresty ,想做一个通过git各大代码托管平台提
转载
2024-03-05 22:54:53
164阅读
这次会介绍一下如果将 Lua 引入到 cocos2d 的项目中去,以便更方便的进行游戏项目调试。本次测试采用了最新版本的 cocos2d-iphone v1.1,最新版本代码可以从这里下载:Github。Lua 版本采用 5.2.0,请到这里下载:Lua.org。XCode 使用 XCode4。前面多说一句,如果是第一次使用 cocos2d,那么请在解压 cocos2d 压缩包
转载
2024-04-07 08:37:06
74阅读
1.版本1.1vs版本vs20131.2lua版本lua5.1,用luaForWindow安装2.c调用lua2.1编写lua代码callLuaTest.luafunction add(a,b)
return a+b;
end
function sub(a,b)
return a-b;
end然后把lua文件复制到项目目录下。2.2复制头文件vs创建控制台程序,在lua的安装目录
转载
2024-04-12 14:35:44
181阅读
无论是 lua_dostring 或者是 lua_dofile,都调用了语法分析 lua_parse。在 lua 里面语法分析器是用 yacc 生成的,就是y.tab.c 文件,lua.stx 就是 yacc 的输入文件。这里说的东西基本上编译原理书里都有介绍,如需要进一步了解,请自行参阅。在说语法分析之前,说下词法分析。lua 的词法分析是手写的,手写的词法分析性能比较好,这个在 lua1.1
转载
2024-06-14 21:03:06
130阅读
在C语言中,可以通过调用lua_register或者luaL_newlib将C函数注册到lua环境,供lua脚本使用。同样道理,C语言也可以通过lua API调用lua函数。具体例子:
1. #include <lua.h>
2. #include <lauxlib.h>
3.
4. #include <stdlib.h> /* For function ex
转载
2023-06-09 19:50:03
510阅读
require:只加载一次,后面不会执行dofile:每一次文件都会执行loadfile:载入后不执行,等你需要的时候执行时local HaosModel = {}
local function getname()
return "Hao&n
原创
2016-06-23 17:46:47
5325阅读
Does the equivalent to t[k] = v, where t is the value at the given index, v is the value at the top of the stack, and k is the value just below the to
转载
2018-04-29 19:43:00
381阅读
2评论