freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

lua50參考手冊(cè)(已修改)

2025-06-17 19:11 本頁(yè)面
 

【正文】 Lua 參考手冊(cè)1 緒論Lua是一種為支持有數(shù)據(jù)描述機(jī)制的一般過(guò)程式編程語(yǔ)言而設(shè)計(jì)的擴(kuò)展編程語(yǔ)言。它同樣可以對(duì)面向?qū)ο笳Z(yǔ)言、函數(shù)式程序設(shè)計(jì)(Functional Programming,如Lisp)以及數(shù)據(jù)驅(qū)動(dòng)編程(datadriven programming)提供很好的支持。它的目標(biāo)是被用作一種強(qiáng)大的、輕型的配置語(yǔ)言。Lua目前已經(jīng)被實(shí)現(xiàn)為一個(gè)擴(kuò)展庫(kù),是用clean C (ANSI C/C++的一個(gè)通用子集)編寫(xiě)的。 作為一個(gè)擴(kuò)展語(yǔ)言,Lua沒(méi)有Main函數(shù)的概念:它僅僅是嵌入一個(gè)宿主程序進(jìn)行工作,可以稱之為 嵌入式編程 或者簡(jiǎn)單的說(shuō)是 宿主編程。這個(gè)宿主程序可以調(diào)用函數(shù)來(lái)執(zhí)行Lua的代碼片斷,可以設(shè)置和讀取Lua的變量,可以注冊(cè)C函數(shù)讓Lua代碼調(diào)用。Lua的能力可以擴(kuò)展到更大范圍,在不同的領(lǐng)域內(nèi),這樣就在同樣的語(yǔ)法框架下創(chuàng)建了你自定義的編程語(yǔ)言。 Lua的發(fā)行版包括一個(gè)獨(dú)立的嵌入式程序,lua,他使用Lua的擴(kuò)展庫(kù)來(lái)提供一個(gè)完全的Lua解釋器。 Lua是自由軟件,通常不提供任何擔(dān)保,如它的版權(quán)說(shuō)明中敘述的那樣。 手冊(cè)中描述的實(shí)現(xiàn)在Lua的官方網(wǎng)站可以找到。 如果需要知道Lua設(shè)計(jì)背?蟮囊恍┚齠234。吞致郟梢圓慰家韻侶畚?,它们都可以在Lua的網(wǎng)站上找到。 R.Ierusalimschy, L.H.de Figueiredo, and W.Celes. Luaan extensible extension language. Software: Practice amp。 Experience 26 6 (1996) 635652. L.H.de Figueiredo, R.Ierusalimschy, and W.Celes. The design and implementation of a language for extending applications. Proceedings of XXI Brazilian Seminar on Software and Hardware (1994) 273283. L.H.de Figueiredo, R.Ierusalimschy, and W.Celes. Lua: an extensible embedded language. Dr. Dobb39。s Journal 21 12 (Dec 1996) 2633. R.Ierusalimschy, L.H.de Figueiredo, and W.Celes. The evolution of an extension language: a history of Lua, Proceedings of V Brazilian Symposium on Programming Languages (2001) B14B28. Lua在葡萄牙語(yǔ)中的意思是“月亮”,發(fā)音是 LOOah。 2 語(yǔ)言這一章將描述Lua的詞法、語(yǔ)法和語(yǔ)義結(jié)構(gòu)。換句話說(shuō),這一章會(huì)講什么標(biāo)記是合法的,他們是如何組合的,以及他們的組合是什么含義。 語(yǔ)言結(jié)構(gòu)會(huì)使用常用的擴(kuò)展BNF范式來(lái)解釋,如{a}表示0或多個(gè)a, [a]表示a是可選的(0個(gè)或1個(gè))。非終端字體(不能顯示的)用 斜體表示,關(guān)鍵字是粗體,其他終端符號(hào)用typewriter(等寬)字體,并用單引號(hào)引出。 詞法約定Lua中的標(biāo)識(shí)符(Identifiers)可以是任意的數(shù)字、字符和下劃線“_”,但不能以數(shù)字開(kāi)頭。這條規(guī)則符合大多數(shù)編程語(yǔ)言中的標(biāo)識(shí)符的定義。(字符的具體定義要根據(jù)系統(tǒng)的地區(qū)設(shè)置:任何區(qū)域設(shè)置可以認(rèn)同的字母表中的字母都可以用在標(biāo)識(shí)符中。) 下面的關(guān)鍵字(keywords)為保留關(guān)鍵字不可以作為標(biāo)識(shí)符出現(xiàn): and break do else elseif end false for function if in local nil not or repeat return then true until whileLua對(duì)大小寫(xiě)敏感:and是一個(gè)保留字,但是 And 和 AND 是兩個(gè)不一樣的、但都合法的標(biāo)識(shí)符。習(xí)慣上來(lái)說(shuō),以下劃線開(kāi)始且后面跟著大寫(xiě)字母的標(biāo)識(shí)符 (例如 _VERSION) 是為L(zhǎng)ua內(nèi)部變量所保留的。 下面的字符(串)是其他的一些標(biāo)記: + * / ^ = ~= = = == ( ) { } [ ] 。 : , . .. ...字符串(Literal strings) 以單引號(hào)或者雙引號(hào)定界,同時(shí)可以包含以下C語(yǔ)言風(fēng)格的轉(zhuǎn)義字符: \a 鈴聲(bell) \b 回退(backspace) \f form feed \n 新行(newline) \r 回車(carriage return) \t 水平制表符(horizontal tab) \v 垂直制表符(vertical tab) \\ 反斜杠(backslash) \ 雙引號(hào)(quotation mark) \39。 單引號(hào)(apostrophe) \[ 左方括號(hào)(left square bracket) \] 右方括號(hào)(right square bracket) 另外,一個(gè) `\newline180。 (一個(gè)反斜杠加上一個(gè)真正的換行符)會(huì)導(dǎo)致字符串內(nèi)的分行。字符串中的字符也可以使用轉(zhuǎn)義字符`\ddd180。通過(guò)數(shù)字值來(lái)指定。ddd 是最多為3個(gè)十進(jìn)制數(shù)字的序列。Lua中的字符串也可以包含8進(jìn)制數(shù)字,包括嵌入零,它可以表示為 `\0180。 字符串也可以用雙方括號(hào)來(lái)定界[[ ]]。這種括號(hào)方式的語(yǔ)法,字符串可以跨越多行,也可以包含嵌套的?輩換嶙迦魏渦蛄?。藩?jiǎng)閆鵂?,当开始? `[[180。 后面緊跟著一個(gè)換行符的話,這個(gè)換行符不會(huì)包括在字符串內(nèi)。舉個(gè)例子:在一個(gè)使用ASCII編碼(其中`a180。 的編碼是97,換行符是10,字符`1180。 是49)的系統(tǒng)中,以下四種格式得到的都是同一個(gè)字符串: (1) alo\n123\ (2) 39。\97lo\10\0492339。 (3) [[alo 123]] (4) [[ alo 123]]數(shù)值常量(Numerical constants) 可以有一個(gè)可選的底數(shù)部分和一個(gè)可選的指數(shù)部分。以下是有效的數(shù)值常量: 3 注釋(Comments) 可以在任何地方出現(xiàn),必須在最前面加上雙減號(hào) ()。如果緊接著 的文本不是 [[,那么會(huì)認(rèn)為是一個(gè) 短注釋(short ment), 這一行往后到行尾都是注釋。否則,會(huì)認(rèn)為是一個(gè) 常注釋(long ment),注釋直到相應(yīng)的 ]]結(jié)束。長(zhǎng)注釋可以跨越多行,同時(shí)可以包含嵌套的 [[ ]] 括號(hào)對(duì)。 為了方便起見(jiàn),文件的第一行如果是以開(kāi)始,這個(gè)機(jī)制允許Lua在Unix系統(tǒng)中用做一個(gè)腳本解釋器(見(jiàn) 6)。 值和類型Lua是一種 動(dòng)態(tài)類型語(yǔ)言(dynamically typed language)。這意味著變量是沒(méi)有類型的;只有值才有。語(yǔ)言中沒(méi)有類型定義。所有的值都包含他自身的類型。Lua中有八種基本類型:nil, boolean, number, string, function, userdata, thread 和 table。 Nil 空類型只對(duì)應(yīng) nil值,他的屬性和其他任何值都有區(qū)別;通常它代表沒(méi)有有效的值。 Boolean 布爾類型有兩種不同的值 false and true。在Lua中, nil and false 代表成假條件;其他任何值都代表成真條件。 Number 數(shù)字類型表示實(shí)數(shù)(雙精度浮點(diǎn)數(shù))。(構(gòu)建Lua解釋器時(shí)也可以很容易地用其他內(nèi)部的表示方式表示數(shù)字,如單精度浮點(diǎn)數(shù)或者長(zhǎng)整型)。 String 字符串類型表示一個(gè)字符的序列。Lua 字符串可以包含8位字符,包括嵌入的 (39。\039。) (見(jiàn) )。 函數(shù)是Lua中的 第一類值(firstclass values)。也就是說(shuō)函數(shù)可以保存在變量中,當(dāng)作參數(shù)傳遞給其他函數(shù),或者被當(dāng)作結(jié)果返回。Lua可以調(diào)用(和處理)Lua寫(xiě)的函數(shù)和C寫(xiě)的函數(shù) (見(jiàn) )。 用戶數(shù)據(jù)類型(userdata) 提供了讓任意C數(shù)據(jù)儲(chǔ)存在Lua變量中的功能。這種類型直接對(duì)應(yīng)著一塊內(nèi)存,Lua中也沒(méi)有任何預(yù)先定義的操作,除了賦值和一致性比較。然而,通過(guò)使用 元表(metatables),程序員可以定義處理userdata的操作。(見(jiàn) )。 Userdata 值不能在Lua中建立或者修改,只能通過(guò) CAPI。這保證了宿主程序的數(shù)據(jù)完整性。 線程(thread) 類型代表了相互獨(dú)立的執(zhí)行線程,用來(lái)實(shí)現(xiàn)同步程序。 表(table) 類型實(shí)現(xiàn)了聯(lián)合數(shù)組,也就是說(shuō),數(shù)組不僅可以使用數(shù)字,還能使用其他的值(除了 nil)。 而且,tables 可以是 互異的(heterogeneous),他們可以保存任何類型的值(除了 nil)。 Tables 是Lua中唯一的數(shù)據(jù)結(jié)構(gòu)機(jī)制;他們可以用來(lái)表示一般數(shù)組,特征表,集合,記錄,圖,樹(shù)等等。如果要表示記錄,Lua使用字段名作為索引。語(yǔ)言支持 這種比較優(yōu)美的表示方式,還有 a[name]。在Lua中有幾種建立表的簡(jiǎn)便方法 (見(jiàn) )。 就像索引一樣,表字段的值也可以是任何類型(除了 nil)。特別需要注意地是,由于函數(shù)是第一型的值,表字段也可以包含函數(shù)。這樣表也可以支持 方法(methods) (見(jiàn) )。 表,函數(shù),和用戶數(shù)據(jù)類型的值都是 對(duì)象(objects):變量不會(huì)包含他們的實(shí)際值,只是一個(gè)他們的引用(references)。 賦值,參數(shù)傳遞和函數(shù)返回只是操作這些值的引用,這些操作不會(huì)暗含任何拷貝。 庫(kù)函數(shù) type 返回一個(gè)字符串描述給出值所表示的類型 (見(jiàn) )。 類型轉(zhuǎn)換Lua提供運(yùn)行時(shí)的數(shù)字和字符串值得自動(dòng)轉(zhuǎn)換。任何對(duì)字符串的算術(shù)操作都會(huì)現(xiàn)嘗試?炎址懷墑鄭褂靡話愎嬖蜃?。反过来,祹呕个数譁烀灾B枰址牡胤絞?,数字会走h(yuǎn)懷勺址?,遵循一种簜b淼母袷?。染J付ㄊ等綰巫懷勺址?,菛V褂米址庵械? format 函數(shù)(見(jiàn) )。 變量變量是儲(chǔ)存值的地方。Lua中有三種不同的變量:全局變量,局部變量和表字段。 一個(gè)名稱可以表示全局變量或局部變量(或者一個(gè)函數(shù)的正式參數(shù),一種局部變量的特殊形式): var ::= NameLua假設(shè)變量是全局變量,除非明確地用local進(jìn)行聲明 (見(jiàn) )。局部變量有 詞義范圍(lexically scoped):局部變量可以被在它們范圍內(nèi)的函數(shù)自由訪問(wèn) (見(jiàn) )。 在變量第一次賦值之前,它的值是 nil。 方括號(hào)用于對(duì)表進(jìn)行檢索: var ::= prefixexp `[180。 exp `]180。第一個(gè)表達(dá)式 (prefixexp)結(jié)果必須是表;第二個(gè)表達(dá)式 (exp) 識(shí)別表中一個(gè)特定條目。給出表的表達(dá)式有一個(gè)限制語(yǔ)法;詳細(xì)見(jiàn) 。 語(yǔ)法是 var[NAME] 的較好形式: var ::= prefixexp `.180。 Name訪問(wèn)全局變量和表字段的實(shí)質(zhì)可以通過(guò)元表進(jìn)行改變。對(duì)索引變量 t[i] 的訪問(wèn)等同于調(diào)用 gettable_event(t,i)。(關(guān)于 gettable_event 的完整描述見(jiàn) 。這個(gè)函數(shù)并沒(méi)有在Lua中定義,也無(wú)法調(diào)用。我們?cè)谶@里僅僅用來(lái)解釋原理)。 所有的全局變量存在一個(gè)普通的Lua表中,稱之為 環(huán)境變量表(environment tables) 或簡(jiǎn)稱 環(huán)境(environments)。由C寫(xiě)的并導(dǎo)入到Lua中的函數(shù) (C 函數(shù)) 全部共享一個(gè)通用 全局環(huán)境(global environment)。Lua寫(xiě)的每個(gè)函數(shù) (a Lua 函數(shù)) 都有一個(gè)它自己的環(huán)境的引用,這樣這個(gè)函數(shù)中的所有的全局變量都會(huì)指向這個(gè)環(huán)境變量表。當(dāng)新創(chuàng)建一個(gè)函數(shù)時(shí),它會(huì)繼承創(chuàng)建它的函數(shù)的環(huán)境。要改變或者獲得Lua函數(shù)的環(huán)境表,可以調(diào)用 setfenv or getfenv (見(jiàn) )。 訪問(wèn)全局變量 x 等同于 ,又等同于 gettable_event(_env, x)_env 是運(yùn)行的函數(shù)的環(huán)境。(_env 變量并沒(méi)有在Lua中定義。我們這里僅僅用來(lái)解釋原理) 語(yǔ)句Lua支持一種很通俗的語(yǔ)句集,和Pascal或者C中的很相似。他包括賦值,控制結(jié)構(gòu),過(guò)程調(diào)用,表構(gòu)造和變量聲明。 語(yǔ)句段Lua執(zhí)行的最小單元稱之為一個(gè) 段(chunk)。一段語(yǔ)句就是簡(jiǎn)單的語(yǔ)句的序列,以順序執(zhí)行。每一個(gè)語(yǔ)句后面都可以加上一個(gè)分號(hào)(可選): chunk ::= {stat [`。180。]}Lua將語(yǔ)句段作為一個(gè)匿名函數(shù) (見(jiàn) ) 的本體進(jìn)行處理。這樣,語(yǔ)句段可以定義局部變量或者返回值。 一段語(yǔ)句可以儲(chǔ)存在文件內(nèi)或者宿主程序的一個(gè)字符串中。當(dāng)語(yǔ)句段被執(zhí)行時(shí),他首先被預(yù)編譯成虛擬機(jī)使用的字節(jié)碼,然后虛擬機(jī)用一個(gè)解釋器執(zhí)行被編譯的代碼。 語(yǔ)句段也可以被預(yù)編譯為二進(jìn)制代碼;詳情參看 luac 程序。源代碼和編譯形態(tài)可以互相轉(zhuǎn)換;Lua自動(dòng)監(jiān)測(cè)文件類型然
點(diǎn)擊復(fù)制文檔內(nèi)容
物理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1