android内核lua解释器,一个简单的Lua解释器

#include "stdafx.h"

#include

#include

#include

#include

#include

#include

extern "C"{

#include "lua.h"

#include "lauxlib.h"

#include "lualib.h"

}

lua_State *L;

void errormethod(const char *fmt, ...){

va_list argp;

va_start(argp, fmt);

vfprintf(stderr, fmt, argp);

va_end(argp);

lua_close(L);

//exit(EXIT_FAILURE);

}

static int l_sin(lua_State* L){

//double d = lua_tonumber(L, 1);

double d = luaL_checknumber(L, 1);

lua_pushnumber(L, sin(d));

//printf("call1 %f\n", d);

return 1;

}

static int add(lua_State* L){

int n1 = lua_tonumber(L, 1);

int n2 = lua_tonumber(L, 2);

int sum = n1 + n2;

lua_pushnumber(L, sum);

//printf("call2 %f\n", d);

return 1;

}

int main(int argc, char* argv[])

{

char buff[256];

int error;

L = luaL_newstate();//创建Lua环境

luaL_openlibs(L);//加载标准库

lua_pushcfunction(L, l_sin);

lua_setglobal(L, "mysin");

lua_pushcfunction(L, add);

lua_setglobal(L, "add");

while(fgets(buff, sizeof(buff), stdin) != NULL){

error = luaL_loadbuffer(L, buff, strlen(buff), "line") || lua_pcall(L, 0, 0, 0);

if(error){

//errormethod("%s\n", lua_tostring(L, -1));

fprintf(stderr, "%s\n", lua_tostring(L, -1));

lua_pop(L, -1);

}

}

//lua_close(L);

system("pause");

return 0;

}

From Lua程序设计..

给我的认识是

Lua仅仅是一门嵌入式的脚本语言

需要宿主语言去启动它。

使用lua实现一个简单的事件派发器

设计一个简单的事件派发器,个人觉得最重要的一点就是如何保证事件派发过程中,添加或删除同类事件,不影响事件迭代顺序和结果,只要解决这一点,其它都好办. 为了使用pairs遍历函数,重写了pairs(lu ...

[Ruby on Rails系列]6、一个简单的暗语生成器与解释器(上)

[0]Ruby on Rails 系列回顾 [Ruby on Rails系列]1.开发环境准备:Vmware和Linux的安装 [Ruby on Rails系列]2.开发环境准备:Ruby on Ra ...

Lua程序设计(三)面向对象实现一个简单的类

1.Lua面向对象实现步骤 ①创建一个全局表(称之为元表) ②设置这个元表的__index值(值通常为元表自己,这样就能通过__index查找到对应的属性和方法)__index 赋值其实是一个func ...

[原][译][lua][luabridge]一个简单的luabridge与c++例子结合例子

参考:https://eliasdaler.wordpress.com/tag/luabridge/ https://eliasdaler.wordpress.com/2015/08/10/using ...

Lua 解释器

Lua 解释器 警告⚠️:这将是一个又臭又长的系列教程,教程结束的时候,你将拥有一个除了性能差劲.扩展性差.标准库不完善之外,其他方面都和官方相差无几的 Lua 语言解释器.说白了,这个系列的教程实现 ...

从零开始的Lua宅[1]:编译Lua解释器

Lua是一门神奇的脚本语言,游戏宅必备,懒人必备.Lua差多不是学起来用起来最简单的语言了,以至于简单到自身就是文档,自身就是配置文件.但是Lua的运行效率却是众多脚本中非常高的,据说仅次于V8爹下的 ...

Cocos2d-x-Lua 开发一个简单的游戏(记数字步进白色块状)

Cocos2d-x-Lua 开发一个简单的游戏(记数字步进白色块状) 本篇博客来给大家介绍怎样使用Lua这门语言来开发一个简单的小游戏-记数字踩白块. 游戏的流程是这种:在界面上生成5个数1~5字并显 ...

扩展Python模块系列(二)----一个简单的例子

本节使用一个简单的例子引出Python C/C++ API的详细使用方法.针对的是CPython的解释器. 目标:创建一个Python内建模块test,提供一个功能函数distance, 计算空间中两 ...

python制作一个简单的中奖系统

注释: 展示图下的代码,我是用pycharm写的,是python解释器中的一种,本课没不同解释器的要求,可根据自己喜欢的解释器编写. 步骤: 本期给大家带来的是,一个简单的中奖系统,首先打开自己电脑上 ...

随机推荐

xcode8升级后问题总汇

一.注释快捷键无法使用 command + / 快捷键无法使用,在终端执行以下命令,然后重启Xcode即可.   1 sudo /usr/libexec/xpccachectl 二.注释快捷键 Xco ...

关于request.getParameterMap()的类型转换和数据获取

首先po上一个自己写的转换类. /** * @author Xfiler * @described 将request.getParameterMap()转换为普通的Map的工具方法 * @param ...

Windows及Linux平台下的计时函数总结

本文对Windows及Linux平台下常用的计时函数进行总结,包括精度为秒.毫秒.微秒三种精度的各种函数.比如Window平台下特有的Windows API函数GetTickCount().timeG ...

css选择器分类

css选择器大致可以分为10大类: 1.元素选择器 如:p{} 2.类选择器 如:.xx{} 3.ID选择器 如:#xx{} 4.关联选择器 如:p a{} 5.子元素选择器 如:p>a{} 6 ...

Codeforces 375

A 7的所有的余数都可以用1,6,8,9排列得到,然后搞一下就可以了. B 可以用类似于单调队列的东西搞.具体看代码: /* * Problem: B. Maximum Submatrix 2 * A ...

Fortify 4.0 帮助文档下载

Fortify 4.0 帮助文档下载 http://pan.baidu.com/s/1hqzbF8o

Linux Shell编程(11)——退出和退出状态

exit命令一般用于结束一个脚本,就像C语言的exit一样.它也能返回一个值给父进程.每一个命令都能返回一个退出状态(有时也看做返回状态).一个命令执行成功返回0,一个执行不成功的命令则返回一个非零值 ...

抓取锁的sql语句-第七次修改

最近闲来没事,把之前写的那个抓取锁的存储过程重新修改.优化了一下,呵呵 create or replace procedure solve_lock_061203_wanjie(v_msg out v ...

正确在遍历中删除List元素

最近在写代码的时候遇到了遍历时删除List元素的问题,在此写一篇博客记录一下. 一般而言,遍历List元素有以下三种方式: 使用普通for循环遍历 使用增强型for循环遍历 使用iterator遍历 ...

NOIP2018Day1T2 货币系统

题目描述 在网友的国度中共有 \(n\) 种不同面额的货币,第 \(i\) 种货币的面额为 \(a[i]\),你可以假设每一种货币都有无穷多张.为了方便,我们把货币种数为 \(n\).面额数组为 \( ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值