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