一个简单的Lua解释器】的更多相关文章

#include "stdafx.h" #include<stdarg.h> #include<stdlib.h> #include<stdio.h> #include<string.h> #include<math.h> #include<errno.h> extern "C"{ #include "lua.h" #include "lauxlib.h"…
设计一个简单的事件派发器,个人觉得最重要的一点就是如何保证事件派发过程中,添加或删除同类事件,不影响事件迭代顺序和结果,只要解决这一点,其它都好办. 为了使用pairs遍历函数,重写了pairs(lua 5.2以上版本不需要): stdext.lua local _ipairs = ipairs function ipairs(t) local mt = getmetatable(t) if mt and mt.__ipairs then return mt.__ipairs(t) end re…
[0]Ruby on Rails 系列回顾 [Ruby on Rails系列]1.开发环境准备:Vmware和Linux的安装 [Ruby on Rails系列]2.开发环境准备:Ruby on Rails开发环境配置 [Ruby on Rails系列]3.初试Rails:使用Rails开发第一个Web程序 [Ruby on Rails系列]4.专题:Rails应用的国际化[i18n] [Ruby on Rails系列]5.专题:Talk About SaSS [1]任务目标 本次主要是要实现一…
1.Lua面向对象实现步骤 ①创建一个全局表(称之为元表) ②设置这个元表的__index值(值通常为元表自己,这样就能通过__index查找到对应的属性和方法)__index 赋值其实是一个function的语法糖,Sharp.__index = Sharp等价于Sharp.__index = function(key) return Sharp[key] end ③新建一个表,使用setmetatable方法将元表设置到这个新表中,那这个新表就能以对象的方式来调用对应的属性和方法了,当这个对…
参考:https://eliasdaler.wordpress.com/tag/luabridge/ https://eliasdaler.wordpress.com/2015/08/10/using-lua-and-cpp-in-practice/ 1. ECS和基本原理介绍 本译文主要说明以下几点: 实体的创建和其他基本的东西(你正在阅读这篇文章了) 如何实现实体的创建 Lua状态管理和清理 脚本状态机 事件和回调 先看看c++代码创建实体: Entity e; auto gc = new…
Lua 解释器 警告⚠️:这将是一个又臭又长的系列教程,教程结束的时候,你将拥有一个除了性能差劲.扩展性差.标准库不完善之外,其他方面都和官方相差无几的 Lua 语言解释器.说白了,这个系列的教程实现的是一个玩具语言,仅供学习,无实用性.请谨慎 Follow,请谨慎 Follow,请谨慎 Follow. 前言 编译原理是计算机科学的一个重要且复杂的知识体系.这个系列教程也只是你入门前的垫脚石.但即使如此,也并不代表这个教程就很简单,如果决定开始,请坚持到底.这是一个认真严肃的教程(咳咳),它不像…
Lua是一门神奇的脚本语言,游戏宅必备,懒人必备.Lua差多不是学起来用起来最简单的语言了,以至于简单到自身就是文档,自身就是配置文件.但是Lua的运行效率却是众多脚本中非常高的,据说仅次于V8爹下的js.主要原因是它是主要和c/c++打交道嵌入式脚本,c++的逻辑写的着实蛋疼的时候可以考虑下这门脚本语言. Lua有直接的windows安装包的,还内置了一个编辑器很不错.但是为了更深层次的理解Lua,本文主要介绍下如何利用Lua源码来自己编译解释器. 首先我们去下载一下Lua的本体... 百度输…
Cocos2d-x-Lua 开发一个简单的游戏(记数字步进白色块状) 本篇博客来给大家介绍怎样使用Lua这门语言来开发一个简单的小游戏-记数字踩白块. 游戏的流程是这种:在界面上生成5个数1~5字并显示在随机的位置上,点击第一个数字,其它数字会显示成白块数字消失,玩家能够通过记住数字的显示的位置点击按顺序消除白块,直到白块消除完,游戏成功. 效果图例如以下: 先说明一下笔者的开发环境: Xcode 5.1(Mac系统下的苹果开发工具) Cocos2d-x 3.1.1(Cocos2d-x游戏引擎)…
本节使用一个简单的例子引出Python C/C++ API的详细使用方法.针对的是CPython的解释器. 目标:创建一个Python内建模块test,提供一个功能函数distance, 计算空间中两个点之间的距离. 可以在Python代码这样使用test模块: import test s = test.distance((0, 0, 0), (1, 1, 1)) 先上代码: [test.c] #include <Python.h> #include <math.h> static…
注释: 展示图下的代码,我是用pycharm写的,是python解释器中的一种,本课没不同解释器的要求,可根据自己喜欢的解释器编写. 步骤: 本期给大家带来的是,一个简单的中奖系统,首先打开自己电脑上的python解释器,然后我们在解释器中导入random库 (库:是指封装好的一些功能)(random:函数库)调用语句(import random),接着"input"输入的数转到int整型数值. 来储存输入的数值,新建一个变量来储存 代码如下: num = int(input(&quo…
之前看过一些开源程序的源码,也略微知道些Apache的CGI处理程序架构,于是用了一周时间,用C写了一个简单的CGI Server,代码算上头文件,一共1200行左右,难度中等偏上,小伙伴可以仔细看看,对于学生来说,拿来当简历,含金量还是足够的.如果把程序里所涉及的HTTP协议,Linux下POSIX编程等等搞清楚,我想找工作中肯定是有足够的竞争力的,当然我也只是皮毛而已,不再班门弄斧了,下面简单的说下程序流程吧,方便小伙伴们阅读. 程序源代码:戳我 在说程序流程之前,我先简单说下CGI吧,CG…
看到Freebuf 小编发表的用这个隐藏于PHP模块中的rootkit,就能持久接管服务器文章,很感兴趣,苦无作者没留下PoC,自己研究一番,有了此文 0×00. 引言 PHP是一个非常流行的web server端的script语言.目前很多web应用程序都基于php语言实现.由于php是个开源软件并易于扩展,所以我们可以通过编写一个PHP模块(module 或者叫扩展 extension)来实现一个Backdoor. 本文就简单介下如何一步步编写一个简单的php 动态扩展后门. 0×01. p…
人们似乎觉得编写垃圾回收机制是非常难的,是一种仅仅有少数智者和Hans Boehm(et al)才干理解的高深魔法.我觉得编写垃圾回收最难的地方就是内存分配,这和阅读K&R所写的malloc例子难度是相当的. 在開始之前有一些重要的事情须要说明一下:第一.我们所写的代码是基于Linux Kernel的.注意是Linux Kernel而不是GNU/Linux.第二,我们的代码是32bit的.第三.请不要直接使用这些代码.我并不保证这些代码全然正确,可能当中有一些我还未发现的小的bug,可是总体思路…
- 2. Tinyhttpd tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Http Server 的本质. 下载链接:http://sourceforge.net/projects/tinyhttpd/ - 3. cJSON cJSON是C语言中的一个JSON编解码器,非常轻量级,C文件只有500多行,速度也非常理想. cJSON也存在几个弱点,虽然功能不是非常强大,但cJSO…
作者:aaaron7 链接:https://www.zhihu.com/question/36756224/answer/88530013 如果是用 Haskell 的话,三篇文章足矣. prerequisite: 懂 state monad就行了 第一篇,<How to build a monadic interpreter in one day>http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.368.2522 跟着做,可以完成…
一个简单的木马程序 绝大多数的木马程序都是基于Socket来实现的 废话少说直接上代码! 代码: client部分: # -*- coding: UTF-8 -*- import socketimport sysimport reimport os class Client: def __init__(self, serverIp, serverPort): self.serverIp = serverIp # 待连接的远程主机的域名 self.serverPort = serverPort s…
原文:https://www.iteye.com/news/32680 译者注:即使对于专业程序员来说,构造一个编译器也是颇具挑战性的任务,本文将会引导你抽丝剥茧,一探究竟! 我已经写了几篇与编程语言开发相关的文章,这让我非常兴奋!例如,在“关于 Angular 2 和 TypeScript 项目中的静态代码分析”[1]中,我研究了编译器前端的基本知识,解释了词法分析.语法分析和抽象语法树等各个阶段. 最近我发表了“开发静态类型编程语言[2] ”.本文展示了一个简单的.静态类型的函数式编程语言,…
简单记录,Java 核心技术卷I 基础知识(原书第10 版) 一个简单的Java应用程序"Hello, World!" Hello, World! Goodbye,World! 一个最简单的Java应用程序,Hello,Java public class FirstSample { public static void main(String[] args) { System.out.println("We will not use 'Hello, World! '"…
背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务器来说很好. 为了系统的可用性,需要做灾备,那么就要多准备一套系统环境,这时就会有一些共享资源的问题,比如Tomcat的session共享出来 几个系统会公用一套缓存数据,这样就变成一个共享池 需求的增长也就带来了系统的变化,也正为这种变化我开始思考怎么让这些代码兼容,并为以后的系统模块提供比较统一…
推送系统 说是推送系统有点大,其实就是一个消息广播功能吧.作用其实也就是由服务端接收到消息然后推送到订阅的客户端. 思路 对于推送最关键的是服务端向客户端发送数据,客户端向服务端订阅自己想要的消息.这样的好处就是有消息后才向客户端推送,相比于拉取数据不会产生许多无效的查询,实时性也高. xmpp这种即时通信协议基于TCP长连接还是比较符合这种场景的.只需要在服务端增加一个模块用于接收用户订阅与数据的推送就完成了主体功能. 在xmpp协议里可以扩展组件,这样我们写一个组件,然后连接到xmpp服务器…
前言: 朋友们都期待我稳定地工作,但创业公司若要躺下,也非意念可控. 若人生注定了风雨飘摇,那就雨中前行了. 最机开始看聊新的工作机会,欢迎推荐,创业公司也可! 同时,趁着自由时间,抓紧把这系列教程给写完了. 谢谢大伙的关注和支持. 步骤1:准备好数据库和表(或视图) 由于框架支持跨数据库,所以可以先不用管系统权限的那个数据库,先随意找个数据库. 当然你也可以找个视图(只是视图就不能编辑或删除[权限控制]) 步骤2:配置数据库链接: 以数据库名+Conn 为name(这是跨库的约定,不要乱取).…
57节介绍了字节流, 58节介绍了字符流,它们都是以流的方式读写文件,流的方式有几个限制: 要么读,要么写,不能同时读和写 不能随机读写,只能从头读到尾,且不能重复读,虽然通过缓冲可以实现部分重读,但是有限制 Java中还有一个类RandomAccessFile,它没有这两个限制,既可以读,也可以写,还可以随机读写,它是一个更接近于操作系统API的封装类. 本节,我们介绍就来介绍这个类,同时,我们介绍它的一个应用,实现一个简单的键值对数据库,怎么实现数据库呢?我们先来看RandomAccessF…
原文:How to make a simple HTML5 Canvas game 想要快速上手HTML5 Canvas小游戏开发?下面通过一个例子来进行手把手教学.(如果你怀疑我的资历, A Wizard's Lizard这个游戏的半数以上开发是由我完成的) 我们直接来看源码里的game.js,当然你也可以在线体验一下游戏先. 游戏截图 创建画布 // Create the canvas var canvas = document.createElement("canvas"); v…
CSharpGL(24)用ComputeShader实现一个简单的图像边缘检测功能 效果图 这是红宝书里的例子,在这个例子中,下述功能全部登场,因此这个例子可作为使用Compute Shader的典型示例. ★用imageLoad从纹理中读取数据.★ ★用imageStore将数据写入纹理.★ ★用vertex/fragment shader显示出compute shader的计算结果.★ 下面是3个测试用例. 下载 CSharpGL已在GitHub开源,欢迎对OpenGL有兴趣的同学加入(ht…
CSharpGL(23)用ComputeShader实现一个简单的ParticleSimulator 我还没有用过Compute Shader,所以现在把红宝书里的例子拿来了,加入CSharpGL中. 效果图 如下图所示. 或者看视频演示. 下面是红宝书原版的代码效果. 下载 CSharpGL已在GitHub开源,欢迎对OpenGL有兴趣的同学加入(https://github.com/bitzhuwei/CSharpGL) Compute Shader Compute Shader的运行与Ve…
小喵的唠叨话:最近很久没写博客了,一是因为之前写的LSoftmax后馈一直没有成功,所以在等作者的源码.二是最近没什么想写的东西.前两天,在预处理图片的时候,发现处理200w张图片,跑了一晚上也才处理完一半.早上的时候,出于无奈,花半小时改写了一个简单调用OpenMP的处理程序,用了30个核心,然后一小时不到就处理完了.感慨在多核的时代,即使是简单的程序,如果能支持多核,应该都能节省不少时间. 本文系原创,转载请注明出处~ 小喵的博客:http://www.miaoerduo.com 博客原文:…
最近在读<php核心技术与最佳实践>这本书,书中第一章提到用__call()方法可以实现一个简单的字符串链式操作,比如,下面这个过滤字符串然后再求长度的操作,一般要这么写: strlen(trim($str)); 那么能否实现下面这种写法呢? $str->trim()->strlen(); 下面就来试下. 链式操作,说白了其实就是链式的调用对象的方法.既然要实现字符串的链式操作,那么就要实现一个字符串类,然后对这个类的对象进行调用操作.我对字符串类的期望如下:(1)当我创建对象时,…
绕了一大圈,又开始接触winform的项目来了,虽然很小吧.写一个winform的异步调用webservice的demo,还是简单的. 一个简单的Webservice的demo,简单模拟服务 一个简单的Webservice的demo(中)_前端页面调用 当winform同步调用服务时,由于调用服务不能像C/S那样快,winform的UI进程一直在等待服务的返回结果,就无法响应用户事件.为了解决这种问题,我们用异步调用. 首先,先准备一个模拟用的webservice,如下: using Syste…
在这个随笔中,我们要为iPhone实现一个简单的画板App. 首先需要指出的是,这个demo中使用QuarzCore进行绘画,而不是OpenGL.这两个都可以实现类似的功能,区别是OpenGL更快,但是QuarzCore更简单.   第一步,新建Xcode项目,项目名称就叫SimplePaint. 第二步,添加QuarzCore.framework到项目中.     第三步,创建一个新类,类名叫Line.它代表在iPhone的屏幕上绘画时候的线.因为不管是画一条直线还是一条曲线,都可以看做是多条…
目录 1 问题描述  2 解决方案  2.1  实现功能  2.2  最终运行效果图  2.3  系统功能框架示意图  2.4  有关MongoDB简介及系统环境配置  2.5  核心功能代码讲解  2.6  具体编码  2.6.1用户登录和记住密码 2.6.2用户注册 2.6.3查看商品 2.6.4购买商品 2.6.5购物车   1 问题描述 利用JSP编程技术实现一个简单的购物车程序,具体要求如下. (1)用JSP编写一个登录页面,登录信息中有用户名和密码,分别用两个按钮来提交和重置登录信息…