lua5.1參考手冊(cè)是攻城獅們?cè)谑褂胠ua5.1開發(fā)的時(shí)候需要查詢語法函數(shù)接口等的一個(gè)chm文檔,Lua 是一個(gè)擴(kuò)展式程序設(shè)計(jì)語言,其設(shè)計(jì)目的是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴(kuò)展和定制功能。Lua由標(biāo)準(zhǔn)C編寫而成,幾乎在所有操作系統(tǒng)和平臺(tái)上都可以編譯,運(yùn)行。Lua并沒有提供強(qiáng)大的庫,這是由它的定位決定的。所以Lua不適合作為開發(fā)獨(dú)立應(yīng)用程序的語言。Lua 有一個(gè)同時(shí)進(jìn)行的JIT項(xiàng)目,提供在特定平臺(tái)上的即時(shí)編譯功能。
它被設(shè)計(jì)成支持通用的過程式編程,并有相關(guān)數(shù)據(jù)描述的設(shè)施。 Lua 也能對(duì)面向?qū)ο缶幊,函?shù)式編程,數(shù)據(jù)驅(qū)動(dòng)式編程提供很好的支持。它可以作為一個(gè)強(qiáng)大、輕量的腳本語言,供任何需要的程序使用。 Lua 以一個(gè)用 clean C 寫成的庫形式提供。(所謂 Clean C ,指的 ANSI C 和 C++ 中共通的一個(gè)子集)
作為一個(gè)擴(kuò)展式語言,Lua 沒有 "main" 程序的概念:它只能 嵌入 一個(gè)宿主程序中工作,這個(gè)宿主程序被稱作 embedding program 或簡稱為 host 。宿主程序可以通過調(diào)用函數(shù)執(zhí)行一小段 Lua 代碼,可以讀寫 Lua 變量,可以注入 C 函數(shù)讓 Lua 代碼調(diào)用。這些擴(kuò)展的 C 函數(shù),可以大大的擴(kuò)展了 Lua 可以處理事務(wù)的領(lǐng)域,這樣就可以訂制出各種語言,而它們共享一個(gè)統(tǒng)一的句法格式的框架。 Lua 的官方發(fā)布版就包含了一個(gè)叫做 lua 的簡單的宿主程序,它用 Lua 庫提供了一個(gè)保證獨(dú)立的 Lua 解釋器。
跟其它的許多參考手冊(cè)一樣,這份文檔有些地方比較枯燥。關(guān)于 Lua 的設(shè)計(jì)想法的探討,可以看看 Lua 網(wǎng)站上提供的技術(shù)論文。有關(guān)用 Lua編程的細(xì)節(jié)介紹,可以讀一下 Roberto 的書,Programming in Lua (Second Edition) 。
語言
這一節(jié)從詞法、語法、句法上描述 Lua 。換句話說,這一節(jié)描述了哪些 token (符記)是有效的,它們?nèi)绾伪唤M合起來,這些組合方式有什么含義。
關(guān)于語言的構(gòu)成概念將用常見的擴(kuò)展 BNF 表達(dá)式寫出。也就是這個(gè)樣子: {a} 意思是 0 或多個(gè) a , [a] 意思是一個(gè)可選的 a 。非最終的符號(hào)會(huì)保留原來的樣子,關(guān)鍵字則看起來像這樣kword,其它最終的符號(hào)則寫成 `=′ 。完整的 Lua 語法可以在本手冊(cè)最后找到。
2.1 - 語法約定
2.2 - 值與類型
2.3 - 變量
2.4 - 語句
2.5 - 表達(dá)式
2.6 - 可視規(guī)則
2.7 - 錯(cuò)誤處理
2.8 - 元表
2.9 - 環(huán)境
2.10 - 垃圾收集
2.11 - 協(xié)同
3 - 程序接口(API)
3.1 - The Stack
3.2 - Stack Size
3.3 - Pseudo-Indices
3.4 - C Closures
3.5 - Registry
3.6 - Error Handling in
3.7 - Functions and Type
3.8 - The Debug Interfac
4 - The Auxiliary Library
5 - Standard Libraries
6 - Lua Stand-alone
7 - Incompatibilities with t
8 - The Complete Syntax of L
Lua5.2和5.1有哪些不同?
Lua 5.1 是個(gè)非常經(jīng)典,歷史非常悠久,非常穩(wěn)定的版本,已經(jīng)持續(xù)了很多年,5.1 與 5.2 是完全不兼容的,相關(guān)的第三方庫必須重新為 5.2 適配。所以目前繼續(xù)使用 5.1 可能是更好的選擇。
一個(gè)重要的參考因素是:LuaJIT 是按照 5.1 的語法設(shè)計(jì)的,并且在可以預(yù)期的將來也永遠(yuǎn)不會(huì)適配 5.2,LuaJIT 作者聲稱會(huì)增加 5.2 所增加的那些功能,但永遠(yuǎn)不會(huì)適配 5.2 的語法,換句話說,他的發(fā)展思路是語法與兼容性不變,僅僅在 5.1 的語法基礎(chǔ)之上增加后續(xù) Lua 版本的新特性,LuaJIT 在 API/ABI 方面都只兼容 Lua 5.1.4。