Метод Java для компиляции кода Lua с помощью интерпретатора LuaJ

http://luaj.org/luaj/README.html

Я использую Luaj для запуска кода Lua в приложении Java. Я получаю очень медленные результаты, поэтому я хочу попробовать скомпилировать код перед его запуском, чтобы вычислить фактическое время обработки сценария 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 и выводит файл байт-кода.


person Laimonas Mileška    schedule 26.03.2013    source источник


Ответы (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, которая его создала.

person sylvanaar    schedule 26.03.2013