2013-03-26 91 views
1

http://luaj.org/luaj/README.htmlJava方法編譯Lua代碼與LuaJ解釋

我使用Luaj運行在Java應用程序Lua代碼。我得到一些非常慢的結果,所以我想在運行它之前編譯代碼來計算Lua腳本的實際處理時間。

問題是 - Luaj確實展示了一個例子,說明如何通過命令提示符將Lua源碼編譯爲Lua或Java字節碼,但是它沒有顯示用於編譯Lua腳本和Java應用程序的行。

那隻能說明如何編譯和運行Lua中:

import org.luaj.vm2.*; 
import org.luaj.vm2.lib.jse.*; 

String script = "examples/lua/hello.lua"; 
LuaValue _G = JsePlatform.standardGlobals(); 
_G.get("dofile").call(LuaValue.valueOf(script)); 

我想找到的代碼,只會編譯的Lua到Lua或Java字節碼,並將輸出字節碼文件。

回答

1

LuaJ包含一個Lua到字節碼編譯器。所以你可以看看源代碼。我在這裏提取了最相關的部分。

private void processScript(InputStream script, String chunkname, OutputStream out) throws IOException { 
    try { 
     // create the chunk 
     Prototype chunk = LuaC.instance.compile(script, chunkname); 

     // list the chunk 
     if (list) 
      Print.printCode(chunk); 

     // write out the chunk 
     if (!parseonly) { 
      DumpState.dump(chunk, out, stripdebug, numberformat, littleendian); 
     } 

    } catch (Exception e) { 
     e.printStackTrace(System.err); 
    } finally { 
     script.close(); 
    } 
} 

請記住,你真的只能靠字節碼是和Lua的產生它的實現兼容。