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

正文內(nèi)容

lua50參考手冊(已修改)

2025-06-17 19:11 本頁面
 

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