Как добавить "прекомпеляцию" luajit кода

Рейтинг: 0Ответов: 0Опубликовано: 05.05.2023

Хотелось бы спросить, а как реализовать аналог define из языков Си на luajit? Версия luajit 3beta-2.10 или новее, без разницы. Алгоритм примерно такой:

  1. Файл загружается в формате текста (вроде бы так сначала и происходит в luajit)
  2. Исходный код файла загружается в память для более точной ловли ошибки с помощью stack trace
  3. Все дефайны заменяются на их значения в коде, меняется сам текст кода.
  4. Дальше 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

Вообще можно ли это как-то костыльно сделать?

Ответы

Ответов пока нет.