手冊第六章

lua-users home
Wiki

6. Lua 詮譯器

儘管 Lua 是設計為內嵌在以 C 編寫的主程式中,也就是,它是延伸性語言;但它也可用於撰寫程式。標準配發包含一個稱為 lua 的 Lua 詮譯器,它擁有包括「偵錯」在內的所有標準函式庫。

其使用方式如下

    lua [opciones] [archivo] [argumentos]

選項為

詮釋完選項後,lua 執行指定的「指令碼」,並將參數傳遞給它作為字串。未帶參數呼叫時,lua 的行為會視 stdin 是否為「終端機」而有所不同,若為「終端機」,則行為如同 lua -v -i,否則行為如同 lua -

在執行任何參數之前,詮譯器會查詢環境變數 LUA_INIT。如果格式為 @檔案,則執行該檔案;否則直接執行內容。

除了 -i 以外,選項的詮釋順序與列出順序相同。例如,呼叫

    $ lua -e'a=1' -e 'print(a)' script.lua
會將 1 指定給 a,接著印出 a 的值(也就是 1),最後執行檔案 script.lua,但不帶參數。(這裡的 $ 是「殼層提示符號」。您使用的可能有所不同。)

在開始執行「指令碼」之前,lua 會收集所有命令列參數,並將它們放到稱為 arg 的全域性表格中。檔案名稱置於索引 0,檔案後的第 1 個參數置於索引 1,以此類推。檔案名稱之前的參數(即詮譯器名稱與選項)則置於負索引中。例如,在呼叫

    $ lua -la b.lua t1 t2
中,詮譯器會先使用檔案 a.lua,然後建立表格
    arg = { [-2] = "lua", [-1] = "-la",
            [0] = "b.lua",
            [1] = "t1", [2] = "t2" }
最後再執行檔案 b.lua。「指令碼」使用 arg[1], arg[2], … 作為參數進行呼叫;另外也可以使用變數參數表示式「...」來存取參數。

在互動模式中,如果您輸入不完整的行,詮譯器會在提示符號變更後等待您完成。P>

當全域性變數 _PROMPT 是字串時,會將它用作「提示符號」。此外,當全域性變數 _PROMPT2 是字串時,會將它用作次要「提示符號」(用於不完整的行)。因此,您可以在命令列中變更兩者,例如

    $ lua -e"_PROMPT='myprompt> '" -i
(外層 "" 用於「殼層」;內層 '' 用於 lua。)請注意使用 -i 來進入互動模式;否則,程式會在指定 _PROMPT 後立即結束,不作任何提示。Lua 程式也能透過指定 _PROMPT 變數的值來執行相同的動作。

要使 Lua 可在 Unix 系統中作為「指令碼」的直譯器,若「區段」的第一行以 # 開頭的話,直譯器將會略過該行。如此一來,Lua 的指令碼便能使用 chmod +x 轉換成可執行程式,並將「shebang」形式 #! 放置於第一行。

    #!/usr/local/bin/lua
當然,在您的機器上,Lua 直譯器的位址可能會有所不同。如果 lua 存在於您的 PATH 中,一個更動態的解決方案會是
    #!/usr/bin/env lua

RecentChanges · preferences
edit · history
最後編輯時間為 2007 年 2 月 23 日晚上 7:35 (GMT) (diff)