Edit
Luaとは

ver 5.1 からGCがインクリメンタルGCに変更された。

Edit
IDEへのインストール

Lua Development Tools という Lua の eclipse プラグインがあるため、開発にはこれが利用できる。

<Eclipse へのインストール時のアドレス>
URL : http://download.eclipse.org/koneki/releases/stable

Edit
コンパイル

# gcc test.c -l lua -l dl -l m

Edit
文法

Edit
print文

fmt = "key=%s,value=%s"
print(fmt:format("kagi","800"))
print(string.format("name=%s", "taro"))

Edit
C言語の連携

LUA側のグローバル変数を通じてデータのやりとりを行う。 <C側でLUA内のグローバル変数を取得>

lua_State* L = luaL_newstate();
lua_getglobal(L, "NAME");                 // NAMEというグローバル変数名の値を、スタックにコピー。
lua_getglobal(L, "SIZE");
printf("NAME : %s\n", lua_tostring(L, -2));                // スタックから値を取り出し。
printf("SIZE : %d\n", lua_tointeger(L, -1));

Edit
C言語からLUA関数の呼び出し。

lua_State* L = luaL_newstate();
lua_getglobal(L, "show");                   // 関数名をスタックに設定
lua_pcall(L, 0, 0, 0);                          // 関数の呼び出し

Edit
LUAからC言語の関数を呼び出す。

<LUA側>

result = add(x, y)

<C言語>

int l_add(lua_State* L)
{
   int x = luaL_checkint(L, -2);    // 第1引数 intとして取得
   int y = luaL_checkint(L, -1);    // 第2引数
   int result = x + y;
   lua_pushnumber(L, result);     //戻り値をスタックに積む
   return 1;                                //戻り値の数を指定
}

Edit
Luaの基本的概念

Luaは基本的に、プロトタイプ型オブジェクト指向といわれる言語であり、いわゆるJavaなどのクラス型とは違う。そのため、他のファイルなどを読み込んで実行させる場合などは、注意が必要になる。

<例>

require("test")

この場合、test.lua というファイルを読み込み、その時点で実行する。注意するべきは、実行後 test.lua は終了してしまうため、通常は以下のような使い方が多い。

local test = require("test")

また自分のオブジェクトに新しい関数を追加するような場合には、下記のような使い方もする。

require("test").extend(self)

特に注意するべきは、この読み込むファイル内での local 定義は、このファイル内でのみアクセスできるスコープ範囲となっており、読み込み元からこれらの変数にアクセスできない。そのため、読み込むファイル内に変数を操作するための setter getter を作っておくと良い。

Edit
LUAインタプリタのインストール

# wget http://www.lua.org/ftp/lua-5.2.3.tar.gz
# tar zxvf lua-5.2.3.tar.gz
# cd lua-5.2.3
# make linux
# make install

Edit
JSONの導入

# wget http://www.kyne.com.au/~mark/software/download/lua-cjson-2.1.0.tar.gz
# tar xzf lua-cjson-2.1.0.tar.gz
# cd cjson-2.1.0
# make install LUA_INCLUDE_DIR=/usr/local/include/luajit-2.0

Edit
LuaRocksの導入(Lua 5.1のみに対応、5.3には未対応の様子)

Edit
インストール

# wget http://luarocks.org/releases/luarocks-2.1.2.tar.gz
# tar zxvf luarocks-2.1.2.tar.gz
# cd luarocks-2.1.2
# ./configure
# make
# make install

※但しLUAをソースから入れていないと、lua.h が見つからないとエラーがでるので、yum 経由でのインストールの場合は、lua-devel も一緒に入れることをわすれないこと。

Edit
インストールされた場所

ここには、LuaRocksの config ファイルが置かれる。

/usr/local/etc/luarocks/

ここには、LuaRocksのプログラム一式が置かれる。

/usr/local/share/lua/5.1/luarocks/                                  << 但しこれは、LUA 5.1 の場合。

Edit
利用方法