История изменений
Исправление monk, (текущая версия) :
Хмм, а там можно как в ракете, написать функцию, которая генерит АСТ в рантайме, а потом уже вызвать ее в макросе?
Разумеется.
proc gen(e: stmt) : stmt =
# здесь генерим АСТ из e
...
...
macro play(e: stmt) =
result = gen(e)
Если потом надо выкинуть функцию из скомпилированного кода (оставить только на время компиляции), то http://nim-lang.org/docs/manual.html#pragmas-compiletime-pragma
И как там с хранением строки исходника в АСТ
Судя по документации, никак.
Исходная версия monk, :
Хмм, а там можно как в ракете, написать функцию, которая генерит АСТ в рантайме, а потом уже вызвать ее в макросе?
Разумеется.
proc gen(e: stmt) : stmt =
# здесь генерим АСТ из e
...
...
macros play(e: stmt) =
result = gen(e)
Если потом надо выкинуть функцию из скомпилированного кода (оставить только на время компиляции), то http://nim-lang.org/docs/manual.html#pragmas-compiletime-pragma
И как там с хранением строки исходника в АСТ
Судя по документации, никак.