Как добавить "прекомпеляцию" luajit кода
Хотелось бы спросить, а как реализовать аналог define из языков Си на luajit? Версия luajit 3beta-2.10 или новее, без разницы. Алгоритм примерно такой:
- Файл загружается в формате текста (вроде бы так сначала и происходит в luajit)
- Исходный код файла загружается в память для более точной ловли ошибки с помощью stack trace
- Все дефайны заменяются на их значения в коде, меняется сам текст кода.
- Дальше luajit выполняет свои нужные преобразования.
Покажу на примере.
Исходный код:
--init.lua
$define MAX_IT 10
$define iterate(v,c,s) for it = v, c, s do
$define exit break
$define TEST
iterate(0,MAX_IT,1)
$ifdef TEST
if it % 4 == 0 then exit end
$endif
print("Number: "..it)
end
Преобразованный код (без define)
--init.lua
for it = 0, 10, 1 do
if it % 4 == 0 then break end
print("Number: "..it)
end
Вообще можно ли это как-то костыльно сделать?
Источник: Stack Overflow на русском