http://luaj.org/luaj/README.html
我正在使用Luaj在Java应用程序中运行Lua代码。我得到了一些非常缓慢的结果,所以我想在运行它之前尝试编译代码来计算Lua脚本的实际处理时间。
问题是 - Luaj确实展示了如何通过命令提示符将Lua源代码编译为Lua或Java字节码,但它没有向我展示使用Java应用程序编译Lua脚本的行。
它只显示如何编译和运行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字节码并输出字节码文件的代码。
答案 0 :(得分: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的Lua实现兼容的字节代码。