這些模塊實現實用功能:
- ldebug.c - 調試接口。包括訪問調試掛鉤的函數(lua_sethook,lua_gethook,lua_gethookcount),訪問運行時堆棧信息(lua_getstack / lua_getlocal / lua_setlocal),檢查字節碼(luaG_checkopenop / luaG_checkcode)和引發錯誤(luaG_typeerror / luaG_concaterror / luaG_aritherror / luaG_ordererror / luaG_errormsg / luaG_runerror)
- lzio.c - 通用緩沖輸入流接口。
- lmem.c - 與內存管理器的接口。這實現了luaM_realloc / luaM_growaux_,它包裝了內存分配功能。
- lgc.c - 增量垃圾收集器(內存管理)
這些模塊實現基本數據類型:
lstate.c - 全局狀態。包括打開和關閉Lua狀態(lua_newstate / lua_close)和線程(luaE_newthread / luaE_freethread)的函數。
lobject.c - Lua對象的一些通用函數。包括數據類型< - >字符串轉換,原始相等性測試(luaO_rawequalObj)和日志基礎2(luaO_log2)
lstring.c - 字符串表(保留Lua處理的所有字符串)
lfunc.c - 輔助功能來操縱原型和關閉
ltable.c - Lua表(哈希)這些模塊處理解析和代碼生成:
lcode.c - Lua的代碼生成器。由lparser.c使用
llex.c - 詞法分析器。由lparser.c使用。
lparser.c - Lua解析器。
lundump.c - 加載預編譯的Lua chunks。實現luaU_undump,它加載預編譯的塊。還提供了luaU_header(由luaU_undump內部使用)來解析函數頭。
ldump.c - 保存預編譯的Lua chunks。實現luaU_dump,它將一個函數對象作為預編譯的塊字符串轉儲。
這些模塊處理Lua字節碼的執行:
lopcodes.c - Lua虛擬機的操作碼。定義所有操作碼的名稱和信息(通過表luaP_opnames和luaP_opmodes)。
lvm.c - Lua虛擬機。執行字節碼(luaV_execute)。還暴露了lapi.c使用的一些功能(例如luaV_concat)。
ldo.c - Lua的堆棧和調用結構。處理函數調用(luaD_call / luaD_pcall),增加堆棧,協同處理,...
ltm.c - 標簽方法。實現從對象訪問元方法。
這些模塊實現標準庫:
lbaselib.c - (基本功能)
lstrlib.c - 字符串
ltablib.c - 表
lmathlib.c - 數學
loslib.c - os
liolib.c - io
loadlib.c - 包
ldblib.c - 調試
這些模塊定義了C API:
lapi.c - Lua API。實現大量的Lua C API(lua_ *函數)。
lauxlib.c - 定義了luaL_ *函數
linit.c - 實現luaL_openlibs從C加載上述模塊
這些模塊實現了lua和luac程序:
lua.c - Lua獨立翻譯
print.c - 定義“PrintFunction ”函數,它在函數中打印字節碼(由luac.c“-l”選項使用)
luac.c - Lua編譯器(將字節碼保存到文件;還列出字節碼)
守則公約
外部符號的前綴表示其來自的模塊:
luaA_ - lapi.c
luaB_ - lbaselib.c
luaC_ - lgc.c
luaD_ - ldo.c
luaE_ - lstate.c
luaF_ - lfunc.c
luaG_ - ldebug.c
luaH_ - ltable.c
luaI_ - lauxlib.c
luaK_ - lcode.c
luaL_ - lauxlib.c / h,linit.c(public functions)
luaM_ - lmem.c
luaO_ - lobject.c
luaP_ - lopcodes.c
luaS_ - lstring.c
luaT_ - ltm.c
luaU_ - lundump.c
luaV_ - lvm.c
luaX_ - llex.c
luaY_ - lparser.c
luaZ_ - lzio.c
lua_ - lapi.c / h + luaconf.h,debug.c
luai_ - luaconf.h
luaopen_ - luaconf.h +庫(lbaselib.c,ldblib.c,liolib.c,lmathlib.c,
loadlib.c,loslib.c,lstrlib.c,ltablib.c)
SRC / Makefile文件
在src / Makefile(5.1.1)中,mingw目標是不尋常的,因為它只構建lua(不是luac)。也可以添加mingw-cygwin目標。請參閱BuildingLua中的 mingw注釋來解決。
在SRC / luaconf.h(5.1.1),LUA_PATH_DEFAULT指的是LUA_LDIR和LUA_CDIR,但LUA_CPATH_DEFAULT僅指LUA_CDIR的這些。 RiciLake建議這可能是一個安全決策,其中C模塊需要比Lua模塊更多的信任。
SRC / luaconf.h
在src / luaconf.h(5.1.1)中,有一個LUA_CDIR"loadall.dll",在[3] [4]中討論。
src / lgc.h和lgc.c(垃圾收集器)
請參閱GarbageCollection和EmergencyGarbageCollector中的描述。
sec / ltable.h和ltable.c(tables)
SRC / lmathlib.c
這在BindingCodeToLua中有所描述。
注意:“#define lmathlib_c”(和其他庫中的類似行)只存在于luaconf.h中的條件(由lhf注釋)。