Lua 简单Lua解释器源码分析

#include <stdio.h>
#include <string.h>
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
int main (void) {
char buff[256];
int error;
lua_State *L = luaL_newstate(); /* 创建Lua环境 */
luaL_openlibs(L); /* 打开所有标准库 */
while (fgets(buff, sizeof(buff), stdin) != NULL) {
    error = luaL_loadstring(L, buff) || lua_pcall(L, 0, 0, 0);
    if (error) {
        fprintf(stderr, "%s\n", lua_tostring(L, -1));
        lua_pop(L, 1); /* 从栈中弹出错误消息 */
    }
}
lua_close(L);
return 0;
}

lua.h定义了Lua提供的基础函数,包括创建Lua环境、调用Lua函数,它的定义是以lua_开头的。
lauxlib.h(auxiliary library, 简写auxlib)定义了辅助库提供的函数,它的所有定义都是luaL_开头的。
lualib.h定义了打开指定的标准库的函数。而luaL_openlibs则可以打开所有的标准库。

luaL_newstate()用于创建新环境。
luaL_loadstring和lua_pcall调用成功时返回0,若失败将错误消息压入栈。lua_pcall用于在栈中弹出调用函数。

如果你用C 方式来编译它,但用在C++中,那么你需要象下面这样来包含lua.h头文件。

extern "C" {
#include <lua.h>
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值