Luaの構造を掴むためにヘッダファイルを眺めたりしたのでメモを残しておく。
Lua実装のヘッダファイル達
1
2
3
4
|
$ ls src/*.h
src/lapi.h src/lctype.h src/lfunc.h src/llimits.h src/lopcodes.h src/lstring.h src/lua.h src/lundump.h
src/lauxlib.h src/ldebug.h src/lgc.h src/lmem.h src/lparser.h src/ltable.h src/luaconf.h src/lvm.h
src/lcode.h src/ldo.h src/llex.h src/lobject.h src/lstate.h src/ltm.h src/lualib.h src/lzio.h
|
それぞれの内容
ヘッダファイル |
概要 |
lapi.h |
補助関数群 |
lauxlib.h |
補助関数(Luaライブラリビルド向け) |
lcode.h |
LuaVM オペコード生成 |
lctype.h |
Lua向けctype関数群(文字種判別とか) |
ldbebug.h |
きっとデバッグ向け |
ldo.h |
コールスタックの操作等 |
lfunc.h |
prototype, closureを操作する補助関数群 |
lgc.h |
きっとガベージコレクション |
llex.h |
字句解析器 |
llimits.h |
最大値,最大長など限界や範囲を定義している |
lmem.h |
メモリ管理インタフェース |
lobject.h |
Luaの型を定義している |
lopcodes.h |
Luaオペコードの定義とインタフェース |
lparser.h |
Lua構文解析器(LL1,手書き最適化) |
lstate.h |
LuaVMの状態管理用構造体の定義(CallInfo,global_State,struct lua_State,GCObject) |
lstring.h |
StringTable(Luaの文字列を全て格納管理する)の定義 |
ltable.h |
Tableオブジェクトの定義 |
ltm.h |
タグメソッド(メタメソッド)の定義 |
lua.h |
lua REPL |
luaconf.h |
lua コンパイル用の設定など? |
lualib.h |
Lua 標準ライブラリ |
lundump.h |
コンパイル前のLuaチャンク(コード片)の操作? |
lvm.h |
LuaVMの操作 |
lzio.h バッファ付きストリームのインタフェース |
|
ヘッダ無しのファイル
ファイル |
概要 |
luac.c |
Luaコンパイラ |
loadlib.c |
動的ライブラリのローダ |
今度REPL,CompilerからLuaVMがどう呼ばれて利用されているかまとめて見ようと思う。
またはLuaVMがスタック操作をどう行っているか?や動的ライブラリの読み込み部分のあたりかな。