Luaとかいじってみる

Windowsから使いたかったんで、バイナリはLua@空想具現化プログラミングから頂いてきたもので。とりあえずインタプリタ兼対話環境、バイトコードコンパイラとかあります。

C:\hoge\docs\lua\hoge>lua
Lua 5.1.2  Copyright (C) 1994-2007 Lua.org, PUC-Rio
> print "Hello!"
Hello!

ほんでLuaの特徴の一つとしてC言語に組み込んで使うと便利、というのもあるらしい。
とりあえず最初に示したサイトのアーカイブ中のlibファイルとsrc以下のlua.h, luaconf.h, lualib.h, lauxlib.hをコード書くディレクトリにコピーしてきてテストする。

#include "lua.h"
#include "lualib.h"

int main(int argc, char **argv)
{
  lua_State *state = lua_open();

  luaopen_base(state);

  lua_pushstring(state, "print");
  lua_gettable(state, LUA_GLOBALSINDEX);
  lua_pushstring(state, "Hello World!");
  lua_call(state, 1, 0);

  lua_close(state);
  return 0;
}

Visual C++コンパイラコンパイルして実行。

C:\hoge\docs\lua\hoge>cl test.c LuaLib.lib
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

test.c
Microsoft (R) Incremental Linker Version 9.00.21022.08
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:test.exe
test.obj
LuaLib.lib

C:\hoge\docs\lua\hoge>test
Hello World!

できた。なんかまあこれだけだとputsしろよって話ですけど。ガベコレとか連想配列とかが普通にある言語なので、なんか楽になるような気もする。あとコルーチンとか嬉しいのかな。コルーチンてなんのことかよく知らんのだけど。
http://uri.sakura.ne.jp/~cosmic/yuno/lab/lua5_manual_ja.html#coroutine
ほう。

test