Lua指令碼語言參考二

2021-06-16 08:27:21 字數 2254 閱讀 9079

2 -語言

這一節從詞法、語法、句法上描述 lua 。換句話說,這一節描述了哪些 token (符記)是有效的,它們如何被組合起來,這些組合方式有什麼含義。

關於語言的構成概念將用常見的擴充套件 bnf 表示式寫出。也就是這個樣子: 意思是 0 或多個 a , [a] 意思是乙個可選的a 。非最終的符號會保留原來的樣子,關鍵字則看起來像這樣kword,其它最終的符號則寫成 `=´ 。完整的 lua 語法可以在本手冊最後找到。

2.1 -詞法約定

lua 中用到的 名字(也稱作 識別符號)可以是任何非數字開頭的字母、數字、下劃線組成的字串。這符合幾乎所有程式語言中關於名字的定義。(字母的定義依賴於當前環境:系統環境中定義的字母表中的字母都可以被用於識別符號。)識別符號用來命名變數,或作為表的網域名稱。

下面的關鍵字是保留的,不能用作名字:

and       break    do        else      elseif

end       false    for       function  if

in        local     nil      not       or

repeat    return   then      true      until    while

lua 是乙個大小寫敏感的語言: and 是乙個保留字,但是 and 和 and 則是兩個不同的合法的名字。一般約定,以下劃線開頭連線一串大寫字母的名字(比如 _version)被保留用於 lua 內部全域性變數。

下面這些是其它的 token :

+     -    *     /     %    ^     #

==    ~=   <=    >=    <    >     =

(     )         [    ]

;     :    ,     .     ..   ...

字串既可以用一對單引號引起,也可以是雙引號,裡面還可以包含類似 c 的轉義符: '\a' (響鈴),'\b' (退格), '\f' (表單), '\n' (換行), '\r' (回車), '\t' (橫向製表), '\v' (縱向製表), '\\' (反斜槓), '\"' (雙引號),以及 '\'' (單引號)。而且,如果在乙個反斜槓後跟了乙個真正的換行符,其結果就是在字串中產生乙個換行符。我們還可以用反斜槓加數字的形式 \ddd 來描述乙個字元。這裡,ddd 是一串最多三位的十進位制數字。(注意,如果需要在這種描述方法後接乙個是數字的字元,那麼反斜槓後必須寫滿三個數字。)lua 中的字串可以包含任何 8 位的值。包括用 '\0' 表示的零。

只有在你需要把不同的引號、換行、反斜槓、或是零結束符這些字元置入字串時,你才必須使用轉義符。別的任何字元都可以直接寫在文字裡。(一些控制符可以會影響檔案系統造成某些問題,但是不會引起 lua 的任何問題。)

字串還可以用一種長括號括起來的方式定義。我們把兩個正的方括號間插入 n 個等號定義為第 n 級正長括號。就是說,0 級正的長括號寫作 [[ ,一級正的長括號寫作 [=[ ,如此等等。反的長擴充套件也作類似定義;舉個例子,4 級反的長括號寫作 ]====] 。乙個長字串可以由任何一級的正的長括號開始,而由第乙個碰到的同級反的長括號結束。整個詞法分析過程將不受分行限制,不處理任何轉意符,並且忽略掉任何不同級別的長括號。這種方式描述的字串可以包含任何東西,當然特定級別的反長括號除外。

另乙個約定是,當正的長括號後面立即跟了乙個換行符,這個換行符就不包含在這個字串內。舉個例子,假設乙個系統使用 ascii 碼(這時,'a' 編碼為97 ,換行符編碼為 10 ,'1' 編碼為 49 ),下面五種方式描述了完全相同的字串:

a = 'alo\n123"'

a = "alo\n123\""

a = '\97lo\10\04923"'

a = [[alo

123"]]

a = [==[

alo123"]==]

數字常量可以分兩部分寫,十進位制底數部分和十進位制的指數部分。指數部分是可選的。 lua 也支援十六進製制整數常量,只需要在前面加上字首 0x 。下面是一些合法的數字常量的例子:

3   3.0  3.1416   314.16e-2   0.31416e1  0xff   0x56

注釋可以在除字串內的任何地方是以兩橫 (--) 開始。如果跟在兩橫後面的不是乙個長括號,這就是乙個短注釋,它的作用範圍直到行末;否則就是乙個長注釋,其作用範圍直到遇到反的長括號。長注釋通常被用來臨時遮蔽**塊。

LUA指令碼語言入門

使用例程 1.函式的使用 以下程式演示了如何在lua中使用函式,及區域性變數 例e02.lua functions function pythagorean a,b local c2 a 2 b 2 return sqrt c2 end print pythagorean 3,4 執行結果 5程式說...

五 Lua指令碼語言入門

恢復內容開始 寫完這篇lua指令碼語言入門,自己就要嘗試去用lua指令碼語言寫esp8266了,自己現在挺心急的,因為朋友使用esp8266本來說自己幫忙寫好程式的,但是用的微控制器不一樣自己沒有,沒有辦法測試,用at指令就顯得不方便,還要根據微控制器改程式,而且自己以前用感覺at指令發資訊那塊,麻...

Lua指令碼語言應用場景

lua 是一種輕量小巧的指令碼語言,用標準c語言編寫並以源 形式開放,其設計目的是為了嵌入應用程式中,從而為應用程式提供靈活的擴充套件和定製功能。lua 是巴西里約熱內盧天主教大學 pontifical catholic university of rio de janeiro 裡的乙個研究小組於 ...